@scrypted/libav 1.0.179 → 1.0.181
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_openh264install/include/wels/codec_api.h +592 -0
- package/_openh264install/include/wels/codec_app_def.h +820 -0
- package/_openh264install/include/wels/codec_def.h +216 -0
- package/_openh264install/include/wels/codec_ver.h +15 -0
- package/_openh264install/lib/libopenh264.a +0 -0
- package/_openh264install/lib/pkgconfig/openh264.pc +10 -0
- package/binding.gyp +4 -0
- package/openh264/.reviewboardrc +3 -0
- package/openh264/.travis.yml +42 -0
- package/openh264/CODING_STYLE +8 -0
- package/openh264/CONTRIBUTORS +55 -0
- package/openh264/LICENSE +23 -0
- package/openh264/Makefile +408 -0
- package/openh264/README.md +197 -0
- package/openh264/RELEASES +467 -0
- package/openh264/SECURITY.md +16 -0
- package/openh264/autotest/codec_comparision/run_MultiCodecComparision.sh +431 -0
- package/openh264/autotest/performanceTest/android/run_AutoTest_android.sh +180 -0
- package/openh264/autotest/performanceTest/ios/fruitstrap +0 -0
- package/openh264/autotest/performanceTest/ios/iFileTransfer +0 -0
- package/openh264/autotest/performanceTest/ios/run_AutoTest_ios.sh +193 -0
- package/openh264/autotest/performanceTest/ios/uiascript.js +19 -0
- package/openh264/autotest/performanceTest/parsePerfData.sh +107 -0
- package/openh264/autotest/performanceTest/run_perfTest.sh +122 -0
- package/openh264/autotest/unitTest/android/run_AutoTest_android.sh +112 -0
- package/openh264/autotest/unitTest/ios/run_AutoTest_ios.sh +167 -0
- package/openh264/autotest/unitTest/run_ParseUTxml.sh +70 -0
- package/openh264/autotest/unitTest/run_unitTest.sh +98 -0
- package/openh264/build.gradle +30 -0
- package/openh264/code-coverage.sh +6 -0
- package/openh264/codec/api/meson.build +1 -0
- package/openh264/codec/api/wels/codec_api.h +592 -0
- package/openh264/codec/api/wels/codec_app_def.h +820 -0
- package/openh264/codec/api/wels/codec_def.h +216 -0
- package/openh264/codec/api/wels/codec_ver.h +15 -0
- package/openh264/codec/api/wels/meson.build +9 -0
- package/openh264/codec/common/arm/arm_arch_common_macro.S +83 -0
- package/openh264/codec/common/arm/copy_mb_neon.S +161 -0
- package/openh264/codec/common/arm/deblocking_neon.S +857 -0
- package/openh264/codec/common/arm/expand_picture_neon.S +154 -0
- package/openh264/codec/common/arm/intra_pred_common_neon.S +82 -0
- package/openh264/codec/common/arm/mc_neon.S +2283 -0
- package/openh264/codec/common/arm64/arm_aarch64_common.h +85 -0
- package/openh264/codec/common/arm64/arm_arch64_common_macro.S +79 -0
- package/openh264/codec/common/arm64/copy_mb_aarch64_neon.S +202 -0
- package/openh264/codec/common/arm64/deblocking_aarch64_neon.S +852 -0
- package/openh264/codec/common/arm64/expand_picture_aarch64_neon.S +150 -0
- package/openh264/codec/common/arm64/intra_pred_common_aarch64_neon.S +58 -0
- package/openh264/codec/common/arm64/mc_aarch64_neon.S +2614 -0
- package/openh264/codec/common/generate_version.sh +28 -0
- package/openh264/codec/common/inc/WelsList.h +287 -0
- package/openh264/codec/common/inc/WelsLock.h +97 -0
- package/openh264/codec/common/inc/WelsTask.h +75 -0
- package/openh264/codec/common/inc/WelsTaskThread.h +83 -0
- package/openh264/codec/common/inc/WelsThread.h +106 -0
- package/openh264/codec/common/inc/WelsThreadLib.h +151 -0
- package/openh264/codec/common/inc/WelsThreadPool.h +124 -0
- package/openh264/codec/common/inc/asmdefs_mmi.h +345 -0
- package/openh264/codec/common/inc/copy_mb.h +103 -0
- package/openh264/codec/common/inc/cpu.h +81 -0
- package/openh264/codec/common/inc/cpu_core.h +103 -0
- package/openh264/codec/common/inc/crt_util_safe_x.h +104 -0
- package/openh264/codec/common/inc/deblocking_common.h +124 -0
- package/openh264/codec/common/inc/expand_pic.h +107 -0
- package/openh264/codec/common/inc/golomb_common.h +166 -0
- package/openh264/codec/common/inc/intra_pred_common.h +86 -0
- package/openh264/codec/common/inc/loongson_intrinsics.h +1919 -0
- package/openh264/codec/common/inc/ls_defines.h +130 -0
- package/openh264/codec/common/inc/macros.h +329 -0
- package/openh264/codec/common/inc/mc.h +407 -0
- package/openh264/codec/common/inc/measure_time.h +88 -0
- package/openh264/codec/common/inc/memory_align.h +116 -0
- package/openh264/codec/common/inc/msa_macros.h +2393 -0
- package/openh264/codec/common/inc/sad_common.h +139 -0
- package/openh264/codec/common/inc/typedefs.h +86 -0
- package/openh264/codec/common/inc/utils.h +95 -0
- package/openh264/codec/common/inc/version.h +10 -0
- package/openh264/codec/common/inc/version_gen.h.template +6 -0
- package/openh264/codec/common/inc/welsCodecTrace.h +64 -0
- package/openh264/codec/common/inc/wels_common_defs.h +373 -0
- package/openh264/codec/common/inc/wels_const_common.h +63 -0
- package/openh264/codec/common/loongarch/copy_mb_lsx.c +194 -0
- package/openh264/codec/common/loongarch/deblock_lsx.c +1489 -0
- package/openh264/codec/common/loongarch/intra_pred_com_lasx.c +112 -0
- package/openh264/codec/common/loongarch/intra_pred_com_lsx.c +91 -0
- package/openh264/codec/common/loongarch/mc_chroma_lsx.c +192 -0
- package/openh264/codec/common/loongarch/mc_horver_lsx.c +654 -0
- package/openh264/codec/common/loongarch/satd_sad_lasx.c +568 -0
- package/openh264/codec/common/meson.build +84 -0
- package/openh264/codec/common/mips/copy_mb_mmi.c +477 -0
- package/openh264/codec/common/mips/copy_mb_msa.c +80 -0
- package/openh264/codec/common/mips/deblock_mmi.c +2826 -0
- package/openh264/codec/common/mips/deblock_msa.c +1024 -0
- package/openh264/codec/common/mips/expand_picture_mmi.c +673 -0
- package/openh264/codec/common/mips/intra_pred_com_mmi.c +548 -0
- package/openh264/codec/common/mips/satd_sad_mmi.c +2154 -0
- package/openh264/codec/common/targets.mk +136 -0
- package/openh264/codec/common/x86/asm_inc.asm +743 -0
- package/openh264/codec/common/x86/cpuid.asm +263 -0
- package/openh264/codec/common/x86/dct.asm +1036 -0
- package/openh264/codec/common/x86/deblock.asm +848 -0
- package/openh264/codec/common/x86/expand_picture.asm +728 -0
- package/openh264/codec/common/x86/intra_pred_com.asm +117 -0
- package/openh264/codec/common/x86/mb_copy.asm +615 -0
- package/openh264/codec/common/x86/mc_chroma.asm +313 -0
- package/openh264/codec/common/x86/mc_luma.asm +4490 -0
- package/openh264/codec/common/x86/satd_sad.asm +2734 -0
- package/openh264/codec/common/x86/vaa.asm +411 -0
- package/openh264/codec/console/common/inc/read_config.h +68 -0
- package/openh264/codec/console/common/meson.build +12 -0
- package/openh264/codec/console/common/targets.mk +20 -0
- package/openh264/codec/console/dec/inc/d3d9_utils.h +148 -0
- package/openh264/codec/console/dec/meson.build +15 -0
- package/openh264/codec/console/dec/targets.mk +20 -0
- package/openh264/codec/console/enc/meson.build +9 -0
- package/openh264/codec/console/enc/targets.mk +19 -0
- package/openh264/codec/console/meson.build +3 -0
- package/openh264/codec/decoder/core/arm/block_add_neon.S +129 -0
- package/openh264/codec/decoder/core/arm/intra_pred_neon.S +635 -0
- package/openh264/codec/decoder/core/arm64/block_add_aarch64_neon.S +131 -0
- package/openh264/codec/decoder/core/arm64/intra_pred_aarch64_neon.S +524 -0
- package/openh264/codec/decoder/core/inc/au_parser.h +199 -0
- package/openh264/codec/decoder/core/inc/bit_stream.h +62 -0
- package/openh264/codec/decoder/core/inc/cabac_decoder.h +111 -0
- package/openh264/codec/decoder/core/inc/deblocking.h +118 -0
- package/openh264/codec/decoder/core/inc/dec_frame.h +156 -0
- package/openh264/codec/decoder/core/inc/dec_golomb.h +344 -0
- package/openh264/codec/decoder/core/inc/decode_mb_aux.h +83 -0
- package/openh264/codec/decoder/core/inc/decode_slice.h +104 -0
- package/openh264/codec/decoder/core/inc/decoder.h +186 -0
- package/openh264/codec/decoder/core/inc/decoder_context.h +590 -0
- package/openh264/codec/decoder/core/inc/decoder_core.h +206 -0
- package/openh264/codec/decoder/core/inc/error_code.h +222 -0
- package/openh264/codec/decoder/core/inc/error_concealment.h +68 -0
- package/openh264/codec/decoder/core/inc/fmo.h +114 -0
- package/openh264/codec/decoder/core/inc/get_intra_predictor.h +191 -0
- package/openh264/codec/decoder/core/inc/manage_dec_ref.h +62 -0
- package/openh264/codec/decoder/core/inc/mb_cache.h +80 -0
- package/openh264/codec/decoder/core/inc/memmgr_nal_unit.h +66 -0
- package/openh264/codec/decoder/core/inc/mv_pred.h +195 -0
- package/openh264/codec/decoder/core/inc/nal_prefix.h +56 -0
- package/openh264/codec/decoder/core/inc/nalu.h +79 -0
- package/openh264/codec/decoder/core/inc/parameter_sets.h +217 -0
- package/openh264/codec/decoder/core/inc/parse_mb_syn_cabac.h +89 -0
- package/openh264/codec/decoder/core/inc/parse_mb_syn_cavlc.h +137 -0
- package/openh264/codec/decoder/core/inc/pic_queue.h +62 -0
- package/openh264/codec/decoder/core/inc/picture.h +112 -0
- package/openh264/codec/decoder/core/inc/rec_mb.h +104 -0
- package/openh264/codec/decoder/core/inc/slice.h +208 -0
- package/openh264/codec/decoder/core/inc/vlc_decoder.h +177 -0
- package/openh264/codec/decoder/core/inc/wels_common_basis.h +317 -0
- package/openh264/codec/decoder/core/inc/wels_const.h +65 -0
- package/openh264/codec/decoder/core/inc/wels_decoder_thread.h +170 -0
- package/openh264/codec/decoder/core/loongarch/mb_aux_lsx.c +296 -0
- package/openh264/codec/decoder/core/mips/dct_mmi.c +786 -0
- package/openh264/codec/decoder/core/x86/dct.asm +72 -0
- package/openh264/codec/decoder/core/x86/intra_pred.asm +1456 -0
- package/openh264/codec/decoder/meson.build +69 -0
- package/openh264/codec/decoder/plus/inc/welsDecoderExt.h +170 -0
- package/openh264/codec/decoder/targets.mk +115 -0
- package/openh264/codec/encoder/core/arm/intra_pred_neon.S +589 -0
- package/openh264/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S +735 -0
- package/openh264/codec/encoder/core/arm/memory_neon.S +62 -0
- package/openh264/codec/encoder/core/arm/pixel_neon.S +882 -0
- package/openh264/codec/encoder/core/arm/reconstruct_neon.S +903 -0
- package/openh264/codec/encoder/core/arm/svc_motion_estimation.S +366 -0
- package/openh264/codec/encoder/core/arm64/intra_pred_aarch64_neon.S +505 -0
- package/openh264/codec/encoder/core/arm64/intra_pred_sad_3_opt_aarch64_neon.S +611 -0
- package/openh264/codec/encoder/core/arm64/memory_aarch64_neon.S +63 -0
- package/openh264/codec/encoder/core/arm64/pixel_aarch64_neon.S +621 -0
- package/openh264/codec/encoder/core/arm64/reconstruct_aarch64_neon.S +717 -0
- package/openh264/codec/encoder/core/arm64/svc_motion_estimation_aarch64_neon.S +350 -0
- package/openh264/codec/encoder/core/inc/as264_common.h +138 -0
- package/openh264/codec/encoder/core/inc/au_set.h +152 -0
- package/openh264/codec/encoder/core/inc/deblocking.h +92 -0
- package/openh264/codec/encoder/core/inc/decode_mb_aux.h +112 -0
- package/openh264/codec/encoder/core/inc/dq_map.h +58 -0
- package/openh264/codec/encoder/core/inc/encode_mb_aux.h +199 -0
- package/openh264/codec/encoder/core/inc/encoder.h +148 -0
- package/openh264/codec/encoder/core/inc/encoder_context.h +240 -0
- package/openh264/codec/encoder/core/inc/extern.h +124 -0
- package/openh264/codec/encoder/core/inc/get_intra_predictor.h +186 -0
- package/openh264/codec/encoder/core/inc/mb_cache.h +141 -0
- package/openh264/codec/encoder/core/inc/md.h +181 -0
- package/openh264/codec/encoder/core/inc/mt_defs.h +91 -0
- package/openh264/codec/encoder/core/inc/mv_pred.h +191 -0
- package/openh264/codec/encoder/core/inc/nal_encap.h +143 -0
- package/openh264/codec/encoder/core/inc/param_svc.h +576 -0
- package/openh264/codec/encoder/core/inc/parameter_sets.h +181 -0
- package/openh264/codec/encoder/core/inc/paraset_strategy.h +310 -0
- package/openh264/codec/encoder/core/inc/picture.h +137 -0
- package/openh264/codec/encoder/core/inc/picture_handle.h +66 -0
- package/openh264/codec/encoder/core/inc/rc.h +284 -0
- package/openh264/codec/encoder/core/inc/ref_list_mgr_svc.h +148 -0
- package/openh264/codec/encoder/core/inc/sample.h +154 -0
- package/openh264/codec/encoder/core/inc/set_mb_syn_cabac.h +127 -0
- package/openh264/codec/encoder/core/inc/set_mb_syn_cavlc.h +92 -0
- package/openh264/codec/encoder/core/inc/slice.h +212 -0
- package/openh264/codec/encoder/core/inc/slice_multi_threading.h +97 -0
- package/openh264/codec/encoder/core/inc/stat.h +102 -0
- package/openh264/codec/encoder/core/inc/svc_base_layer_md.h +102 -0
- package/openh264/codec/encoder/core/inc/svc_enc_frame.h +136 -0
- package/openh264/codec/encoder/core/inc/svc_enc_golomb.h +123 -0
- package/openh264/codec/encoder/core/inc/svc_enc_macroblock.h +82 -0
- package/openh264/codec/encoder/core/inc/svc_enc_slice_segment.h +212 -0
- package/openh264/codec/encoder/core/inc/svc_encode_mb.h +63 -0
- package/openh264/codec/encoder/core/inc/svc_encode_slice.h +184 -0
- package/openh264/codec/encoder/core/inc/svc_mode_decision.h +94 -0
- package/openh264/codec/encoder/core/inc/svc_motion_estimate.h +369 -0
- package/openh264/codec/encoder/core/inc/svc_set_mb_syn.h +70 -0
- package/openh264/codec/encoder/core/inc/svc_set_mb_syn_cavlc.h +67 -0
- package/openh264/codec/encoder/core/inc/vlc_encoder.h +92 -0
- package/openh264/codec/encoder/core/inc/wels_common_basis.h +160 -0
- package/openh264/codec/encoder/core/inc/wels_const.h +174 -0
- package/openh264/codec/encoder/core/inc/wels_func_ptr_def.h +300 -0
- package/openh264/codec/encoder/core/inc/wels_preprocess.h +251 -0
- package/openh264/codec/encoder/core/inc/wels_task_base.h +79 -0
- package/openh264/codec/encoder/core/inc/wels_task_encoder.h +142 -0
- package/openh264/codec/encoder/core/inc/wels_task_management.h +135 -0
- package/openh264/codec/encoder/core/inc/wels_transpose_matrix.h +58 -0
- package/openh264/codec/encoder/core/loongarch/dct_lasx.c +452 -0
- package/openh264/codec/encoder/core/loongarch/get_intra_predictor_lsx.c +166 -0
- package/openh264/codec/encoder/core/loongarch/quant_lsx.c +153 -0
- package/openh264/codec/encoder/core/loongarch/sample_lasx.c +87 -0
- package/openh264/codec/encoder/core/loongarch/svc_motion_estimate_lsx.c +104 -0
- package/openh264/codec/encoder/core/mips/dct_mmi.c +529 -0
- package/openh264/codec/encoder/core/mips/quant_mmi.c +553 -0
- package/openh264/codec/encoder/core/mips/score_mmi.c +324 -0
- package/openh264/codec/encoder/core/x86/coeff.asm +695 -0
- package/openh264/codec/encoder/core/x86/dct.asm +108 -0
- package/openh264/codec/encoder/core/x86/intra_pred.asm +1129 -0
- package/openh264/codec/encoder/core/x86/matrix_transpose.asm +395 -0
- package/openh264/codec/encoder/core/x86/memzero.asm +132 -0
- package/openh264/codec/encoder/core/x86/quant.asm +507 -0
- package/openh264/codec/encoder/core/x86/sample_sc.asm +1829 -0
- package/openh264/codec/encoder/core/x86/score.asm +363 -0
- package/openh264/codec/encoder/meson.build +98 -0
- package/openh264/codec/encoder/plus/inc/welsEncoderExt.h +129 -0
- package/openh264/codec/encoder/targets.mk +146 -0
- package/openh264/codec/meson.build +9 -0
- package/openh264/codec/processing/interface/IWelsVP.h +310 -0
- package/openh264/codec/processing/meson.build +71 -0
- package/openh264/codec/processing/targets.mk +117 -0
- package/openh264/docs/doxygen/Doxyfile +1865 -0
- package/openh264/docs/doxygen/Home.rest +25 -0
- package/openh264/docs/doxygen/ISVCDecoder.rest +19 -0
- package/openh264/docs/doxygen/ISVCEncoder.rest +16 -0
- package/openh264/docs/doxygen/UsageExampleForDecoder.rest +10 -0
- package/openh264/docs/doxygen/UsageExampleForEncoder.rest +15 -0
- package/openh264/docs/doxygen2rst.py +619 -0
- package/openh264/gmpopenh264.info +4 -0
- package/openh264/gradlew +172 -0
- package/openh264/meson.build +218 -0
- package/openh264/meson_options.txt +1 -0
- package/openh264/module/RefCounted.h +141 -0
- package/openh264/module/gmp-openh264.cpp +1196 -0
- package/openh264/module/targets.mk +14 -0
- package/openh264/module/task_utils.h +38 -0
- package/openh264/module/task_utils.py +207 -0
- package/openh264/module/task_utils_generated.h +2087 -0
- package/openh264/openh264.def +7 -0
- package/openh264/openh264.pc.in +10 -0
- package/openh264/openh264.rc +61 -0
- package/openh264/openh264.rc.template +61 -0
- package/openh264/res/Adobe_PDF_sample_a_1024x768_50Frms.264 +0 -0
- package/openh264/res/BA1_FT_C.264 +0 -0
- package/openh264/res/BA1_Sony_D.jsv +0 -0
- package/openh264/res/BAMQ1_JVC_C.264 +0 -0
- package/openh264/res/BAMQ2_JVC_C.264 +0 -0
- package/openh264/res/BANM_MW_D.264 +0 -0
- package/openh264/res/BASQP1_Sony_C.jsv +0 -0
- package/openh264/res/BA_MW_D.264 +0 -0
- package/openh264/res/BA_MW_D_IDR_LOST.264 +0 -0
- package/openh264/res/BA_MW_D_P_LOST.264 +0 -0
- package/openh264/res/CI1_FT_B.264 +0 -0
- package/openh264/res/CI_MW_D.264 +0 -0
- package/openh264/res/CVFC1_Sony_C.jsv +0 -0
- package/openh264/res/CVPCMNL1_SVA_C.264 +0 -0
- package/openh264/res/CiscoVT2people_160x96_6fps.yuv +1 -0
- package/openh264/res/CiscoVT2people_320x192_12fps.yuv +1 -0
- package/openh264/res/Cisco_Absolute_Power_1280x720_30fps.yuv +3607 -0
- package/openh264/res/Cisco_Adobe_PDF_sample_a_1024x768_CAVLC_Bframe_9.264 +0 -0
- package/openh264/res/Cisco_Men_whisper_640x320_CABAC_Bframe_9.264 +0 -0
- package/openh264/res/Cisco_Men_whisper_640x320_CAVLC_Bframe_9.264 +0 -0
- package/openh264/res/Error_I_P.264 +0 -0
- package/openh264/res/LS_SVA_D.264 +0 -0
- package/openh264/res/MIDR_MW_D.264 +0 -0
- package/openh264/res/MPS_MW_A.264 +0 -0
- package/openh264/res/MR1_BT_A.h264 +0 -0
- package/openh264/res/MR1_MW_A.264 +0 -0
- package/openh264/res/MR2_MW_A.264 +0 -0
- package/openh264/res/MR2_TANDBERG_E.264 +0 -0
- package/openh264/res/NL1_Sony_D.jsv +0 -0
- package/openh264/res/NLMQ1_JVC_C.264 +0 -0
- package/openh264/res/NLMQ2_JVC_C.264 +0 -0
- package/openh264/res/NRF_MW_E.264 +0 -0
- package/openh264/res/QCIF_2P_I_allIPCM.264 +0 -0
- package/openh264/res/SVA_BA1_B.264 +0 -0
- package/openh264/res/SVA_BA2_D.264 +0 -0
- package/openh264/res/SVA_Base_B.264 +0 -0
- package/openh264/res/SVA_CL1_E.264 +0 -0
- package/openh264/res/SVA_FM1_E.264 +0 -0
- package/openh264/res/SVA_NL1_B.264 +0 -0
- package/openh264/res/SVA_NL2_E.264 +0 -0
- package/openh264/res/SarVui.264 +0 -0
- package/openh264/res/Static.264 +0 -0
- package/openh264/res/Static_152_100.yuv +1 -0
- package/openh264/res/VID_1280x544_cabac_temporal_direct.264 +0 -0
- package/openh264/res/VID_1280x544_cavlc_temporal_direct.264 +0 -0
- package/openh264/res/VID_1280x720_cabac_temporal_direct.264 +0 -0
- package/openh264/res/VID_1280x720_cavlc_temporal_direct.264 +0 -0
- package/openh264/res/VID_1920x1080_cabac_temporal_direct.264 +0 -0
- package/openh264/res/VID_1920x1080_cavlc_temporal_direct.264 +0 -0
- package/openh264/res/Zhling_1280x720.264 +0 -0
- package/openh264/res/jm_1080p_allslice.264 +0 -0
- package/openh264/res/sps_subsetsps_bothVUI.264 +0 -0
- package/openh264/res/test_cif_I_CABAC_PCM.264 +0 -0
- package/openh264/res/test_cif_I_CABAC_slice.264 +0 -0
- package/openh264/res/test_cif_P_CABAC_slice.264 +0 -0
- package/openh264/res/test_qcif_cabac.264 +0 -0
- package/openh264/res/test_scalinglist_jm.264 +0 -0
- package/openh264/res/test_vd_1d.264 +0 -0
- package/openh264/res/test_vd_rc.264 +0 -0
- package/openh264/run_Test.sh +91 -0
- package/openh264/settings.gradle +4 -0
- package/openh264/subprojects/gtest.wrap +10 -0
- package/openh264/testbin/AutoBuild_Windows_VS2008.bat +59 -0
- package/openh264/testbin/CmdLineExample.sh +7 -0
- package/openh264/testbin/CmdLineReadMe +22 -0
- package/openh264/testbin/layer2.cfg +37 -0
- package/openh264/testbin/layer2_arbitrary_res.cfg +37 -0
- package/openh264/testbin/layer2_vd.cfg +38 -0
- package/openh264/testbin/layer2_vd_rc.cfg +38 -0
- package/openh264/testbin/welsenc.cfg +71 -0
- package/openh264/testbin/welsenc_arbitrary_res.cfg +70 -0
- package/openh264/testbin/welsenc_ios.cfg +71 -0
- package/openh264/testbin/welsenc_vd_1d.cfg +70 -0
- package/openh264/testbin/welsenc_vd_rc.cfg +69 -0
- package/openh264/ut.def +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
**********************************************************************************
|
|
3
|
+
* Copyright (c) 2021 Loongson Technology Corporation Limited
|
|
4
|
+
* Contributed by Lu Wang <wanglu@loongson.cn>
|
|
5
|
+
*
|
|
6
|
+
* \copy
|
|
7
|
+
* Copyright (c) 2013, Cisco Systems
|
|
8
|
+
* All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Redistribution and use in source and binary forms, with or without
|
|
11
|
+
* modification, are permitted provided that the following conditions
|
|
12
|
+
* are met:
|
|
13
|
+
*
|
|
14
|
+
* * Redistributions of source code must retain the above copyright
|
|
15
|
+
* notice, this list of conditions and the following disclaimer.
|
|
16
|
+
*
|
|
17
|
+
* * Redistributions in binary form must reproduce the above copyright
|
|
18
|
+
* notice, this list of conditions and the following disclaimer in
|
|
19
|
+
* the documentation and/or other materials provided with the
|
|
20
|
+
* distribution.
|
|
21
|
+
*
|
|
22
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
+
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*
|
|
35
|
+
* \file quant_lsx.c
|
|
36
|
+
*
|
|
37
|
+
* \brief Loongson optimization
|
|
38
|
+
*
|
|
39
|
+
* \date 12/10/2021 Created
|
|
40
|
+
*
|
|
41
|
+
**********************************************************************************
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
#include <stdint.h>
|
|
45
|
+
#include "loongson_intrinsics.h"
|
|
46
|
+
|
|
47
|
+
void WelsQuantFour4x4_lsx (int16_t* pDct, const int16_t* pFF, const int16_t* pMF) {
|
|
48
|
+
int32_t i;
|
|
49
|
+
__m128i vec_pFF0, vec_pFF1, vec_pFF2, vec_pMF0, vec_pMF1, vec_pMF2;
|
|
50
|
+
__m128i vec_pDct, vec_pDct0, vec_pDct1, vec_pDct2, vec_pFF, vec_pMF;
|
|
51
|
+
__m128i vec_pDct10, vec_pDct11, vec_pDct12, vec_pDct20, vec_pDct21, vec_pDct22;
|
|
52
|
+
__m128i vec_iSign1, vec_iSign2;
|
|
53
|
+
|
|
54
|
+
DUP2_ARG2(__lsx_vld, pFF, 0, pMF, 0, vec_pFF, vec_pMF);
|
|
55
|
+
DUP2_ARG2(__lsx_vsrai_h, vec_pFF, 15, vec_pMF, 15, vec_pFF0, vec_pMF0);
|
|
56
|
+
DUP2_ARG2(__lsx_vilvl_h, vec_pFF0, vec_pFF, vec_pMF0, vec_pMF, vec_pFF1, vec_pMF1);
|
|
57
|
+
DUP2_ARG2(__lsx_vilvh_h, vec_pFF0, vec_pFF, vec_pMF0, vec_pMF, vec_pFF2, vec_pMF2);
|
|
58
|
+
|
|
59
|
+
for (i = 0; i < 8; i++) {
|
|
60
|
+
vec_pDct = __lsx_vld(pDct, 0);
|
|
61
|
+
vec_pDct0 = __lsx_vsrai_h(vec_pDct, 15);
|
|
62
|
+
vec_pDct1 = __lsx_vilvl_h(vec_pDct0, vec_pDct);
|
|
63
|
+
vec_pDct2 = __lsx_vilvh_h(vec_pDct0, vec_pDct);
|
|
64
|
+
|
|
65
|
+
vec_iSign1 = __lsx_vsrai_w(vec_pDct1, 31);
|
|
66
|
+
vec_iSign2 = __lsx_vsrai_w(vec_pDct2, 31);
|
|
67
|
+
|
|
68
|
+
vec_pDct10 = __lsx_vxor_v(vec_iSign1, vec_pDct1);
|
|
69
|
+
vec_pDct10 = __lsx_vsub_w(vec_pDct10, vec_iSign1);
|
|
70
|
+
vec_pDct11 = __lsx_vadd_w(vec_pFF1, vec_pDct10);
|
|
71
|
+
vec_pDct11 = __lsx_vmul_w(vec_pDct11, vec_pMF1);
|
|
72
|
+
vec_pDct11 = __lsx_vsrai_w(vec_pDct11, 16);
|
|
73
|
+
vec_pDct12 = __lsx_vxor_v(vec_iSign1, vec_pDct11);
|
|
74
|
+
vec_pDct12 = __lsx_vsub_w(vec_pDct12, vec_iSign1);
|
|
75
|
+
|
|
76
|
+
vec_pDct20 = __lsx_vxor_v(vec_iSign2, vec_pDct2);
|
|
77
|
+
vec_pDct20 = __lsx_vsub_w(vec_pDct20, vec_iSign2);
|
|
78
|
+
vec_pDct21 = __lsx_vadd_w(vec_pFF2, vec_pDct20);
|
|
79
|
+
vec_pDct21 = __lsx_vmul_w(vec_pDct21, vec_pMF2);
|
|
80
|
+
vec_pDct21 = __lsx_vsrai_w(vec_pDct21, 16);
|
|
81
|
+
vec_pDct22 = __lsx_vxor_v(vec_iSign2, vec_pDct21);
|
|
82
|
+
vec_pDct22 = __lsx_vsub_w(vec_pDct22, vec_iSign2);
|
|
83
|
+
|
|
84
|
+
vec_pDct = __lsx_vpickev_h(vec_pDct22, vec_pDct12);
|
|
85
|
+
__lsx_vst(vec_pDct, pDct, 0);
|
|
86
|
+
pDct += 8;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
void WelsQuantFour4x4Max_lsx (int16_t* pDct, const int16_t* pFF, const int16_t* pMF, int16_t* pMax) {
|
|
91
|
+
int32_t k;
|
|
92
|
+
int16_t iMaxAbs;
|
|
93
|
+
__m128i vec_pDct1, vec_pDct2, vec_pDct3, vec_pDct4;
|
|
94
|
+
__m128i vec_pFF, vec_pMF, vec_iMaxAbs, tmp_iMaxAbs;
|
|
95
|
+
__m128i vec_pFF0, vec_pFF1, vec_pFF2, vec_pMF0, vec_pMF1, vec_pMF2;
|
|
96
|
+
__m128i vec_pDct10, vec_pDct11, vec_pDct12, vec_pDct20, vec_pDct21, vec_pDct22;
|
|
97
|
+
__m128i vec_iSign11, vec_iSign12, vec_iSign21, vec_iSign22;
|
|
98
|
+
__m128i vec_iSign31, vec_iSign32, vec_iSign41, vec_iSign42;
|
|
99
|
+
|
|
100
|
+
DUP2_ARG2(__lsx_vld, pFF, 0, pMF, 0, vec_pFF, vec_pMF);
|
|
101
|
+
DUP2_ARG2(__lsx_vsrai_h, vec_pFF, 15, vec_pMF, 15, vec_pFF0, vec_pMF0);
|
|
102
|
+
DUP2_ARG2(__lsx_vilvl_h, vec_pFF0, vec_pFF, vec_pMF0, vec_pMF, vec_pFF1, vec_pMF1);
|
|
103
|
+
DUP2_ARG2(__lsx_vilvh_h, vec_pFF0, vec_pFF, vec_pMF0, vec_pMF, vec_pFF2, vec_pMF2);
|
|
104
|
+
|
|
105
|
+
for (k = 0; k < 4; k++) {
|
|
106
|
+
iMaxAbs = 0;
|
|
107
|
+
vec_iMaxAbs = __lsx_vreplgr2vr_h(0);
|
|
108
|
+
DUP2_ARG2(__lsx_vld, pDct, 0, pDct + 8, 0, vec_pDct1, vec_pDct2);
|
|
109
|
+
DUP2_ARG2(__lsx_vsrai_h, vec_pDct1, 15, vec_pDct2, 15, vec_pDct10, vec_pDct20);
|
|
110
|
+
DUP2_ARG2(__lsx_vilvl_h, vec_pDct10, vec_pDct1, vec_pDct20, vec_pDct2, vec_pDct11,
|
|
111
|
+
vec_pDct21);
|
|
112
|
+
DUP2_ARG2(__lsx_vilvh_h, vec_pDct10, vec_pDct1, vec_pDct20, vec_pDct2, vec_pDct12,
|
|
113
|
+
vec_pDct22);
|
|
114
|
+
|
|
115
|
+
DUP4_ARG2(__lsx_vsrai_w, vec_pDct11, 31, vec_pDct12, 31, vec_pDct21, 31, vec_pDct22,
|
|
116
|
+
31, vec_iSign11, vec_iSign12, vec_iSign21, vec_iSign22);
|
|
117
|
+
vec_iSign31 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign11, vec_pDct11), vec_iSign11);
|
|
118
|
+
vec_iSign32 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign12, vec_pDct12), vec_iSign12);
|
|
119
|
+
vec_iSign41 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign21, vec_pDct21), vec_iSign21);
|
|
120
|
+
vec_iSign42 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign22, vec_pDct22), vec_iSign22);
|
|
121
|
+
|
|
122
|
+
DUP4_ARG2(__lsx_vadd_w, vec_pFF1, vec_iSign31, vec_pFF2, vec_iSign32, vec_pFF1,
|
|
123
|
+
vec_iSign41, vec_pFF2, vec_iSign42, vec_iSign31, vec_iSign32, vec_iSign41,
|
|
124
|
+
vec_iSign42);
|
|
125
|
+
DUP4_ARG2(__lsx_vmul_w, vec_pMF1, vec_iSign31, vec_pMF2, vec_iSign32, vec_pMF1,
|
|
126
|
+
vec_iSign41, vec_pMF2, vec_iSign42, vec_pDct11, vec_pDct12, vec_pDct21,
|
|
127
|
+
vec_pDct22);
|
|
128
|
+
DUP4_ARG2(__lsx_vsrai_w, vec_pDct11, 16, vec_pDct12, 16, vec_pDct21, 16, vec_pDct22,
|
|
129
|
+
16, vec_pDct11, vec_pDct12, vec_pDct21, vec_pDct22);
|
|
130
|
+
DUP4_ARG2(__lsx_vmax_w, vec_iMaxAbs, vec_pDct11, vec_iMaxAbs, vec_pDct12, vec_iMaxAbs,
|
|
131
|
+
vec_pDct21, vec_iMaxAbs, vec_pDct22, vec_iMaxAbs, vec_iMaxAbs, vec_iMaxAbs,
|
|
132
|
+
vec_iMaxAbs);
|
|
133
|
+
tmp_iMaxAbs = __lsx_vbsrl_v(vec_iMaxAbs, 8);
|
|
134
|
+
vec_iMaxAbs = __lsx_vmax_w(vec_iMaxAbs, tmp_iMaxAbs);
|
|
135
|
+
tmp_iMaxAbs = __lsx_vbsrl_v(vec_iMaxAbs, 4);
|
|
136
|
+
vec_iMaxAbs = __lsx_vmax_w(vec_iMaxAbs, tmp_iMaxAbs);
|
|
137
|
+
iMaxAbs = __lsx_vpickve2gr_h(vec_iMaxAbs, 0);
|
|
138
|
+
|
|
139
|
+
vec_pDct1 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign11, vec_pDct11), vec_iSign11);
|
|
140
|
+
vec_pDct2 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign12, vec_pDct12), vec_iSign12);
|
|
141
|
+
vec_pDct3 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign21, vec_pDct21), vec_iSign21);
|
|
142
|
+
vec_pDct4 = __lsx_vsub_w(__lsx_vxor_v(vec_iSign22, vec_pDct22), vec_iSign22);
|
|
143
|
+
DUP2_ARG2(__lsx_vpickev_h, vec_pDct2, vec_pDct1, vec_pDct4, vec_pDct3, vec_pDct1,
|
|
144
|
+
vec_pDct2);
|
|
145
|
+
|
|
146
|
+
__lsx_vst(vec_pDct1, pDct, 0);
|
|
147
|
+
__lsx_vst(vec_pDct2, pDct + 8, 0);
|
|
148
|
+
|
|
149
|
+
pDct += 16;
|
|
150
|
+
pMax[k] = iMaxAbs;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
**********************************************************************************
|
|
3
|
+
* Copyright (c) 2022 Loongson Technology Corporation Limited
|
|
4
|
+
* Contributed by Lu Wang <wanglu@loongson.cn>
|
|
5
|
+
*
|
|
6
|
+
* \copy
|
|
7
|
+
* Copyright (c) 2009-2013, Cisco Systems
|
|
8
|
+
* All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Redistribution and use in source and binary forms, with or without
|
|
11
|
+
* modification, are permitted provided that the following conditions
|
|
12
|
+
* are met:
|
|
13
|
+
*
|
|
14
|
+
* * Redistributions of source code must retain the above copyright
|
|
15
|
+
* notice, this list of conditions and the following disclaimer.
|
|
16
|
+
*
|
|
17
|
+
* * Redistributions in binary form must reproduce the above copyright
|
|
18
|
+
* notice, this list of conditions and the following disclaimer in
|
|
19
|
+
* the documentation and/or other materials provided with the
|
|
20
|
+
* distribution.
|
|
21
|
+
*
|
|
22
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
+
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*
|
|
35
|
+
* \file sample_lasx.c
|
|
36
|
+
*
|
|
37
|
+
* \brief Loongson optimization
|
|
38
|
+
*
|
|
39
|
+
* \date 13/10/2022 Created
|
|
40
|
+
*
|
|
41
|
+
**********************************************************************************
|
|
42
|
+
*/
|
|
43
|
+
#include "sad_common.h"
|
|
44
|
+
|
|
45
|
+
void WelsIChromaPredV_lasx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
|
46
|
+
void WelsIChromaPredH_lasx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
|
47
|
+
void WelsIChromaPredDc_lasx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
|
48
|
+
|
|
49
|
+
int32_t WelsIntra8x8Combined3Sad_lasx (uint8_t* pDecCb, int32_t iDecStride,
|
|
50
|
+
uint8_t* pEncCb, int32_t iEncStride,
|
|
51
|
+
int32_t* pBestMode, int32_t iLambda,
|
|
52
|
+
uint8_t* pDstChroma, uint8_t* pDecCr,
|
|
53
|
+
uint8_t* pEncCr) {
|
|
54
|
+
int32_t iBestMode = -1;
|
|
55
|
+
int32_t iCurCost, iBestCost = INT_MAX;
|
|
56
|
+
|
|
57
|
+
WelsIChromaPredV_lasx (pDstChroma, pDecCb, iDecStride);
|
|
58
|
+
WelsIChromaPredV_lasx (pDstChroma + 64, pDecCr, iDecStride);
|
|
59
|
+
iCurCost = WelsSampleSad8x8_lasx(pDstChroma, 8, pEncCb, iEncStride);
|
|
60
|
+
iCurCost += WelsSampleSad8x8_lasx(pDstChroma + 64, 8, pEncCr, iEncStride) + iLambda * 2;
|
|
61
|
+
|
|
62
|
+
if (iCurCost < iBestCost) {
|
|
63
|
+
iBestMode = 2;
|
|
64
|
+
iBestCost = iCurCost;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
WelsIChromaPredH_lasx(pDstChroma, pDecCb, iDecStride);
|
|
68
|
+
WelsIChromaPredH_lasx(pDstChroma + 64, pDecCr, iDecStride);
|
|
69
|
+
iCurCost = WelsSampleSad8x8_lasx(pDstChroma, 8, pEncCb, iEncStride);
|
|
70
|
+
iCurCost += WelsSampleSad8x8_lasx(pDstChroma + 64, 8, pEncCr, iEncStride) + iLambda * 2;
|
|
71
|
+
if (iCurCost < iBestCost) {
|
|
72
|
+
iBestMode = 1;
|
|
73
|
+
iBestCost = iCurCost;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
WelsIChromaPredDc_lasx(pDstChroma, pDecCb, iDecStride);
|
|
77
|
+
WelsIChromaPredDc_lasx(pDstChroma + 64, pDecCr, iDecStride);
|
|
78
|
+
iCurCost = WelsSampleSad8x8_lasx(pDstChroma, 8, pEncCb, iEncStride);
|
|
79
|
+
iCurCost += WelsSampleSad8x8_lasx(pDstChroma + 64, 8, pEncCr, iEncStride);
|
|
80
|
+
if (iCurCost < iBestCost) {
|
|
81
|
+
iBestMode = 0;
|
|
82
|
+
iBestCost = iCurCost;
|
|
83
|
+
}
|
|
84
|
+
*pBestMode = iBestMode;
|
|
85
|
+
|
|
86
|
+
return iBestCost;
|
|
87
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
**********************************************************************************
|
|
3
|
+
* Copyright (c) 2022 Loongson Technology Corporation Limited
|
|
4
|
+
* Contributed by Lu Wang <wanglu@loongson.cn>
|
|
5
|
+
*
|
|
6
|
+
* \copy
|
|
7
|
+
* Copyright (c) 2009-2013, Cisco Systems
|
|
8
|
+
* All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Redistribution and use in source and binary forms, with or without
|
|
11
|
+
* modification, are permitted provided that the following conditions
|
|
12
|
+
* are met:
|
|
13
|
+
*
|
|
14
|
+
* * Redistributions of source code must retain the above copyright
|
|
15
|
+
* notice, this list of conditions and the following disclaimer.
|
|
16
|
+
*
|
|
17
|
+
* * Redistributions in binary form must reproduce the above copyright
|
|
18
|
+
* notice, this list of conditions and the following disclaimer in
|
|
19
|
+
* the documentation and/or other materials provided with the
|
|
20
|
+
* distribution.
|
|
21
|
+
*
|
|
22
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
+
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*
|
|
35
|
+
* \file svc_motion_estimate_lsx.c
|
|
36
|
+
*
|
|
37
|
+
* \brief Loongson optimization
|
|
38
|
+
*
|
|
39
|
+
* \date 13/10/2022 Created
|
|
40
|
+
*
|
|
41
|
+
**********************************************************************************
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
#include <stdint.h>
|
|
45
|
+
#include "loongson_intrinsics.h"
|
|
46
|
+
|
|
47
|
+
int32_t SumOf8x8SingleBlock_lsx (uint8_t* pRef, const int32_t kiRefStride) {
|
|
48
|
+
__m128i vec_pRef0, vec_pRef1, vec_pRef2, vec_pRef3;
|
|
49
|
+
__m128i vec_pRef4, vec_pRef5, vec_pRef6, vec_pRef7;
|
|
50
|
+
|
|
51
|
+
int32_t iSum;
|
|
52
|
+
int32_t kiRefStride_x2 = kiRefStride << 1;
|
|
53
|
+
int32_t kiRefStride_x3 = kiRefStride_x2 + kiRefStride;
|
|
54
|
+
int32_t kiRefStride_x4 = kiRefStride << 2;
|
|
55
|
+
|
|
56
|
+
vec_pRef0 = __lsx_vld(pRef, 0);
|
|
57
|
+
vec_pRef1 = __lsx_vldx(pRef, kiRefStride);
|
|
58
|
+
vec_pRef2 = __lsx_vldx(pRef, kiRefStride_x2);
|
|
59
|
+
vec_pRef3 = __lsx_vldx(pRef, kiRefStride_x3);
|
|
60
|
+
pRef += kiRefStride_x4;
|
|
61
|
+
vec_pRef4 = __lsx_vld(pRef, 0);
|
|
62
|
+
vec_pRef5 = __lsx_vldx(pRef, kiRefStride);
|
|
63
|
+
vec_pRef6 = __lsx_vldx(pRef, kiRefStride_x2);
|
|
64
|
+
vec_pRef7 = __lsx_vldx(pRef, kiRefStride_x3);
|
|
65
|
+
|
|
66
|
+
vec_pRef0 = __lsx_vilvl_d(vec_pRef1, vec_pRef0);
|
|
67
|
+
vec_pRef2 = __lsx_vilvl_d(vec_pRef3, vec_pRef2);
|
|
68
|
+
vec_pRef4 = __lsx_vilvl_d(vec_pRef5, vec_pRef4);
|
|
69
|
+
vec_pRef6 = __lsx_vilvl_d(vec_pRef7, vec_pRef6);
|
|
70
|
+
|
|
71
|
+
vec_pRef0 = __lsx_vhaddw_hu_bu(vec_pRef0, vec_pRef0);
|
|
72
|
+
vec_pRef2 = __lsx_vhaddw_hu_bu(vec_pRef2, vec_pRef2);
|
|
73
|
+
vec_pRef4 = __lsx_vhaddw_hu_bu(vec_pRef4, vec_pRef4);
|
|
74
|
+
vec_pRef6 = __lsx_vhaddw_hu_bu(vec_pRef6, vec_pRef6);
|
|
75
|
+
|
|
76
|
+
vec_pRef0 = __lsx_vadd_h(vec_pRef0, vec_pRef2);
|
|
77
|
+
vec_pRef4 = __lsx_vadd_h(vec_pRef4, vec_pRef6);
|
|
78
|
+
vec_pRef0 = __lsx_vadd_h(vec_pRef0, vec_pRef4);
|
|
79
|
+
vec_pRef1 = __lsx_vhaddw_wu_hu(vec_pRef0, vec_pRef0);
|
|
80
|
+
vec_pRef2 = __lsx_vhaddw_du_wu(vec_pRef1, vec_pRef1);
|
|
81
|
+
vec_pRef0 = __lsx_vhaddw_qu_du(vec_pRef2, vec_pRef2);
|
|
82
|
+
|
|
83
|
+
iSum = __lsx_vpickve2gr_w(vec_pRef0, 0);
|
|
84
|
+
return iSum;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
void SumOf8x8BlockOfFrame_lsx(uint8_t* pRefPicture, const int32_t kiWidth,
|
|
88
|
+
const int32_t kiHeight, const int32_t kiRefStride,
|
|
89
|
+
uint16_t* pFeatureOfBlock, uint32_t pTimesOfFeatureValue[]) {
|
|
90
|
+
int32_t x, y;
|
|
91
|
+
uint8_t* pRef;
|
|
92
|
+
uint16_t* pBuffer;
|
|
93
|
+
int32_t iSum;
|
|
94
|
+
for (y = 0; y < kiHeight; y++) {
|
|
95
|
+
pRef = pRefPicture + kiRefStride * y;
|
|
96
|
+
pBuffer = pFeatureOfBlock + kiWidth * y;
|
|
97
|
+
for (x = 0; x < kiWidth; x++) {
|
|
98
|
+
iSum = SumOf8x8SingleBlock_lsx(pRef + x, kiRefStride);
|
|
99
|
+
|
|
100
|
+
pBuffer[x] = iSum;
|
|
101
|
+
pTimesOfFeatureValue[iSum]++;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|