@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,615 @@
|
|
|
1
|
+
;*!
|
|
2
|
+
;* \copy
|
|
3
|
+
;* Copyright (c) 2009-2013, Cisco Systems
|
|
4
|
+
;* All rights reserved.
|
|
5
|
+
;*
|
|
6
|
+
;* Redistribution and use in source and binary forms, with or without
|
|
7
|
+
;* modification, are permitted provided that the following conditions
|
|
8
|
+
;* are met:
|
|
9
|
+
;*
|
|
10
|
+
;* * Redistributions of source code must retain the above copyright
|
|
11
|
+
;* notice, this list of conditions and the following disclaimer.
|
|
12
|
+
;*
|
|
13
|
+
;* * Redistributions in binary form must reproduce the above copyright
|
|
14
|
+
;* notice, this list of conditions and the following disclaimer in
|
|
15
|
+
;* the documentation and/or other materials provided with the
|
|
16
|
+
;* distribution.
|
|
17
|
+
;*
|
|
18
|
+
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
19
|
+
;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
20
|
+
;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
21
|
+
;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
22
|
+
;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
23
|
+
;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
24
|
+
;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
25
|
+
;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
27
|
+
;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
28
|
+
;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
29
|
+
;* POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
;*
|
|
31
|
+
;*
|
|
32
|
+
;* mb_copy.asm
|
|
33
|
+
;*
|
|
34
|
+
;* Abstract
|
|
35
|
+
;* mb_copy and mb_copy1
|
|
36
|
+
;*
|
|
37
|
+
;* History
|
|
38
|
+
;* 15/09/2009 Created
|
|
39
|
+
;* 12/28/2009 Modified with larger throughput
|
|
40
|
+
;* 12/29/2011 Tuned WelsCopy16x16NotAligned_sse2, added UpdateMbMv_sse2 WelsCopy16x8NotAligned_sse2,
|
|
41
|
+
;* WelsCopy16x8_mmx, WelsCopy8x16_mmx etc;
|
|
42
|
+
;*
|
|
43
|
+
;*
|
|
44
|
+
;*********************************************************************************************/
|
|
45
|
+
%include "asm_inc.asm"
|
|
46
|
+
|
|
47
|
+
%ifdef __NASM_VER__
|
|
48
|
+
%use smartalign
|
|
49
|
+
%endif
|
|
50
|
+
|
|
51
|
+
;***********************************************************************
|
|
52
|
+
; Macros and other preprocessor constants
|
|
53
|
+
;***********************************************************************
|
|
54
|
+
|
|
55
|
+
;***********************************************************************
|
|
56
|
+
; Code
|
|
57
|
+
;***********************************************************************
|
|
58
|
+
|
|
59
|
+
SECTION .text
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
;***********************************************************************
|
|
63
|
+
; void WelsCopy16x16_sse2( uint8_t* Dst,
|
|
64
|
+
; int32_t iStrideD,
|
|
65
|
+
; uint8_t* Src,
|
|
66
|
+
; int32_t iStrideS )
|
|
67
|
+
;***********************************************************************
|
|
68
|
+
WELS_EXTERN WelsCopy16x16_sse2
|
|
69
|
+
|
|
70
|
+
push r4
|
|
71
|
+
push r5
|
|
72
|
+
%assign push_num 2
|
|
73
|
+
LOAD_4_PARA
|
|
74
|
+
PUSH_XMM 8
|
|
75
|
+
SIGN_EXTENSION r1, r1d
|
|
76
|
+
SIGN_EXTENSION r3, r3d
|
|
77
|
+
|
|
78
|
+
lea r4, [r1+2*r1] ;ebx, [eax+2*eax] ; x3
|
|
79
|
+
lea r5, [r3+2*r3] ;edx, [ecx+2*ecx] ; x3
|
|
80
|
+
|
|
81
|
+
movdqa xmm0, [r2]
|
|
82
|
+
movdqa xmm1, [r2+r3]
|
|
83
|
+
movdqa xmm2, [r2+2*r3]
|
|
84
|
+
movdqa xmm3, [r2+r5]
|
|
85
|
+
lea r2, [r2+4*r3]
|
|
86
|
+
movdqa xmm4, [r2]
|
|
87
|
+
movdqa xmm5, [r2+r3]
|
|
88
|
+
movdqa xmm6, [r2+2*r3]
|
|
89
|
+
movdqa xmm7, [r2+r5]
|
|
90
|
+
lea r2, [r2+4*r3]
|
|
91
|
+
|
|
92
|
+
movdqa [r0], xmm0
|
|
93
|
+
movdqa [r0+r1], xmm1
|
|
94
|
+
movdqa [r0+2*r1], xmm2
|
|
95
|
+
movdqa [r0+r4], xmm3
|
|
96
|
+
lea r0, [r0+4*r1]
|
|
97
|
+
movdqa [r0], xmm4
|
|
98
|
+
movdqa [r0+r1], xmm5
|
|
99
|
+
movdqa [r0+2*r1], xmm6
|
|
100
|
+
movdqa [r0+r4], xmm7
|
|
101
|
+
lea r0, [r0+4*r1]
|
|
102
|
+
|
|
103
|
+
movdqa xmm0, [r2]
|
|
104
|
+
movdqa xmm1, [r2+r3]
|
|
105
|
+
movdqa xmm2, [r2+2*r3]
|
|
106
|
+
movdqa xmm3, [r2+r5]
|
|
107
|
+
lea r2, [r2+4*r3]
|
|
108
|
+
movdqa xmm4, [r2]
|
|
109
|
+
movdqa xmm5, [r2+r3]
|
|
110
|
+
movdqa xmm6, [r2+2*r3]
|
|
111
|
+
movdqa xmm7, [r2+r5]
|
|
112
|
+
|
|
113
|
+
movdqa [r0], xmm0
|
|
114
|
+
movdqa [r0+r1], xmm1
|
|
115
|
+
movdqa [r0+2*r1], xmm2
|
|
116
|
+
movdqa [r0+r4], xmm3
|
|
117
|
+
lea r0, [r0+4*r1]
|
|
118
|
+
movdqa [r0], xmm4
|
|
119
|
+
movdqa [r0+r1], xmm5
|
|
120
|
+
movdqa [r0+2*r1], xmm6
|
|
121
|
+
movdqa [r0+r4], xmm7
|
|
122
|
+
POP_XMM
|
|
123
|
+
LOAD_4_PARA_POP
|
|
124
|
+
pop r5
|
|
125
|
+
pop r4
|
|
126
|
+
ret
|
|
127
|
+
|
|
128
|
+
;***********************************************************************
|
|
129
|
+
; void WelsCopy16x16NotAligned_sse2( uint8_t* Dst,
|
|
130
|
+
; int32_t iStrideD,
|
|
131
|
+
; uint8_t* Src,
|
|
132
|
+
; int32_t iStrideS )
|
|
133
|
+
;***********************************************************************
|
|
134
|
+
; dst can be align with 16 bytes, but not sure about pSrc, 12/29/2011
|
|
135
|
+
WELS_EXTERN WelsCopy16x16NotAligned_sse2
|
|
136
|
+
push r4
|
|
137
|
+
push r5
|
|
138
|
+
%assign push_num 2
|
|
139
|
+
LOAD_4_PARA
|
|
140
|
+
PUSH_XMM 8
|
|
141
|
+
SIGN_EXTENSION r1, r1d
|
|
142
|
+
SIGN_EXTENSION r3, r3d
|
|
143
|
+
|
|
144
|
+
lea r4, [r1+2*r1] ;ebx, [eax+2*eax] ; x3
|
|
145
|
+
lea r5, [r3+2*r3] ;edx, [ecx+2*ecx] ; x3
|
|
146
|
+
|
|
147
|
+
movdqu xmm0, [r2]
|
|
148
|
+
movdqu xmm1, [r2+r3]
|
|
149
|
+
movdqu xmm2, [r2+2*r3]
|
|
150
|
+
movdqu xmm3, [r2+r5]
|
|
151
|
+
lea r2, [r2+4*r3]
|
|
152
|
+
movdqu xmm4, [r2]
|
|
153
|
+
movdqu xmm5, [r2+r3]
|
|
154
|
+
movdqu xmm6, [r2+2*r3]
|
|
155
|
+
movdqu xmm7, [r2+r5]
|
|
156
|
+
lea r2, [r2+4*r3]
|
|
157
|
+
|
|
158
|
+
movdqa [r0], xmm0
|
|
159
|
+
movdqa [r0+r1], xmm1
|
|
160
|
+
movdqa [r0+2*r1], xmm2
|
|
161
|
+
movdqa [r0+r4], xmm3
|
|
162
|
+
lea r0, [r0+4*r1]
|
|
163
|
+
movdqa [r0], xmm4
|
|
164
|
+
movdqa [r0+r1], xmm5
|
|
165
|
+
movdqa [r0+2*r1], xmm6
|
|
166
|
+
movdqa [r0+r4], xmm7
|
|
167
|
+
lea r0, [r0+4*r1]
|
|
168
|
+
|
|
169
|
+
movdqu xmm0, [r2]
|
|
170
|
+
movdqu xmm1, [r2+r3]
|
|
171
|
+
movdqu xmm2, [r2+2*r3]
|
|
172
|
+
movdqu xmm3, [r2+r5]
|
|
173
|
+
lea r2, [r2+4*r3]
|
|
174
|
+
movdqu xmm4, [r2]
|
|
175
|
+
movdqu xmm5, [r2+r3]
|
|
176
|
+
movdqu xmm6, [r2+2*r3]
|
|
177
|
+
movdqu xmm7, [r2+r5]
|
|
178
|
+
|
|
179
|
+
movdqa [r0], xmm0
|
|
180
|
+
movdqa [r0+r1], xmm1
|
|
181
|
+
movdqa [r0+2*r1], xmm2
|
|
182
|
+
movdqa [r0+r4], xmm3
|
|
183
|
+
lea r0, [r0+4*r1]
|
|
184
|
+
movdqa [r0], xmm4
|
|
185
|
+
movdqa [r0+r1], xmm5
|
|
186
|
+
movdqa [r0+2*r1], xmm6
|
|
187
|
+
movdqa [r0+r4], xmm7
|
|
188
|
+
POP_XMM
|
|
189
|
+
LOAD_4_PARA_POP
|
|
190
|
+
pop r5
|
|
191
|
+
pop r4
|
|
192
|
+
ret
|
|
193
|
+
|
|
194
|
+
; , 12/29/2011
|
|
195
|
+
;***********************************************************************
|
|
196
|
+
; void WelsCopy16x8NotAligned_sse2(uint8_t* Dst,
|
|
197
|
+
; int32_t iStrideD,
|
|
198
|
+
; uint8_t* Src,
|
|
199
|
+
; int32_t iStrideS )
|
|
200
|
+
;***********************************************************************
|
|
201
|
+
WELS_EXTERN WelsCopy16x8NotAligned_sse2
|
|
202
|
+
push r4
|
|
203
|
+
push r5
|
|
204
|
+
%assign push_num 2
|
|
205
|
+
LOAD_4_PARA
|
|
206
|
+
PUSH_XMM 8
|
|
207
|
+
SIGN_EXTENSION r1, r1d
|
|
208
|
+
SIGN_EXTENSION r3, r3d
|
|
209
|
+
|
|
210
|
+
lea r4, [r1+2*r1] ;ebx, [eax+2*eax] ; x3
|
|
211
|
+
lea r5, [r3+2*r3] ;edx, [ecx+2*ecx] ; x3
|
|
212
|
+
|
|
213
|
+
movdqu xmm0, [r2]
|
|
214
|
+
movdqu xmm1, [r2+r3]
|
|
215
|
+
movdqu xmm2, [r2+2*r3]
|
|
216
|
+
movdqu xmm3, [r2+r5]
|
|
217
|
+
lea r2, [r2+4*r3]
|
|
218
|
+
movdqu xmm4, [r2]
|
|
219
|
+
movdqu xmm5, [r2+r3]
|
|
220
|
+
movdqu xmm6, [r2+2*r3]
|
|
221
|
+
movdqu xmm7, [r2+r5]
|
|
222
|
+
|
|
223
|
+
movdqa [r0], xmm0
|
|
224
|
+
movdqa [r0+r1], xmm1
|
|
225
|
+
movdqa [r0+2*r1], xmm2
|
|
226
|
+
movdqa [r0+r4], xmm3
|
|
227
|
+
lea r0, [r0+4*r1]
|
|
228
|
+
movdqa [r0], xmm4
|
|
229
|
+
movdqa [r0+r1], xmm5
|
|
230
|
+
movdqa [r0+2*r1], xmm6
|
|
231
|
+
movdqa [r0+r4], xmm7
|
|
232
|
+
POP_XMM
|
|
233
|
+
LOAD_4_PARA_POP
|
|
234
|
+
pop r5
|
|
235
|
+
pop r4
|
|
236
|
+
ret
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
;***********************************************************************
|
|
240
|
+
; void WelsCopy8x16_mmx(uint8_t* Dst,
|
|
241
|
+
; int32_t iStrideD,
|
|
242
|
+
; uint8_t* Src,
|
|
243
|
+
; int32_t iStrideS )
|
|
244
|
+
;***********************************************************************
|
|
245
|
+
WELS_EXTERN WelsCopy8x16_mmx
|
|
246
|
+
%assign push_num 0
|
|
247
|
+
LOAD_4_PARA
|
|
248
|
+
SIGN_EXTENSION r1, r1d
|
|
249
|
+
SIGN_EXTENSION r3, r3d
|
|
250
|
+
|
|
251
|
+
movq mm0, [r2]
|
|
252
|
+
movq mm1, [r2+r3]
|
|
253
|
+
lea r2, [r2+2*r3]
|
|
254
|
+
movq mm2, [r2]
|
|
255
|
+
movq mm3, [r2+r3]
|
|
256
|
+
lea r2, [r2+2*r3]
|
|
257
|
+
movq mm4, [r2]
|
|
258
|
+
movq mm5, [r2+r3]
|
|
259
|
+
lea r2, [r2+2*r3]
|
|
260
|
+
movq mm6, [r2]
|
|
261
|
+
movq mm7, [r2+r3]
|
|
262
|
+
lea r2, [r2+2*r3]
|
|
263
|
+
|
|
264
|
+
movq [r0], mm0
|
|
265
|
+
movq [r0+r1], mm1
|
|
266
|
+
lea r0, [r0+2*r1]
|
|
267
|
+
movq [r0], mm2
|
|
268
|
+
movq [r0+r1], mm3
|
|
269
|
+
lea r0, [r0+2*r1]
|
|
270
|
+
movq [r0], mm4
|
|
271
|
+
movq [r0+r1], mm5
|
|
272
|
+
lea r0, [r0+2*r1]
|
|
273
|
+
movq [r0], mm6
|
|
274
|
+
movq [r0+r1], mm7
|
|
275
|
+
lea r0, [r0+2*r1]
|
|
276
|
+
|
|
277
|
+
movq mm0, [r2]
|
|
278
|
+
movq mm1, [r2+r3]
|
|
279
|
+
lea r2, [r2+2*r3]
|
|
280
|
+
movq mm2, [r2]
|
|
281
|
+
movq mm3, [r2+r3]
|
|
282
|
+
lea r2, [r2+2*r3]
|
|
283
|
+
movq mm4, [r2]
|
|
284
|
+
movq mm5, [r2+r3]
|
|
285
|
+
lea r2, [r2+2*r3]
|
|
286
|
+
movq mm6, [r2]
|
|
287
|
+
movq mm7, [r2+r3]
|
|
288
|
+
|
|
289
|
+
movq [r0], mm0
|
|
290
|
+
movq [r0+r1], mm1
|
|
291
|
+
lea r0, [r0+2*r1]
|
|
292
|
+
movq [r0], mm2
|
|
293
|
+
movq [r0+r1], mm3
|
|
294
|
+
lea r0, [r0+2*r1]
|
|
295
|
+
movq [r0], mm4
|
|
296
|
+
movq [r0+r1], mm5
|
|
297
|
+
lea r0, [r0+2*r1]
|
|
298
|
+
movq [r0], mm6
|
|
299
|
+
movq [r0+r1], mm7
|
|
300
|
+
|
|
301
|
+
WELSEMMS
|
|
302
|
+
LOAD_4_PARA_POP
|
|
303
|
+
ret
|
|
304
|
+
|
|
305
|
+
;***********************************************************************
|
|
306
|
+
; void WelsCopy8x8_mmx( uint8_t* Dst,
|
|
307
|
+
; int32_t iStrideD,
|
|
308
|
+
; uint8_t* Src,
|
|
309
|
+
; int32_t iStrideS )
|
|
310
|
+
;***********************************************************************
|
|
311
|
+
WELS_EXTERN WelsCopy8x8_mmx
|
|
312
|
+
push r4
|
|
313
|
+
%assign push_num 1
|
|
314
|
+
LOAD_4_PARA
|
|
315
|
+
SIGN_EXTENSION r1, r1d
|
|
316
|
+
SIGN_EXTENSION r3, r3d
|
|
317
|
+
lea r4, [r3+2*r3] ;edx, [ebx+2*ebx]
|
|
318
|
+
|
|
319
|
+
; to prefetch next loop
|
|
320
|
+
prefetchnta [r2+2*r3]
|
|
321
|
+
prefetchnta [r2+r4]
|
|
322
|
+
movq mm0, [r2]
|
|
323
|
+
movq mm1, [r2+r3]
|
|
324
|
+
lea r2, [r2+2*r3]
|
|
325
|
+
; to prefetch next loop
|
|
326
|
+
prefetchnta [r2+2*r3]
|
|
327
|
+
prefetchnta [r2+r4]
|
|
328
|
+
movq mm2, [r2]
|
|
329
|
+
movq mm3, [r2+r3]
|
|
330
|
+
lea r2, [r2+2*r3]
|
|
331
|
+
; to prefetch next loop
|
|
332
|
+
prefetchnta [r2+2*r3]
|
|
333
|
+
prefetchnta [r2+r4]
|
|
334
|
+
movq mm4, [r2]
|
|
335
|
+
movq mm5, [r2+r3]
|
|
336
|
+
lea r2, [r2+2*r3]
|
|
337
|
+
movq mm6, [r2]
|
|
338
|
+
movq mm7, [r2+r3]
|
|
339
|
+
|
|
340
|
+
movq [r0], mm0
|
|
341
|
+
movq [r0+r1], mm1
|
|
342
|
+
lea r0, [r0+2*r1]
|
|
343
|
+
movq [r0], mm2
|
|
344
|
+
movq [r0+r1], mm3
|
|
345
|
+
lea r0, [r0+2*r1]
|
|
346
|
+
movq [r0], mm4
|
|
347
|
+
movq [r0+r1], mm5
|
|
348
|
+
lea r0, [r0+2*r1]
|
|
349
|
+
movq [r0], mm6
|
|
350
|
+
movq [r0+r1], mm7
|
|
351
|
+
|
|
352
|
+
WELSEMMS
|
|
353
|
+
LOAD_4_PARA_POP
|
|
354
|
+
pop r4
|
|
355
|
+
ret
|
|
356
|
+
|
|
357
|
+
; (dunhuang@cisco), 12/21/2011
|
|
358
|
+
;***********************************************************************
|
|
359
|
+
; void UpdateMbMv_sse2( SMVUnitXY *pMvBuffer, const SMVUnitXY sMv )
|
|
360
|
+
;***********************************************************************
|
|
361
|
+
WELS_EXTERN UpdateMbMv_sse2
|
|
362
|
+
|
|
363
|
+
%assign push_num 0
|
|
364
|
+
LOAD_2_PARA
|
|
365
|
+
|
|
366
|
+
movd xmm0, r1d ; _mv
|
|
367
|
+
pshufd xmm1, xmm0, $00
|
|
368
|
+
movdqa [r0 ], xmm1
|
|
369
|
+
movdqa [r0+0x10], xmm1
|
|
370
|
+
movdqa [r0+0x20], xmm1
|
|
371
|
+
movdqa [r0+0x30], xmm1
|
|
372
|
+
ret
|
|
373
|
+
|
|
374
|
+
;*******************************************************************************
|
|
375
|
+
; Macros and other preprocessor constants
|
|
376
|
+
;*******************************************************************************
|
|
377
|
+
|
|
378
|
+
;*******************************************************************************
|
|
379
|
+
; Code
|
|
380
|
+
;*******************************************************************************
|
|
381
|
+
|
|
382
|
+
SECTION .text
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
;*******************************************************************************
|
|
388
|
+
; void PixelAvgWidthEq4_mmx( uint8_t *pDst, int iDstStride,
|
|
389
|
+
; uint8_t *pSrcA, int iSrcAStride,
|
|
390
|
+
; uint8_t *pSrcB, int iSrcBStride,
|
|
391
|
+
; int iHeight );
|
|
392
|
+
;*******************************************************************************
|
|
393
|
+
WELS_EXTERN PixelAvgWidthEq4_mmx
|
|
394
|
+
|
|
395
|
+
%assign push_num 0
|
|
396
|
+
LOAD_7_PARA
|
|
397
|
+
|
|
398
|
+
SIGN_EXTENSION r1, r1d
|
|
399
|
+
SIGN_EXTENSION r3, r3d
|
|
400
|
+
SIGN_EXTENSION r5, r5d
|
|
401
|
+
SIGN_EXTENSION r6, r6d
|
|
402
|
+
|
|
403
|
+
ALIGN 4
|
|
404
|
+
.height_loop:
|
|
405
|
+
movd mm0, [r4]
|
|
406
|
+
pavgb mm0, [r2]
|
|
407
|
+
movd [r0], mm0
|
|
408
|
+
|
|
409
|
+
dec r6
|
|
410
|
+
lea r0, [r0+r1]
|
|
411
|
+
lea r2, [r2+r3]
|
|
412
|
+
lea r4, [r4+r5]
|
|
413
|
+
jne .height_loop
|
|
414
|
+
|
|
415
|
+
WELSEMMS
|
|
416
|
+
LOAD_7_PARA_POP
|
|
417
|
+
ret
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
;*******************************************************************************
|
|
421
|
+
; void PixelAvgWidthEq8_mmx( uint8_t *pDst, int iDstStride,
|
|
422
|
+
; uint8_t *pSrcA, int iSrcAStride,
|
|
423
|
+
; uint8_t *pSrcB, int iSrcBStride,
|
|
424
|
+
; int iHeight );
|
|
425
|
+
;*******************************************************************************
|
|
426
|
+
WELS_EXTERN PixelAvgWidthEq8_mmx
|
|
427
|
+
%assign push_num 0
|
|
428
|
+
LOAD_7_PARA
|
|
429
|
+
|
|
430
|
+
SIGN_EXTENSION r1, r1d
|
|
431
|
+
SIGN_EXTENSION r3, r3d
|
|
432
|
+
SIGN_EXTENSION r5, r5d
|
|
433
|
+
SIGN_EXTENSION r6, r6d
|
|
434
|
+
|
|
435
|
+
ALIGN 4
|
|
436
|
+
.height_loop:
|
|
437
|
+
movq mm0, [r2]
|
|
438
|
+
pavgb mm0, [r4]
|
|
439
|
+
movq [r0], mm0
|
|
440
|
+
movq mm0, [r2+r3]
|
|
441
|
+
pavgb mm0, [r4+r5]
|
|
442
|
+
movq [r0+r1], mm0
|
|
443
|
+
|
|
444
|
+
lea r2, [r2+2*r3]
|
|
445
|
+
lea r4, [r4+2*r5]
|
|
446
|
+
lea r0, [r0+2*r1]
|
|
447
|
+
|
|
448
|
+
sub r6, 2
|
|
449
|
+
jnz .height_loop
|
|
450
|
+
|
|
451
|
+
WELSEMMS
|
|
452
|
+
LOAD_7_PARA_POP
|
|
453
|
+
ret
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
;*******************************************************************************
|
|
458
|
+
; void PixelAvgWidthEq16_sse2( uint8_t *pDst, int iDstStride,
|
|
459
|
+
; uint8_t *pSrcA, int iSrcAStride,
|
|
460
|
+
; uint8_t *pSrcB, int iSrcBStride,
|
|
461
|
+
; int iHeight );
|
|
462
|
+
;*******************************************************************************
|
|
463
|
+
WELS_EXTERN PixelAvgWidthEq16_sse2
|
|
464
|
+
|
|
465
|
+
%assign push_num 0
|
|
466
|
+
LOAD_7_PARA
|
|
467
|
+
SIGN_EXTENSION r1, r1d
|
|
468
|
+
SIGN_EXTENSION r3, r3d
|
|
469
|
+
SIGN_EXTENSION r5, r5d
|
|
470
|
+
SIGN_EXTENSION r6, r6d
|
|
471
|
+
ALIGN 4
|
|
472
|
+
.height_loop:
|
|
473
|
+
movdqu xmm0, [r2]
|
|
474
|
+
movdqu xmm1, [r4]
|
|
475
|
+
pavgb xmm0, xmm1
|
|
476
|
+
;pavgb xmm0, [r4]
|
|
477
|
+
movdqu [r0], xmm0
|
|
478
|
+
|
|
479
|
+
movdqu xmm0, [r2+r3]
|
|
480
|
+
movdqu xmm1, [r4+r5]
|
|
481
|
+
pavgb xmm0, xmm1
|
|
482
|
+
movdqu [r0+r1], xmm0
|
|
483
|
+
|
|
484
|
+
movdqu xmm0, [r2+2*r3]
|
|
485
|
+
movdqu xmm1, [r4+2*r5]
|
|
486
|
+
pavgb xmm0, xmm1
|
|
487
|
+
movdqu [r0+2*r1], xmm0
|
|
488
|
+
|
|
489
|
+
lea r2, [r2+2*r3]
|
|
490
|
+
lea r4, [r4+2*r5]
|
|
491
|
+
lea r0, [r0+2*r1]
|
|
492
|
+
|
|
493
|
+
movdqu xmm0, [r2+r3]
|
|
494
|
+
movdqu xmm1, [r4+r5]
|
|
495
|
+
pavgb xmm0, xmm1
|
|
496
|
+
movdqu [r0+r1], xmm0
|
|
497
|
+
|
|
498
|
+
lea r2, [r2+2*r3]
|
|
499
|
+
lea r4, [r4+2*r5]
|
|
500
|
+
lea r0, [r0+2*r1]
|
|
501
|
+
|
|
502
|
+
sub r6, 4
|
|
503
|
+
jne .height_loop
|
|
504
|
+
|
|
505
|
+
WELSEMMS
|
|
506
|
+
LOAD_7_PARA_POP
|
|
507
|
+
ret
|
|
508
|
+
|
|
509
|
+
; load_instr=%1 store_instr=%2 p_dst=%3 i_dststride=%4 p_src=%5 i_srcstride=%6 cnt=%7 r_tmp=%8,%9 mm_tmp=%10,%11
|
|
510
|
+
%macro CopyStrided4N 11
|
|
511
|
+
lea %8, [3 * %6]
|
|
512
|
+
lea %9, [3 * %4]
|
|
513
|
+
ALIGN 32
|
|
514
|
+
%%loop:
|
|
515
|
+
%1 %10, [%5]
|
|
516
|
+
%1 %11, [%5 + %6]
|
|
517
|
+
%2 [%3], %10
|
|
518
|
+
%2 [%3 + %4], %11
|
|
519
|
+
%1 %10, [%5 + 2 * %6]
|
|
520
|
+
%1 %11, [%5 + %8]
|
|
521
|
+
%2 [%3 + 2 * %4], %10
|
|
522
|
+
%2 [%3 + %9], %11
|
|
523
|
+
lea %5, [%5 + 4 * %6]
|
|
524
|
+
lea %3, [%3 + 4 * %4]
|
|
525
|
+
sub %7, 4
|
|
526
|
+
jg %%loop
|
|
527
|
+
%endmacro
|
|
528
|
+
|
|
529
|
+
;*******************************************************************************
|
|
530
|
+
; void McCopyWidthEq8_mmx( uint8_t *pSrc, int iSrcStride,
|
|
531
|
+
; uint8_t *pDst, int iDstStride, int iHeight )
|
|
532
|
+
;*******************************************************************************
|
|
533
|
+
WELS_EXTERN McCopyWidthEq8_mmx
|
|
534
|
+
%assign push_num 0
|
|
535
|
+
%ifdef X86_32
|
|
536
|
+
push r5
|
|
537
|
+
push r6
|
|
538
|
+
%assign push_num 2
|
|
539
|
+
%endif
|
|
540
|
+
LOAD_5_PARA
|
|
541
|
+
|
|
542
|
+
SIGN_EXTENSION r1, r1d
|
|
543
|
+
SIGN_EXTENSION r3, r3d
|
|
544
|
+
SIGN_EXTENSION r4, r4d
|
|
545
|
+
|
|
546
|
+
CopyStrided4N movq, movq, r2, r3, r0, r1, r4, r5, r6, mm0, mm1
|
|
547
|
+
|
|
548
|
+
WELSEMMS
|
|
549
|
+
LOAD_5_PARA_POP
|
|
550
|
+
%ifdef X86_32
|
|
551
|
+
pop r6
|
|
552
|
+
pop r5
|
|
553
|
+
%endif
|
|
554
|
+
ret
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
;*******************************************************************************
|
|
558
|
+
; void McCopyWidthEq16_sse2( uint8_t *pSrc, int iSrcStride, uint8_t *pDst, int iDstStride, int iHeight )
|
|
559
|
+
;*******************************************************************************
|
|
560
|
+
;read unaligned memory
|
|
561
|
+
%macro SSE_READ_UNA 2
|
|
562
|
+
movq %1, [%2]
|
|
563
|
+
movhps %1, [%2+8]
|
|
564
|
+
%endmacro
|
|
565
|
+
|
|
566
|
+
;write unaligned memory
|
|
567
|
+
%macro SSE_WRITE_UNA 2
|
|
568
|
+
movq [%1], %2
|
|
569
|
+
movhps [%1+8], %2
|
|
570
|
+
%endmacro
|
|
571
|
+
WELS_EXTERN McCopyWidthEq16_sse2
|
|
572
|
+
%assign push_num 0
|
|
573
|
+
LOAD_5_PARA
|
|
574
|
+
SIGN_EXTENSION r1, r1d
|
|
575
|
+
SIGN_EXTENSION r3, r3d
|
|
576
|
+
SIGN_EXTENSION r4, r4d
|
|
577
|
+
ALIGN 4
|
|
578
|
+
.height_loop:
|
|
579
|
+
SSE_READ_UNA xmm0, r0
|
|
580
|
+
SSE_READ_UNA xmm1, r0+r1
|
|
581
|
+
SSE_WRITE_UNA r2, xmm0
|
|
582
|
+
SSE_WRITE_UNA r2+r3, xmm1
|
|
583
|
+
|
|
584
|
+
sub r4, 2
|
|
585
|
+
lea r0, [r0+r1*2]
|
|
586
|
+
lea r2, [r2+r3*2]
|
|
587
|
+
jnz .height_loop
|
|
588
|
+
|
|
589
|
+
LOAD_5_PARA_POP
|
|
590
|
+
ret
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
;*******************************************************************************
|
|
594
|
+
; void McCopyWidthEq16_sse3( uint8_t *pSrc, int iSrcStride, uint8_t *pDst, int iDstStride, int iHeight )
|
|
595
|
+
;*******************************************************************************
|
|
596
|
+
WELS_EXTERN McCopyWidthEq16_sse3
|
|
597
|
+
%assign push_num 0
|
|
598
|
+
%ifdef X86_32
|
|
599
|
+
push r5
|
|
600
|
+
push r6
|
|
601
|
+
%assign push_num 2
|
|
602
|
+
%endif
|
|
603
|
+
LOAD_5_PARA
|
|
604
|
+
SIGN_EXTENSION r1, r1d
|
|
605
|
+
SIGN_EXTENSION r3, r3d
|
|
606
|
+
SIGN_EXTENSION r4, r4d
|
|
607
|
+
|
|
608
|
+
CopyStrided4N lddqu, MOVDQ, r2, r3, r0, r1, r4, r5, r6, xmm0, xmm1
|
|
609
|
+
|
|
610
|
+
LOAD_5_PARA_POP
|
|
611
|
+
%ifdef X86_32
|
|
612
|
+
pop r6
|
|
613
|
+
pop r5
|
|
614
|
+
%endif
|
|
615
|
+
ret
|