@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,735 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* \copy
|
|
3
|
+
* Copyright (c) 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
|
+
|
|
33
|
+
#ifdef HAVE_NEON
|
|
34
|
+
#include "arm_arch_common_macro.S"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
//The data sequence will be used
|
|
38
|
+
.macro GET_8BYTE_DATA_L0 arg0, arg1, arg2
|
|
39
|
+
vld1.8 {\arg0[0]}, [\arg1], \arg2
|
|
40
|
+
vld1.8 {\arg0[1]}, [\arg1], \arg2
|
|
41
|
+
vld1.8 {\arg0[2]}, [\arg1], \arg2
|
|
42
|
+
vld1.8 {\arg0[3]}, [\arg1], \arg2
|
|
43
|
+
vld1.8 {\arg0[4]}, [\arg1], \arg2
|
|
44
|
+
vld1.8 {\arg0[5]}, [\arg1], \arg2
|
|
45
|
+
vld1.8 {\arg0[6]}, [\arg1], \arg2
|
|
46
|
+
vld1.8 {\arg0[7]}, [\arg1], \arg2
|
|
47
|
+
.endm
|
|
48
|
+
|
|
49
|
+
.macro HDM_TRANSFORM_4X4_L0 arg0, arg1, arg2,arg3, arg4, arg5, arg6, arg7, arg8
|
|
50
|
+
|
|
51
|
+
//Do the vertical transform
|
|
52
|
+
vaddl.u8 q0, \arg0, \arg1 //{0,4,8,12,1,5,9,13}
|
|
53
|
+
vsubl.u8 q1, \arg0, \arg1 //{2,6,10,14,3,7,11,15}
|
|
54
|
+
vswp d1, d2
|
|
55
|
+
vadd.s16 q2, q0, q1 //{0,1,2,3,4,5,6,7}
|
|
56
|
+
vsub.s16 q1, q0, q1 //{12,13,14,15,8,9,10,11}
|
|
57
|
+
|
|
58
|
+
//Do the horizontal transform
|
|
59
|
+
vtrn.32 q2, q1
|
|
60
|
+
vadd.s16 q0, q2, q1
|
|
61
|
+
vsub.s16 q1, q2, q1
|
|
62
|
+
|
|
63
|
+
vtrn.16 q0, q1
|
|
64
|
+
vadd.s16 q2, q0, q1
|
|
65
|
+
vsub.s16 q1, q0, q1
|
|
66
|
+
|
|
67
|
+
vmov.s16 d0, d4
|
|
68
|
+
vmov.s16 d1, d2
|
|
69
|
+
|
|
70
|
+
vabs.s16 d3, d3
|
|
71
|
+
|
|
72
|
+
//16x16_v
|
|
73
|
+
vtrn.32 d0, d1 //{0,1,3,2}
|
|
74
|
+
vaba.s16 \arg5, d0, \arg2 //16x16_v
|
|
75
|
+
vaba.s16 \arg5, d1, \arg8
|
|
76
|
+
vaba.s16 \arg5, d5, \arg8
|
|
77
|
+
vadd.u16 \arg5, d3
|
|
78
|
+
|
|
79
|
+
//16x16_h
|
|
80
|
+
vtrn.16 d4, d5 //{0,4,12,8}
|
|
81
|
+
vaba.s16 \arg6, d4, \arg3 //16x16_h
|
|
82
|
+
vabs.s16 d2, d2
|
|
83
|
+
vabs.s16 d5, d5
|
|
84
|
+
vadd.u16 d2, d3
|
|
85
|
+
vadd.u16 d2, d5
|
|
86
|
+
vadd.u16 \arg6, d2
|
|
87
|
+
|
|
88
|
+
//16x16_dc_both
|
|
89
|
+
vaba.s16 \arg7, d4, \arg4 //16x16_dc_both
|
|
90
|
+
vadd.u16 \arg7, d2
|
|
91
|
+
.endm
|
|
92
|
+
|
|
93
|
+
WELS_ASM_FUNC_BEGIN WelsIntra16x16Combined3Satd_neon
|
|
94
|
+
stmdb sp!, {r4-r7, lr}
|
|
95
|
+
vpush {q4-q7}
|
|
96
|
+
|
|
97
|
+
//Get the top line data to 'q15'(16 bytes)
|
|
98
|
+
sub r7, r0, r1
|
|
99
|
+
vld1.8 {q15}, [r7]
|
|
100
|
+
|
|
101
|
+
//Get the left colume data to 'q14' (16 bytes)
|
|
102
|
+
sub r7, r0, #1
|
|
103
|
+
GET_8BYTE_DATA_L0 d28, r7, r1
|
|
104
|
+
GET_8BYTE_DATA_L0 d29, r7, r1
|
|
105
|
+
|
|
106
|
+
//Calculate the mean value and save to 'q13->d27(reserve the d26)' (2 bytes)
|
|
107
|
+
//Calculate the 16x16_dc_both mode SATD
|
|
108
|
+
vaddl.u8 q0, d30, d31
|
|
109
|
+
vaddl.u8 q1, d28, d29
|
|
110
|
+
vadd.u16 q0, q1
|
|
111
|
+
vadd.u16 d0, d1
|
|
112
|
+
vpaddl.u16 d0, d0
|
|
113
|
+
vpaddl.u32 d0, d0
|
|
114
|
+
|
|
115
|
+
//Calculate the mean value
|
|
116
|
+
vrshr.u16 d0, #5
|
|
117
|
+
vshl.u16 d27, d0, #4
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
//Calculate the 16x16_v mode SATD and save to "q11, 12"
|
|
121
|
+
vshll.u8 q0, d30, #2
|
|
122
|
+
vshll.u8 q1, d31, #2
|
|
123
|
+
vtrn.32 q0, q1
|
|
124
|
+
vadd.s16 q2, q0, q1
|
|
125
|
+
vsub.s16 q1, q0, q1
|
|
126
|
+
vtrn.16 q2, q1
|
|
127
|
+
vadd.s16 q12, q2, q1
|
|
128
|
+
vsub.s16 q11, q2, q1
|
|
129
|
+
vtrn.32 q12, q11 //{0,1,3,2, 4,5,7,6} q12
|
|
130
|
+
//{8,9,11,10, 12,13,15,14} q11
|
|
131
|
+
//Calculate the 16x16_h mode SATD and save to "q9, q10"
|
|
132
|
+
vshll.u8 q0, d28, #2
|
|
133
|
+
vshll.u8 q1, d29, #2
|
|
134
|
+
vtrn.32 q0, q1
|
|
135
|
+
vadd.s16 q2, q0, q1
|
|
136
|
+
vsub.s16 q1, q0, q1
|
|
137
|
+
vtrn.16 q2, q1
|
|
138
|
+
vadd.s16 q10, q2, q1
|
|
139
|
+
vsub.s16 q9, q2, q1
|
|
140
|
+
vtrn.32 q10, q9 //{0,1,3,2, 4,5,7,6} q10
|
|
141
|
+
//{8,9,11,10, 12,13,15,14} q9
|
|
142
|
+
|
|
143
|
+
vmov.i32 d17, #0//Save the SATD of DC_BOTH
|
|
144
|
+
vmov.i32 d16, #0//Save the SATD of H
|
|
145
|
+
vmov.i32 d15, #0//Save the SATD of V
|
|
146
|
+
vmov.i32 d14, #0//For zero D register
|
|
147
|
+
//Load the p_enc data and save to "q3 ~ q6"--- 16X4 bytes
|
|
148
|
+
vld1.32 {q3}, [r2], r3
|
|
149
|
+
vld1.32 {q4}, [r2], r3
|
|
150
|
+
vld1.32 {q5}, [r2], r3
|
|
151
|
+
vld1.32 {q6}, [r2], r3
|
|
152
|
+
vtrn.32 q3, q4
|
|
153
|
+
vtrn.32 q5, q6
|
|
154
|
+
|
|
155
|
+
HDM_TRANSFORM_4X4_L0 d6, d10, d24, d20, d27, d15, d16, d17, d14
|
|
156
|
+
HDM_TRANSFORM_4X4_L0 d7, d11, d22, d20, d27, d15, d16, d17, d14
|
|
157
|
+
HDM_TRANSFORM_4X4_L0 d8, d12, d25, d20, d27, d15, d16, d17, d14
|
|
158
|
+
HDM_TRANSFORM_4X4_L0 d9, d13, d23, d20, d27, d15, d16, d17, d14
|
|
159
|
+
|
|
160
|
+
//Load the p_enc data and save to "q3 ~ q6"--- 16X4 bytes
|
|
161
|
+
vld1.32 {q3}, [r2], r3
|
|
162
|
+
vld1.32 {q4}, [r2], r3
|
|
163
|
+
vld1.32 {q5}, [r2], r3
|
|
164
|
+
vld1.32 {q6}, [r2], r3
|
|
165
|
+
vtrn.32 q3, q4
|
|
166
|
+
vtrn.32 q5, q6
|
|
167
|
+
|
|
168
|
+
HDM_TRANSFORM_4X4_L0 d6, d10, d24, d21, d27, d15, d16, d17, d14
|
|
169
|
+
HDM_TRANSFORM_4X4_L0 d7, d11, d22, d21, d27, d15, d16, d17, d14
|
|
170
|
+
HDM_TRANSFORM_4X4_L0 d8, d12, d25, d21, d27, d15, d16, d17, d14
|
|
171
|
+
HDM_TRANSFORM_4X4_L0 d9, d13, d23, d21, d27, d15, d16, d17, d14
|
|
172
|
+
|
|
173
|
+
//Load the p_enc data and save to "q3 ~ q6"--- 16X4 bytes
|
|
174
|
+
vld1.32 {q3}, [r2], r3
|
|
175
|
+
vld1.32 {q4}, [r2], r3
|
|
176
|
+
vld1.32 {q5}, [r2], r3
|
|
177
|
+
vld1.32 {q6}, [r2], r3
|
|
178
|
+
vtrn.32 q3, q4
|
|
179
|
+
vtrn.32 q5, q6
|
|
180
|
+
|
|
181
|
+
HDM_TRANSFORM_4X4_L0 d6, d10, d24, d18, d27, d15, d16, d17, d14
|
|
182
|
+
HDM_TRANSFORM_4X4_L0 d7, d11, d22, d18, d27, d15, d16, d17, d14
|
|
183
|
+
HDM_TRANSFORM_4X4_L0 d8, d12, d25, d18, d27, d15, d16, d17, d14
|
|
184
|
+
HDM_TRANSFORM_4X4_L0 d9, d13, d23, d18, d27, d15, d16, d17, d14
|
|
185
|
+
|
|
186
|
+
//Load the p_enc data and save to "q3 ~ q6"--- 16X4 bytes
|
|
187
|
+
vld1.32 {q3}, [r2], r3
|
|
188
|
+
vld1.32 {q4}, [r2], r3
|
|
189
|
+
vld1.32 {q5}, [r2], r3
|
|
190
|
+
vld1.32 {q6}, [r2], r3
|
|
191
|
+
vtrn.32 q3, q4
|
|
192
|
+
vtrn.32 q5, q6
|
|
193
|
+
|
|
194
|
+
HDM_TRANSFORM_4X4_L0 d6, d10, d24, d19, d27, d15, d16, d17, d14
|
|
195
|
+
HDM_TRANSFORM_4X4_L0 d7, d11, d22, d19, d27, d15, d16, d17, d14
|
|
196
|
+
HDM_TRANSFORM_4X4_L0 d8, d12, d25, d19, d27, d15, d16, d17, d14
|
|
197
|
+
HDM_TRANSFORM_4X4_L0 d9, d13, d23, d19, d27, d15, d16, d17, d14
|
|
198
|
+
|
|
199
|
+
//Get the data from stack
|
|
200
|
+
ldr r5, [sp, #84] //the addr of Best_mode
|
|
201
|
+
ldr r6, [sp, #88] //the value of i_lambda
|
|
202
|
+
|
|
203
|
+
//vadd.u16 d24, d25
|
|
204
|
+
vrshr.u16 d15, #1
|
|
205
|
+
vpaddl.u16 d15, d15
|
|
206
|
+
vpaddl.u32 d15, d15
|
|
207
|
+
vmov.u32 r0, d15[0]
|
|
208
|
+
|
|
209
|
+
//vadd.u16 d22, d23
|
|
210
|
+
vrshr.u16 d16, #1
|
|
211
|
+
vpaddl.u16 d16, d16
|
|
212
|
+
vpaddl.u32 d16, d16
|
|
213
|
+
vmov.u32 r1, d16[0]
|
|
214
|
+
add r1, r1, r6, lsl #1
|
|
215
|
+
|
|
216
|
+
//vadd.u16 d20, d21
|
|
217
|
+
vrshr.u16 d17, #1
|
|
218
|
+
vpaddl.u16 d17, d17
|
|
219
|
+
vpaddl.u32 d17, d17
|
|
220
|
+
vmov.u32 r2, d17[0]
|
|
221
|
+
add r2, r2, r6, lsl #1
|
|
222
|
+
|
|
223
|
+
mov r4, #0
|
|
224
|
+
cmp r1, r0
|
|
225
|
+
movcc r0, r1
|
|
226
|
+
movcc r4, #1
|
|
227
|
+
cmp r2, r0
|
|
228
|
+
movcc r0, r2
|
|
229
|
+
movcc r4, #2
|
|
230
|
+
|
|
231
|
+
str r4, [r5]
|
|
232
|
+
|
|
233
|
+
vpop {q4-q7}
|
|
234
|
+
ldmia sp!, {r4-r7, lr}
|
|
235
|
+
WELS_ASM_FUNC_END
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
WELS_ASM_FUNC_BEGIN WelsIntra16x16Combined3Sad_neon
|
|
239
|
+
stmdb sp!, {r4-r7, lr}
|
|
240
|
+
|
|
241
|
+
//Get the top line data to 'q15'(16 bytes)
|
|
242
|
+
sub r4, r0, r1
|
|
243
|
+
vld1.8 {q15}, [r4]
|
|
244
|
+
|
|
245
|
+
//Get the left colume data to 'q14' (16 bytes)
|
|
246
|
+
sub r4, r0, #1
|
|
247
|
+
GET_8BYTE_DATA_L0 d28, r4, r1
|
|
248
|
+
GET_8BYTE_DATA_L0 d29, r4, r1
|
|
249
|
+
|
|
250
|
+
//Calculate the mean value and save to 'q13' (8 bytes)
|
|
251
|
+
//Calculate the 16x16_dc_both mode SATD
|
|
252
|
+
vaddl.u8 q0, d30, d31
|
|
253
|
+
vaddl.u8 q1, d28, d29
|
|
254
|
+
vadd.u16 q0, q1
|
|
255
|
+
vadd.u16 d0, d1
|
|
256
|
+
vpaddl.u16 d0, d0
|
|
257
|
+
vpaddl.u32 d0, d0
|
|
258
|
+
|
|
259
|
+
//Calculate the mean value
|
|
260
|
+
vrshr.u16 d0, d0, #5
|
|
261
|
+
vdup.8 q13, d0[0]
|
|
262
|
+
|
|
263
|
+
sub r4, r0, #1
|
|
264
|
+
|
|
265
|
+
vmov.i32 q12, #0//Save the SATD of DC_BOTH
|
|
266
|
+
vmov.i32 q11, #0//Save the SATD of H
|
|
267
|
+
vmov.i32 q10, #0//Save the SATD of V
|
|
268
|
+
|
|
269
|
+
mov lr, #16
|
|
270
|
+
sad_intra_16x16_x3_opt_loop0:
|
|
271
|
+
//Get the left colume data to 'd0' (16 bytes)
|
|
272
|
+
vld1.8 {d0[]}, [r4], r1
|
|
273
|
+
|
|
274
|
+
//Load the p_enc data and save to "q1 ~ q2"--- 16X4 bytes
|
|
275
|
+
vld1.8 {q1}, [r2], r3
|
|
276
|
+
|
|
277
|
+
subs lr, #1
|
|
278
|
+
//Do the SAD for top colume
|
|
279
|
+
vabal.u8 q12, d30, d2
|
|
280
|
+
vabal.u8 q12, d31, d3
|
|
281
|
+
|
|
282
|
+
//Do the SAD for left colume
|
|
283
|
+
vabal.u8 q11, d0, d2
|
|
284
|
+
vabal.u8 q11, d0, d3
|
|
285
|
+
|
|
286
|
+
//Do the SAD for mean value
|
|
287
|
+
vabal.u8 q10, d26, d2
|
|
288
|
+
vabal.u8 q10, d26, d3
|
|
289
|
+
|
|
290
|
+
bne sad_intra_16x16_x3_opt_loop0
|
|
291
|
+
|
|
292
|
+
//Get the data from stack
|
|
293
|
+
ldr r5, [sp, #20] //the addr of Best_mode
|
|
294
|
+
ldr r6, [sp, #24] //the value of i_lambda
|
|
295
|
+
|
|
296
|
+
vadd.u16 d24, d25
|
|
297
|
+
vpaddl.u16 d24, d24
|
|
298
|
+
vpaddl.u32 d24, d24
|
|
299
|
+
vmov.u32 r0, d24[0]
|
|
300
|
+
|
|
301
|
+
vadd.u16 d22, d23
|
|
302
|
+
vpaddl.u16 d22, d22
|
|
303
|
+
vpaddl.u32 d22, d22
|
|
304
|
+
vmov.u32 r1, d22[0]
|
|
305
|
+
add r1, r1, r6, lsl #1
|
|
306
|
+
|
|
307
|
+
vadd.u16 d20, d21
|
|
308
|
+
vpaddl.u16 d20, d20
|
|
309
|
+
vpaddl.u32 d20, d20
|
|
310
|
+
vmov.u32 r2, d20[0]
|
|
311
|
+
add r2, r2, r6, lsl #1
|
|
312
|
+
|
|
313
|
+
mov r4, #0
|
|
314
|
+
cmp r1, r0
|
|
315
|
+
movcc r0, r1
|
|
316
|
+
movcc r4, #1
|
|
317
|
+
cmp r2, r0
|
|
318
|
+
movcc r0, r2
|
|
319
|
+
movcc r4, #2
|
|
320
|
+
|
|
321
|
+
str r4, [r5]
|
|
322
|
+
|
|
323
|
+
ldmia sp!, {r4-r7, lr}
|
|
324
|
+
WELS_ASM_FUNC_END
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
WELS_ASM_FUNC_BEGIN WelsIntra8x8Combined3Sad_neon
|
|
328
|
+
stmdb sp!, {r4-r7, lr}
|
|
329
|
+
|
|
330
|
+
//Get the data from stack
|
|
331
|
+
ldr r4, [sp, #32] //p_dec_cr
|
|
332
|
+
ldr r5, [sp, #36] //p_enc_cr
|
|
333
|
+
|
|
334
|
+
//Get the left colume data to 'd28(cb), d30(cr)' (16 bytes)
|
|
335
|
+
sub r6, r0, #1
|
|
336
|
+
GET_8BYTE_DATA_L0 d28, r6, r1
|
|
337
|
+
sub r6, r4, #1
|
|
338
|
+
GET_8BYTE_DATA_L0 d30, r6, r1
|
|
339
|
+
|
|
340
|
+
//Get the top line data to 'd29(cb), d31(cr)'(16 bytes)
|
|
341
|
+
sub r6, r0, r1
|
|
342
|
+
vld1.8 {d29}, [r6]
|
|
343
|
+
sub r6, r4, r1
|
|
344
|
+
vld1.8 {d31}, [r6]
|
|
345
|
+
|
|
346
|
+
//Calculate the sum of left column and top row
|
|
347
|
+
vmov.i32 q0, q14
|
|
348
|
+
vpaddl.u8 q0, q0
|
|
349
|
+
vpaddl.u16 q0, q0
|
|
350
|
+
vadd.u32 d2, d0, d1 //'m1' save to d2
|
|
351
|
+
vrshr.u32 q0, q0, #2 //calculate 'm2','m3'
|
|
352
|
+
vrshr.u32 d2, d2, #3 //calculate 'm4'
|
|
353
|
+
|
|
354
|
+
//duplicate the 'mx' to a vector line
|
|
355
|
+
vdup.8 d27, d2[0]
|
|
356
|
+
vdup.8 d26, d1[4]
|
|
357
|
+
vtrn.32 d27, d26
|
|
358
|
+
|
|
359
|
+
vdup.8 d26, d0[4]
|
|
360
|
+
vdup.8 d25, d2[4]
|
|
361
|
+
vtrn.32 d26, d25 //Save to "d27, d26"
|
|
362
|
+
|
|
363
|
+
vmov.i32 q0, q15
|
|
364
|
+
vpaddl.u8 q0, q0
|
|
365
|
+
vpaddl.u16 q0, q0
|
|
366
|
+
vadd.u32 d2, d0, d1 //'m1' save to d2
|
|
367
|
+
vrshr.u32 q0, q0, #2 //calculate 'm2','m3'
|
|
368
|
+
vrshr.u32 d2, d2, #3 //calculate 'm4'
|
|
369
|
+
|
|
370
|
+
//duplicate the 'mx' to a vector line
|
|
371
|
+
vdup.8 d25, d2[0]
|
|
372
|
+
vdup.8 d24, d1[4]
|
|
373
|
+
vtrn.32 d25, d24
|
|
374
|
+
|
|
375
|
+
vdup.8 d24, d0[4]
|
|
376
|
+
vdup.8 d23, d2[4]
|
|
377
|
+
vtrn.32 d24, d23 //Save to "d25, d24"
|
|
378
|
+
|
|
379
|
+
vmov.i32 q11, #0//Save the SATD of DC_BOTH
|
|
380
|
+
vmov.i32 q10, #0//Save the SATD of H
|
|
381
|
+
vmov.i32 q9 , #0//Save the SATD of V
|
|
382
|
+
sub r6, r0, #1
|
|
383
|
+
sub r7, r4, #1
|
|
384
|
+
mov lr, #4
|
|
385
|
+
sad_intra_8x8_x3_opt_loop0:
|
|
386
|
+
|
|
387
|
+
//Load the p_enc data and save to "q1 ~ q2"--- 16X4 bytes
|
|
388
|
+
vld1.8 {d0}, [r2], r3
|
|
389
|
+
vld1.8 {d1}, [r5], r3
|
|
390
|
+
|
|
391
|
+
//Get the left colume data to 'd0' (16 bytes)
|
|
392
|
+
vld1.8 {d2[]}, [r6], r1
|
|
393
|
+
vld1.8 {d3[]}, [r7], r1
|
|
394
|
+
|
|
395
|
+
subs lr, #1
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
//Do the SAD for top colume
|
|
399
|
+
vabal.u8 q11, d29, d0
|
|
400
|
+
vabal.u8 q11, d31, d1
|
|
401
|
+
|
|
402
|
+
//Do the SAD for left colume
|
|
403
|
+
vabal.u8 q10, d2, d0
|
|
404
|
+
vabal.u8 q10, d3, d1
|
|
405
|
+
|
|
406
|
+
//Do the SAD for mean value
|
|
407
|
+
vabal.u8 q9, d27, d0
|
|
408
|
+
vabal.u8 q9, d25, d1
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
bne sad_intra_8x8_x3_opt_loop0
|
|
412
|
+
|
|
413
|
+
mov lr, #4
|
|
414
|
+
sad_intra_8x8_x3_opt_loop1:
|
|
415
|
+
|
|
416
|
+
//Load the p_enc data and save to "q1 ~ q2"--- 16X4 bytes
|
|
417
|
+
vld1.8 {d0}, [r2], r3
|
|
418
|
+
vld1.8 {d1}, [r5], r3
|
|
419
|
+
|
|
420
|
+
//Get the left colume data to 'd0' (16 bytes)
|
|
421
|
+
vld1.8 {d2[]}, [r6], r1
|
|
422
|
+
vld1.8 {d3[]}, [r7], r1
|
|
423
|
+
|
|
424
|
+
subs lr, #1
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
//Do the SAD for top colume
|
|
428
|
+
vabal.u8 q11, d29, d0
|
|
429
|
+
vabal.u8 q11, d31, d1
|
|
430
|
+
|
|
431
|
+
//Do the SAD for left colume
|
|
432
|
+
vabal.u8 q10, d2, d0
|
|
433
|
+
vabal.u8 q10, d3, d1
|
|
434
|
+
|
|
435
|
+
//Do the SAD for mean value
|
|
436
|
+
vabal.u8 q9, d26, d0
|
|
437
|
+
vabal.u8 q9, d24, d1
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
bne sad_intra_8x8_x3_opt_loop1
|
|
441
|
+
//Get the data from stack
|
|
442
|
+
ldr r5, [sp, #20] //the addr of Best_mode
|
|
443
|
+
ldr r6, [sp, #24] //the value of i_lambda
|
|
444
|
+
|
|
445
|
+
vadd.u16 d22, d23
|
|
446
|
+
vpaddl.u16 d22, d22
|
|
447
|
+
vpaddl.u32 d22, d22
|
|
448
|
+
vmov.u32 r0, d22[0]
|
|
449
|
+
add r0, r0, r6, lsl #1
|
|
450
|
+
|
|
451
|
+
vadd.u16 d20, d21
|
|
452
|
+
vpaddl.u16 d20, d20
|
|
453
|
+
vpaddl.u32 d20, d20
|
|
454
|
+
vmov.u32 r1, d20[0]
|
|
455
|
+
add r1, r1, r6, lsl #1
|
|
456
|
+
|
|
457
|
+
vadd.u16 d18, d19
|
|
458
|
+
vpaddl.u16 d18, d18
|
|
459
|
+
vpaddl.u32 d18, d18
|
|
460
|
+
vmov.u32 r2, d18[0]
|
|
461
|
+
|
|
462
|
+
mov r4, #2
|
|
463
|
+
cmp r1, r0
|
|
464
|
+
movcc r0, r1
|
|
465
|
+
movcc r4, #1
|
|
466
|
+
cmp r2, r0
|
|
467
|
+
movcc r0, r2
|
|
468
|
+
movcc r4, #0
|
|
469
|
+
|
|
470
|
+
str r4, [r5]
|
|
471
|
+
|
|
472
|
+
ldmia sp!, {r4-r7, lr}
|
|
473
|
+
WELS_ASM_FUNC_END
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
WELS_ASM_FUNC_BEGIN WelsIntra8x8Combined3Satd_neon
|
|
477
|
+
stmdb sp!, {r4-r7, lr}
|
|
478
|
+
vpush {q4-q7}
|
|
479
|
+
|
|
480
|
+
//Get the data from stack
|
|
481
|
+
ldr r4, [sp, #96] //p_dec_cr
|
|
482
|
+
ldr r5, [sp, #100] //p_enc_cr
|
|
483
|
+
|
|
484
|
+
//Get the top line data to 'd29(cb), d31(cr)'(16 bytes)
|
|
485
|
+
sub r6, r0, r1
|
|
486
|
+
vld1.8 {d29}, [r6]
|
|
487
|
+
sub r6, r4, r1
|
|
488
|
+
vld1.8 {d31}, [r6]
|
|
489
|
+
|
|
490
|
+
//Get the left colume data to 'd28(cb), d30(cr)' (16 bytes)
|
|
491
|
+
sub r6, r0, #1
|
|
492
|
+
GET_8BYTE_DATA_L0 d28, r6, r1
|
|
493
|
+
sub r6, r4, #1
|
|
494
|
+
GET_8BYTE_DATA_L0 d30, r6, r1
|
|
495
|
+
|
|
496
|
+
//Calculate the 16x16_v mode SATD and save to "q12, 13"
|
|
497
|
+
vshll.u8 q0, d29, #2
|
|
498
|
+
vshll.u8 q1, d31, #2
|
|
499
|
+
vtrn.32 q0, q1
|
|
500
|
+
vadd.s16 q2, q0, q1
|
|
501
|
+
vsub.s16 q1, q0, q1
|
|
502
|
+
vtrn.16 q2, q1
|
|
503
|
+
vadd.s16 q13, q2, q1
|
|
504
|
+
vsub.s16 q12, q2, q1
|
|
505
|
+
vtrn.32 q13, q12 //{0,1,3,2, 4,5,7,6} q13
|
|
506
|
+
//{8,9,11,10, 12,13,15,14} q12
|
|
507
|
+
//Calculate the 16x16_h mode SATD and save to "q10, q11"
|
|
508
|
+
vshll.u8 q0, d28, #2
|
|
509
|
+
vshll.u8 q1, d30, #2
|
|
510
|
+
vtrn.32 q0, q1
|
|
511
|
+
vadd.s16 q2, q0, q1
|
|
512
|
+
vsub.s16 q1, q0, q1
|
|
513
|
+
vtrn.16 q2, q1
|
|
514
|
+
vadd.s16 q11, q2, q1
|
|
515
|
+
vsub.s16 q10, q2, q1
|
|
516
|
+
vtrn.32 q11, q10 //{0,1,3,2, 4,5,7,6} q11
|
|
517
|
+
//{8,9,11,10, 12,13,15,14} q10
|
|
518
|
+
|
|
519
|
+
//Calculate the sum of left column and top row
|
|
520
|
+
//vmov.i32 q0, q14
|
|
521
|
+
vpaddl.u8 q0, q14
|
|
522
|
+
vpaddl.u16 q0, q0
|
|
523
|
+
vadd.u32 d2, d0, d1
|
|
524
|
+
|
|
525
|
+
vpaddl.u8 q2, q15
|
|
526
|
+
vpaddl.u16 q2, q2
|
|
527
|
+
vadd.u32 d3, d4, d5
|
|
528
|
+
|
|
529
|
+
vtrn.32 q0, q2
|
|
530
|
+
vrshr.u32 q1, #3
|
|
531
|
+
vrshr.u32 q2, #2
|
|
532
|
+
vshll.u32 q9, d4, #4 // {2cb, 2cr} q9
|
|
533
|
+
vshll.u32 q8, d5, #4 // {1cb, 1cr} q8
|
|
534
|
+
vshll.u32 q7, d2, #4 // {0cb, 3cb} q7
|
|
535
|
+
vshll.u32 q6, d3, #4 // {0cr, 3cr} q6
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
vmov.i32 d28, #0//Save the SATD of DC_BOTH
|
|
539
|
+
vmov.i32 d10, #0//Save the SATD of H
|
|
540
|
+
vmov.i32 d11, #0//Save the SATD of V
|
|
541
|
+
vmov.i32 d30, #0//For zero D register
|
|
542
|
+
//Load the p_enc data and save to "q3 ~ q6"--- 16X4 bytes
|
|
543
|
+
vld1.32 {d6}, [r2], r3
|
|
544
|
+
vld1.32 {d7}, [r2], r3
|
|
545
|
+
vld1.32 {d8}, [r2], r3
|
|
546
|
+
vld1.32 {d9}, [r2], r3
|
|
547
|
+
vtrn.32 d6, d7
|
|
548
|
+
vtrn.32 d8, d9
|
|
549
|
+
HDM_TRANSFORM_4X4_L0 d6, d8, d26, d22, d14, d11, d10, d28, d30
|
|
550
|
+
HDM_TRANSFORM_4X4_L0 d7, d9, d27, d22, d16, d11, d10, d28, d30
|
|
551
|
+
|
|
552
|
+
vld1.32 {d6}, [r5], r3
|
|
553
|
+
vld1.32 {d7}, [r5], r3
|
|
554
|
+
vld1.32 {d8}, [r5], r3
|
|
555
|
+
vld1.32 {d9}, [r5], r3
|
|
556
|
+
vtrn.32 d6, d7
|
|
557
|
+
vtrn.32 d8, d9
|
|
558
|
+
HDM_TRANSFORM_4X4_L0 d6, d8, d24, d20, d12, d11, d10, d28, d30
|
|
559
|
+
HDM_TRANSFORM_4X4_L0 d7, d9, d25, d20, d17, d11, d10, d28, d30
|
|
560
|
+
|
|
561
|
+
//Load the p_enc data and save to "q3 ~ q6"--- 16X4 bytes
|
|
562
|
+
vld1.32 {d6}, [r2], r3
|
|
563
|
+
vld1.32 {d7}, [r2], r3
|
|
564
|
+
vld1.32 {d8}, [r2], r3
|
|
565
|
+
vld1.32 {d9}, [r2], r3
|
|
566
|
+
vtrn.32 d6, d7
|
|
567
|
+
vtrn.32 d8, d9
|
|
568
|
+
HDM_TRANSFORM_4X4_L0 d6, d8, d26, d23, d18, d11, d10, d28, d30
|
|
569
|
+
HDM_TRANSFORM_4X4_L0 d7, d9, d27, d23, d15, d11, d10, d28, d30
|
|
570
|
+
|
|
571
|
+
vld1.32 {d6}, [r5], r3
|
|
572
|
+
vld1.32 {d7}, [r5], r3
|
|
573
|
+
vld1.32 {d8}, [r5], r3
|
|
574
|
+
vld1.32 {d9}, [r5], r3
|
|
575
|
+
vtrn.32 d6, d7
|
|
576
|
+
vtrn.32 d8, d9
|
|
577
|
+
HDM_TRANSFORM_4X4_L0 d6, d8, d24, d21, d19, d11, d10, d28, d30
|
|
578
|
+
HDM_TRANSFORM_4X4_L0 d7, d9, d25, d21, d13, d11, d10, d28, d30
|
|
579
|
+
|
|
580
|
+
//Get the data from stack
|
|
581
|
+
ldr r5, [sp, #84] //the addr of Best_mode
|
|
582
|
+
ldr r6, [sp, #88] //the value of i_lambda
|
|
583
|
+
|
|
584
|
+
vrshr.u16 d11, #1
|
|
585
|
+
vpaddl.u16 d11, d11
|
|
586
|
+
vpaddl.u32 d11, d11
|
|
587
|
+
vmov.u32 lr, d11[0]
|
|
588
|
+
add lr, lr, r6, lsl #1
|
|
589
|
+
|
|
590
|
+
vrshr.u16 d10, #1
|
|
591
|
+
vpaddl.u16 d10, d10
|
|
592
|
+
vpaddl.u32 d10, d10
|
|
593
|
+
vmov.u32 r3, d10[0]
|
|
594
|
+
add r3, r3, r6, lsl #1
|
|
595
|
+
|
|
596
|
+
vrshr.u16 d28, #1
|
|
597
|
+
vpaddl.u16 d28, d28
|
|
598
|
+
vpaddl.u32 d28, d28
|
|
599
|
+
vmov.u32 r2, d28[0]
|
|
600
|
+
|
|
601
|
+
mov r6, #2
|
|
602
|
+
cmp r3, lr
|
|
603
|
+
movcc lr, r3
|
|
604
|
+
movcc r6, #1
|
|
605
|
+
cmp r2, lr
|
|
606
|
+
movcc lr, r2
|
|
607
|
+
movcc r6, #0
|
|
608
|
+
|
|
609
|
+
str r6, [r5]
|
|
610
|
+
mov r0, lr
|
|
611
|
+
|
|
612
|
+
vpop {q4-q7}
|
|
613
|
+
ldmia sp!, {r4-r7, lr}
|
|
614
|
+
WELS_ASM_FUNC_END
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
WELS_ASM_FUNC_BEGIN WelsIntra4x4Combined3Satd_neon
|
|
618
|
+
stmdb sp!, {r4-r7, lr}
|
|
619
|
+
|
|
620
|
+
//Get the top line data to 'd31[0~3]'(4 bytes)
|
|
621
|
+
sub r7, r0, r1
|
|
622
|
+
vld1.32 {d31[0]}, [r7]
|
|
623
|
+
|
|
624
|
+
//Get the left colume data to 'd31[4~7]' (4 bytes)
|
|
625
|
+
sub r7, r0, #1
|
|
626
|
+
vld1.8 {d31[4]}, [r7], r1
|
|
627
|
+
vld1.8 {d31[5]}, [r7], r1
|
|
628
|
+
vld1.8 {d31[6]}, [r7], r1
|
|
629
|
+
vld1.8 {d31[7]}, [r7], r1
|
|
630
|
+
|
|
631
|
+
//Calculate the mean value and save to 'd30' (2 bytes)
|
|
632
|
+
vpaddl.u8 d0, d31
|
|
633
|
+
vpaddl.u16 d0, d0
|
|
634
|
+
vpaddl.u32 d0, d0
|
|
635
|
+
//Calculate the mean value
|
|
636
|
+
vrshr.u16 d0, #3
|
|
637
|
+
vshl.u16 d30, d0, #4
|
|
638
|
+
|
|
639
|
+
//Calculate the 16x16_v mode SATD and save to "d29"
|
|
640
|
+
//Calculate the 16x16_h mode SATD and save to "d28"
|
|
641
|
+
vshll.u8 q0, d31, #2
|
|
642
|
+
vtrn.32 d0, d1
|
|
643
|
+
vadd.s16 d2, d0, d1
|
|
644
|
+
vsub.s16 d1, d0, d1
|
|
645
|
+
vtrn.16 d2, d1
|
|
646
|
+
vadd.s16 d29, d2, d1
|
|
647
|
+
vsub.s16 d28, d2, d1
|
|
648
|
+
vtrn.32 d29, d28 //{0,1,3,2 top} d29
|
|
649
|
+
//{0,1,3,2 left} d28
|
|
650
|
+
|
|
651
|
+
vmov.i32 d27, #0//Save the SATD of DC_BOTH
|
|
652
|
+
vmov.i32 d26, #0//Save the SATD of H
|
|
653
|
+
vmov.i32 d25, #0//Save the SATD of V
|
|
654
|
+
vmov.i32 d24, #0//For zero D register
|
|
655
|
+
|
|
656
|
+
//Load the p_enc data and save to "d22,d23"--- 4X4 bytes
|
|
657
|
+
vld1.32 {d23[0]}, [r2], r3
|
|
658
|
+
vld1.32 {d23[1]}, [r2], r3
|
|
659
|
+
vld1.32 {d22[0]}, [r2], r3
|
|
660
|
+
vld1.32 {d22[1]}, [r2], r3
|
|
661
|
+
|
|
662
|
+
HDM_TRANSFORM_4X4_L0 d23, d22, d29, d28, d30, d25, d26, d27, d24
|
|
663
|
+
|
|
664
|
+
//Get the data from stack
|
|
665
|
+
ldr r5, [sp, #28] //the value of lambda2
|
|
666
|
+
ldr r6, [sp, #32] //the value of lambda1
|
|
667
|
+
ldr r7, [sp, #36] //the value of lambda0
|
|
668
|
+
|
|
669
|
+
vrshr.u16 d25, #1
|
|
670
|
+
vpaddl.u16 d25, d25
|
|
671
|
+
vpaddl.u32 d25, d25
|
|
672
|
+
vmov.u32 r0, d25[0]
|
|
673
|
+
add r0, r7
|
|
674
|
+
|
|
675
|
+
vrshr.u16 d26, #1
|
|
676
|
+
vpaddl.u16 d26, d26
|
|
677
|
+
vpaddl.u32 d26, d26
|
|
678
|
+
vmov.u32 r1, d26[0]
|
|
679
|
+
add r1, r6
|
|
680
|
+
|
|
681
|
+
vrshr.u16 d27, #1
|
|
682
|
+
vpaddl.u16 d27, d27
|
|
683
|
+
vpaddl.u32 d27, d27
|
|
684
|
+
vmov.u32 r2, d27[0]
|
|
685
|
+
add r2, r5
|
|
686
|
+
|
|
687
|
+
ldr r5, [sp, #20] //p_dst
|
|
688
|
+
ldr r6, [sp, #24] //the addr of Best_mode
|
|
689
|
+
|
|
690
|
+
mov r4, r0
|
|
691
|
+
cmp r1, r4
|
|
692
|
+
movcc r4, r1
|
|
693
|
+
cmp r2, r4
|
|
694
|
+
movcc r4, r2
|
|
695
|
+
|
|
696
|
+
//The compare sequence affect the resule
|
|
697
|
+
cmp r4, r2
|
|
698
|
+
bne satd_intra_4x4_x3_opt_jump0
|
|
699
|
+
mov r0, #2
|
|
700
|
+
str r0, [r6]
|
|
701
|
+
vshr.u32 d0, d30, #4 // {2cb, 2cr} q9
|
|
702
|
+
vdup.8 q1, d0[0]
|
|
703
|
+
vst1.8 {q1}, [r5]
|
|
704
|
+
//...
|
|
705
|
+
bl satd_intra_4x4_x3_opt_end
|
|
706
|
+
satd_intra_4x4_x3_opt_jump0:
|
|
707
|
+
|
|
708
|
+
cmp r4, r1
|
|
709
|
+
bne satd_intra_4x4_x3_opt_jump1
|
|
710
|
+
mov r0, #1
|
|
711
|
+
str r0, [r6]
|
|
712
|
+
vdup.8 d0, d31[4]
|
|
713
|
+
vdup.8 d1, d31[5]
|
|
714
|
+
vdup.8 d2, d31[6]
|
|
715
|
+
vdup.8 d3, d31[7]
|
|
716
|
+
vst4.32 {d0[0],d1[0],d2[0],d3[0]}, [r5]
|
|
717
|
+
|
|
718
|
+
bl satd_intra_4x4_x3_opt_end
|
|
719
|
+
satd_intra_4x4_x3_opt_jump1:
|
|
720
|
+
|
|
721
|
+
mov r0, #0
|
|
722
|
+
str r0, [r6]
|
|
723
|
+
vst1.32 {d31[0]}, [r5]!
|
|
724
|
+
vst1.32 {d31[0]}, [r5]!
|
|
725
|
+
vst1.32 {d31[0]}, [r5]!
|
|
726
|
+
vst1.32 {d31[0]}, [r5]!
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
satd_intra_4x4_x3_opt_end:
|
|
730
|
+
mov r0, r4
|
|
731
|
+
|
|
732
|
+
ldmia sp!, {r4-r7, lr}
|
|
733
|
+
WELS_ASM_FUNC_END
|
|
734
|
+
|
|
735
|
+
#endif
|