@scrypted/libav 1.0.180 → 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 +3 -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,112 @@
|
|
|
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 intra_pred_com_lasx.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
|
+
void WelsIChromaPredV_lasx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride) {
|
|
48
|
+
__m256i vec_kuiSrc64 = __lasx_xvldrepl_d (pRef - kiStride, 0);
|
|
49
|
+
|
|
50
|
+
__lasx_xvst(vec_kuiSrc64, pPred, 0);
|
|
51
|
+
__lasx_xvst(vec_kuiSrc64, pPred, 32);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void WelsIChromaPredH_lasx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride) {
|
|
55
|
+
__m256i vec_kuiSrc0, vec_kuiSrc1;
|
|
56
|
+
int32_t iStride_x2 = (kiStride << 1);
|
|
57
|
+
int32_t iStride_x3 = (kiStride << 1) + kiStride;
|
|
58
|
+
int32_t iStride_x4 = (kiStride << 2);
|
|
59
|
+
|
|
60
|
+
pRef -= 1;
|
|
61
|
+
vec_kuiSrc0 = __lasx_xvldrepl_b(pRef + kiStride, 0);
|
|
62
|
+
vec_kuiSrc1 = __lasx_xvldrepl_b(pRef, 0);
|
|
63
|
+
vec_kuiSrc0 = __lasx_xvilvl_d(vec_kuiSrc0, vec_kuiSrc1);
|
|
64
|
+
__lasx_xvst(vec_kuiSrc0, pPred, 0);
|
|
65
|
+
|
|
66
|
+
vec_kuiSrc0 = __lasx_xvldrepl_b(pRef + iStride_x3, 0);
|
|
67
|
+
vec_kuiSrc1 = __lasx_xvldrepl_b(pRef + iStride_x2, 0);
|
|
68
|
+
vec_kuiSrc0 = __lasx_xvilvl_d(vec_kuiSrc0, vec_kuiSrc1);
|
|
69
|
+
__lasx_xvst(vec_kuiSrc0, pPred, 16);
|
|
70
|
+
|
|
71
|
+
pRef += iStride_x4;
|
|
72
|
+
vec_kuiSrc0 = __lasx_xvldrepl_b(pRef + kiStride, 0);
|
|
73
|
+
vec_kuiSrc1 = __lasx_xvldrepl_b(pRef, 0);
|
|
74
|
+
vec_kuiSrc0 = __lasx_xvilvl_d(vec_kuiSrc0, vec_kuiSrc1);
|
|
75
|
+
__lasx_xvst(vec_kuiSrc0, pPred, 32);
|
|
76
|
+
|
|
77
|
+
vec_kuiSrc0 = __lasx_xvldrepl_b(pRef + iStride_x3, 0);
|
|
78
|
+
vec_kuiSrc1 = __lasx_xvldrepl_b(pRef + iStride_x2, 0);
|
|
79
|
+
vec_kuiSrc0 = __lasx_xvilvl_d(vec_kuiSrc0, vec_kuiSrc1);
|
|
80
|
+
__lasx_xvst(vec_kuiSrc0, pPred, 48);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
void WelsIChromaPredDc_lasx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride) {
|
|
84
|
+
const int32_t kuiL1 = kiStride - 1;
|
|
85
|
+
const int32_t kuiL2 = kuiL1 + kiStride;
|
|
86
|
+
const int32_t kuiL3 = kuiL2 + kiStride;
|
|
87
|
+
const int32_t kuiL4 = kuiL3 + kiStride;
|
|
88
|
+
const int32_t kuiL5 = kuiL4 + kiStride;
|
|
89
|
+
const int32_t kuiL6 = kuiL5 + kiStride;
|
|
90
|
+
const int32_t kuiL7 = kuiL6 + kiStride;
|
|
91
|
+
/*caculate the iMean value*/
|
|
92
|
+
const uint8_t kuiMean1 = (pRef[-kiStride] + pRef[1 - kiStride] + pRef[2 - kiStride] +
|
|
93
|
+
pRef[3 - kiStride] + pRef[-1] + pRef[kuiL1] + pRef[kuiL2] +
|
|
94
|
+
pRef[kuiL3] + 4) >> 3;
|
|
95
|
+
const uint32_t kuiSum2 = pRef[4 - kiStride] + pRef[5 - kiStride] + pRef[6 - kiStride]
|
|
96
|
+
+ pRef[7 - kiStride];
|
|
97
|
+
const uint32_t kuiSum3 = pRef[kuiL4] + pRef[kuiL5] + pRef[kuiL6] + pRef[kuiL7];
|
|
98
|
+
const uint8_t kuiMean2 = (kuiSum2 + 2) >> 2;
|
|
99
|
+
const uint8_t kuiMean3 = (kuiSum3 + 2) >> 2;
|
|
100
|
+
const uint8_t kuiMean4 = (kuiSum2 + kuiSum3 + 4) >> 3;
|
|
101
|
+
|
|
102
|
+
const uint8_t kuiTopMean[8] = {kuiMean1, kuiMean1, kuiMean1, kuiMean1, kuiMean2,
|
|
103
|
+
kuiMean2, kuiMean2, kuiMean2};
|
|
104
|
+
const uint8_t kuiBottomMean[8] = {kuiMean3, kuiMean3, kuiMean3, kuiMean3, kuiMean4,
|
|
105
|
+
kuiMean4, kuiMean4, kuiMean4};
|
|
106
|
+
|
|
107
|
+
__m256i vec_kuiTopMean64 = __lasx_xvldrepl_d(kuiTopMean, 0);
|
|
108
|
+
__m256i vec_kuiBottomMean64 = __lasx_xvldrepl_d(kuiBottomMean, 0);
|
|
109
|
+
|
|
110
|
+
__lasx_xvst(vec_kuiTopMean64, pPred, 0);
|
|
111
|
+
__lasx_xvst(vec_kuiBottomMean64, pPred, 32);
|
|
112
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
*
|
|
36
|
+
* \file intra_pred_com_lsx.c
|
|
37
|
+
*
|
|
38
|
+
* \brief Loongson optimization
|
|
39
|
+
*
|
|
40
|
+
* \date 03/03/2022 Created
|
|
41
|
+
*
|
|
42
|
+
*************************************************************************************
|
|
43
|
+
*/
|
|
44
|
+
#include <stdint.h>
|
|
45
|
+
#include "loongson_intrinsics.h"
|
|
46
|
+
|
|
47
|
+
void WelsI16x16LumaPredV_lsx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride) {
|
|
48
|
+
const int8_t* kpSrc = (int8_t*)&pRef[-kiStride];
|
|
49
|
+
const uint64_t kuiT1 = *(uint64_t*)kpSrc;
|
|
50
|
+
const uint64_t kuiT2 = *(uint64_t*)(kpSrc + 8);
|
|
51
|
+
uint8_t* pDst = pPred;
|
|
52
|
+
__m128i kuiT_vec, kuiT1_vec, kuiT2_vec;
|
|
53
|
+
|
|
54
|
+
kuiT1_vec = __lsx_vreplgr2vr_d(kuiT1);
|
|
55
|
+
kuiT2_vec = __lsx_vreplgr2vr_d(kuiT2);
|
|
56
|
+
kuiT_vec = __lsx_vpackev_d(kuiT2_vec, kuiT1_vec);
|
|
57
|
+
|
|
58
|
+
__lsx_vst(kuiT_vec, pDst, 0);
|
|
59
|
+
__lsx_vstx(kuiT_vec, pDst, 16);
|
|
60
|
+
__lsx_vstx(kuiT_vec, pDst, 32);
|
|
61
|
+
__lsx_vstx(kuiT_vec, pDst, 48);
|
|
62
|
+
__lsx_vstx(kuiT_vec, pDst, 64);
|
|
63
|
+
__lsx_vstx(kuiT_vec, pDst, 80);
|
|
64
|
+
__lsx_vstx(kuiT_vec, pDst, 96);
|
|
65
|
+
__lsx_vstx(kuiT_vec, pDst, 112);
|
|
66
|
+
__lsx_vstx(kuiT_vec, pDst, 128);
|
|
67
|
+
__lsx_vstx(kuiT_vec, pDst, 144);
|
|
68
|
+
__lsx_vstx(kuiT_vec, pDst, 160);
|
|
69
|
+
__lsx_vstx(kuiT_vec, pDst, 176);
|
|
70
|
+
__lsx_vstx(kuiT_vec, pDst, 192);
|
|
71
|
+
__lsx_vstx(kuiT_vec, pDst, 208);
|
|
72
|
+
__lsx_vstx(kuiT_vec, pDst, 224);
|
|
73
|
+
__lsx_vstx(kuiT_vec, pDst, 240);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void WelsI16x16LumaPredH_lsx (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride) {
|
|
77
|
+
int32_t iStridex15 = (kiStride << 4) - kiStride;
|
|
78
|
+
int32_t iPredStride = 16;
|
|
79
|
+
int32_t iPredStridex15 = 240; //(iPredStride<<4)-iPredStride;
|
|
80
|
+
uint8_t i = 15;
|
|
81
|
+
__m128i kuiV64_vec;
|
|
82
|
+
|
|
83
|
+
do {
|
|
84
|
+
const uint8_t kuiSrc8 = pRef[iStridex15 - 1];
|
|
85
|
+
kuiV64_vec = __lsx_vreplgr2vr_b(kuiSrc8);
|
|
86
|
+
__lsx_vstx(kuiV64_vec, pPred, iPredStridex15);
|
|
87
|
+
|
|
88
|
+
iStridex15 -= kiStride;
|
|
89
|
+
iPredStridex15 -= iPredStride;
|
|
90
|
+
} while (i-- > 0);
|
|
91
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
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 mc_chroma_lsx.c
|
|
36
|
+
*
|
|
37
|
+
* \brief Loongson optimization
|
|
38
|
+
*
|
|
39
|
+
* \date 12/23/2021 Created
|
|
40
|
+
*
|
|
41
|
+
**********************************************************************************
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
#include "stdint.h"
|
|
45
|
+
#include "loongson_intrinsics.h"
|
|
46
|
+
|
|
47
|
+
void McCopyWidthEq4_lsx(const uint8_t *pSrc, int iSrcStride,
|
|
48
|
+
uint8_t *pDst, int iDstStride, int iHeight) {
|
|
49
|
+
__m128i src0, src1;
|
|
50
|
+
int iSrcStride_x2 = iSrcStride << 1;
|
|
51
|
+
int iDstStride_x2 = iDstStride << 1;
|
|
52
|
+
iHeight = iHeight >> 1;
|
|
53
|
+
for (int i = 0; i < iHeight; i++) {
|
|
54
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0, src1);
|
|
55
|
+
__lsx_vstelm_w(src0, pDst, 0, 0);
|
|
56
|
+
__lsx_vstelm_w(src1, pDst + iDstStride, 0, 0);
|
|
57
|
+
pSrc += iSrcStride_x2;
|
|
58
|
+
pDst += iDstStride_x2;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
void McCopyWidthEq8_lsx(const uint8_t *pSrc, int iSrcStride,
|
|
63
|
+
uint8_t *pDst, int iDstStride, int iHeight) {
|
|
64
|
+
__m128i src0, src1;
|
|
65
|
+
int iSrcStride_x2 = iSrcStride << 1;
|
|
66
|
+
int iDstStride_x2 = iDstStride << 1;
|
|
67
|
+
iHeight = iHeight >> 1;
|
|
68
|
+
for (int i = 0; i < iHeight; i++) {
|
|
69
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0, src1);
|
|
70
|
+
__lsx_vstelm_d(src0, pDst, 0, 0);
|
|
71
|
+
__lsx_vstelm_d(src1, pDst + iDstStride, 0, 0);
|
|
72
|
+
pSrc += iSrcStride_x2;
|
|
73
|
+
pDst += iDstStride_x2;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void McCopyWidthEq16_lsx(const uint8_t *pSrc, int iSrcStride,
|
|
78
|
+
uint8_t *pDst, int iDstStride, int iHeight) {
|
|
79
|
+
__m128i src0, src1;
|
|
80
|
+
int iSrcStride_x2 = iSrcStride << 1;
|
|
81
|
+
int iDstStride_x2 = iDstStride << 1;
|
|
82
|
+
iHeight = iHeight >> 1;
|
|
83
|
+
for (int i = 0; i < iHeight; i++) {
|
|
84
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0, src1);
|
|
85
|
+
__lsx_vst(src0, pDst, 0);
|
|
86
|
+
__lsx_vstx(src1, pDst, iDstStride);
|
|
87
|
+
pSrc += iSrcStride_x2;
|
|
88
|
+
pDst += iDstStride_x2;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
void McChromaWidthEq4_lsx(const uint8_t *pSrc, int32_t iSrcStride, uint8_t *pDst,
|
|
93
|
+
int32_t iDstStride, const uint8_t *pABCD, int32_t iHeight) {
|
|
94
|
+
int32_t i;
|
|
95
|
+
int8_t iA, iB, iC, iD;
|
|
96
|
+
uint16_t iFillData;
|
|
97
|
+
int32_t iSrcStride_x2 = iSrcStride << 1;
|
|
98
|
+
int32_t iDstStride_x2 = iDstStride << 1;
|
|
99
|
+
__m128i paramAB, paramCD, paramConst;
|
|
100
|
+
__m128i src0, src1, src2, src0Even, src1Even, src2Even;
|
|
101
|
+
__m128i out0, outNext0, out1, outNext1;
|
|
102
|
+
__m128i shift;
|
|
103
|
+
|
|
104
|
+
iA = pABCD[0];
|
|
105
|
+
iB = pABCD[1];
|
|
106
|
+
iC = pABCD[2];
|
|
107
|
+
iD = pABCD[3];
|
|
108
|
+
|
|
109
|
+
iFillData = (iB << 8) | iA;
|
|
110
|
+
paramAB = __lsx_vreplgr2vr_h(iFillData);
|
|
111
|
+
iFillData = (iD << 8) | iC;
|
|
112
|
+
paramCD = __lsx_vreplgr2vr_h(iFillData);
|
|
113
|
+
paramConst = __lsx_vreplgr2vr_h(32);
|
|
114
|
+
shift = __lsx_vreplgr2vr_h(6);
|
|
115
|
+
iHeight = iHeight >> 1;
|
|
116
|
+
|
|
117
|
+
for (i = 0; i < iHeight; i++) {
|
|
118
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0, src1);
|
|
119
|
+
src2 = __lsx_vld(pSrc + iSrcStride_x2, 0);
|
|
120
|
+
pSrc += 1;
|
|
121
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0Even, src1Even);
|
|
122
|
+
src2Even = __lsx_vld(pSrc + iSrcStride_x2, 0);
|
|
123
|
+
pSrc -= 1;
|
|
124
|
+
|
|
125
|
+
DUP2_ARG2(__lsx_vilvl_w, src0Even, src0, src1Even, src1, src0, src1);
|
|
126
|
+
src2 = __lsx_vilvl_w(src2Even, src2);
|
|
127
|
+
DUP4_ARG2(__lsx_vdp2_h_bu, src0, paramAB, src1, paramCD, src1, paramAB, src2,
|
|
128
|
+
paramCD, out0, outNext0, out1, outNext1);
|
|
129
|
+
DUP4_ARG2(__lsx_vadd_h, out0, outNext0, out0, paramConst, out1, outNext1, out1,
|
|
130
|
+
paramConst, out0, out0, out1, out1);
|
|
131
|
+
DUP2_ARG2(__lsx_vsrl_h, out0, shift, out1, shift, out0, out1);
|
|
132
|
+
DUP2_ARG2(__lsx_vsrl_d, out0, paramConst, out1, paramConst, outNext0, outNext1);
|
|
133
|
+
DUP2_ARG2(__lsx_vpackev_b, outNext0, out0, outNext1, out1, out0, out1);
|
|
134
|
+
__lsx_vstelm_w(out0, pDst, 0, 0);
|
|
135
|
+
__lsx_vstelm_w(out1, pDst + iDstStride, 0, 0);
|
|
136
|
+
|
|
137
|
+
pDst += iDstStride_x2;
|
|
138
|
+
pSrc += iSrcStride_x2;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
void McChromaWidthEq8_lsx(const uint8_t *pSrc, int32_t iSrcStride, uint8_t *pDst,
|
|
143
|
+
int32_t iDstStride, const uint8_t *pABCD, int32_t iHeight) {
|
|
144
|
+
int32_t i;
|
|
145
|
+
int8_t iA, iB, iC, iD;
|
|
146
|
+
uint16_t iFillData;
|
|
147
|
+
int32_t iSrcStride_x2 = iSrcStride << 1;
|
|
148
|
+
int32_t iDstStride_x2 = iDstStride << 1;
|
|
149
|
+
__m128i paramAB, paramCD, paramConst;
|
|
150
|
+
__m128i src0, src1, src2, src0Even, src1Even, src2Even;
|
|
151
|
+
__m128i out0, outNext0, out1, outNext1;
|
|
152
|
+
__m128i shift;
|
|
153
|
+
|
|
154
|
+
iA = pABCD[0];
|
|
155
|
+
iB = pABCD[1];
|
|
156
|
+
iC = pABCD[2];
|
|
157
|
+
iD = pABCD[3];
|
|
158
|
+
|
|
159
|
+
iFillData = (iB << 8) | iA;
|
|
160
|
+
paramAB = __lsx_vreplgr2vr_h(iFillData);
|
|
161
|
+
iFillData = (iD << 8) | iC;
|
|
162
|
+
paramCD = __lsx_vreplgr2vr_h(iFillData);
|
|
163
|
+
paramConst = __lsx_vreplgr2vr_h(32);
|
|
164
|
+
shift = __lsx_vreplgr2vr_h(6);
|
|
165
|
+
iHeight = iHeight >> 1;
|
|
166
|
+
|
|
167
|
+
for (i = 0; i < iHeight; i++) {
|
|
168
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0, src1);
|
|
169
|
+
src2 = __lsx_vld(pSrc + iSrcStride_x2, 0);
|
|
170
|
+
pSrc += 1;
|
|
171
|
+
DUP2_ARG2(__lsx_vld, pSrc, 0, pSrc + iSrcStride, 0, src0Even, src1Even);
|
|
172
|
+
src2Even = __lsx_vld(pSrc + iSrcStride_x2, 0);
|
|
173
|
+
pSrc -= 1;
|
|
174
|
+
|
|
175
|
+
DUP2_ARG2(__lsx_vilvl_d, src0Even, src0, src1Even, src1, src0, src1);
|
|
176
|
+
src2 = __lsx_vilvl_d(src2Even, src2);
|
|
177
|
+
DUP4_ARG2(__lsx_vdp2_h_bu, src0, paramAB, src1, paramCD, src1, paramAB, src2,
|
|
178
|
+
paramCD, out0, outNext0, out1, outNext1);
|
|
179
|
+
DUP4_ARG2(__lsx_vadd_h, out0, outNext0, out0, paramConst, out1, outNext1, out1,
|
|
180
|
+
paramConst, out0, out0, out1, out1);
|
|
181
|
+
DUP2_ARG2(__lsx_vsrl_h, out0, shift, out1, shift, out0, out1);
|
|
182
|
+
|
|
183
|
+
DUP2_ARG2(__lsx_vilvh_d, out0, out0, out1, out1, outNext0, outNext1);
|
|
184
|
+
DUP2_ARG2(__lsx_vpackev_b, outNext0, out0, outNext1, out1, out0, out1);
|
|
185
|
+
|
|
186
|
+
__lsx_vstelm_d(out0, pDst, 0, 0);
|
|
187
|
+
__lsx_vstelm_d(out1, pDst + iDstStride, 0, 0);
|
|
188
|
+
|
|
189
|
+
pDst += iDstStride_x2;
|
|
190
|
+
pSrc += iSrcStride_x2;
|
|
191
|
+
}
|
|
192
|
+
}
|