@scrypted/libav 1.0.179 → 1.0.181
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_openh264install/include/wels/codec_api.h +592 -0
- package/_openh264install/include/wels/codec_app_def.h +820 -0
- package/_openh264install/include/wels/codec_def.h +216 -0
- package/_openh264install/include/wels/codec_ver.h +15 -0
- package/_openh264install/lib/libopenh264.a +0 -0
- package/_openh264install/lib/pkgconfig/openh264.pc +10 -0
- package/binding.gyp +4 -0
- package/openh264/.reviewboardrc +3 -0
- package/openh264/.travis.yml +42 -0
- package/openh264/CODING_STYLE +8 -0
- package/openh264/CONTRIBUTORS +55 -0
- package/openh264/LICENSE +23 -0
- package/openh264/Makefile +408 -0
- package/openh264/README.md +197 -0
- package/openh264/RELEASES +467 -0
- package/openh264/SECURITY.md +16 -0
- package/openh264/autotest/codec_comparision/run_MultiCodecComparision.sh +431 -0
- package/openh264/autotest/performanceTest/android/run_AutoTest_android.sh +180 -0
- package/openh264/autotest/performanceTest/ios/fruitstrap +0 -0
- package/openh264/autotest/performanceTest/ios/iFileTransfer +0 -0
- package/openh264/autotest/performanceTest/ios/run_AutoTest_ios.sh +193 -0
- package/openh264/autotest/performanceTest/ios/uiascript.js +19 -0
- package/openh264/autotest/performanceTest/parsePerfData.sh +107 -0
- package/openh264/autotest/performanceTest/run_perfTest.sh +122 -0
- package/openh264/autotest/unitTest/android/run_AutoTest_android.sh +112 -0
- package/openh264/autotest/unitTest/ios/run_AutoTest_ios.sh +167 -0
- package/openh264/autotest/unitTest/run_ParseUTxml.sh +70 -0
- package/openh264/autotest/unitTest/run_unitTest.sh +98 -0
- package/openh264/build.gradle +30 -0
- package/openh264/code-coverage.sh +6 -0
- package/openh264/codec/api/meson.build +1 -0
- package/openh264/codec/api/wels/codec_api.h +592 -0
- package/openh264/codec/api/wels/codec_app_def.h +820 -0
- package/openh264/codec/api/wels/codec_def.h +216 -0
- package/openh264/codec/api/wels/codec_ver.h +15 -0
- package/openh264/codec/api/wels/meson.build +9 -0
- package/openh264/codec/common/arm/arm_arch_common_macro.S +83 -0
- package/openh264/codec/common/arm/copy_mb_neon.S +161 -0
- package/openh264/codec/common/arm/deblocking_neon.S +857 -0
- package/openh264/codec/common/arm/expand_picture_neon.S +154 -0
- package/openh264/codec/common/arm/intra_pred_common_neon.S +82 -0
- package/openh264/codec/common/arm/mc_neon.S +2283 -0
- package/openh264/codec/common/arm64/arm_aarch64_common.h +85 -0
- package/openh264/codec/common/arm64/arm_arch64_common_macro.S +79 -0
- package/openh264/codec/common/arm64/copy_mb_aarch64_neon.S +202 -0
- package/openh264/codec/common/arm64/deblocking_aarch64_neon.S +852 -0
- package/openh264/codec/common/arm64/expand_picture_aarch64_neon.S +150 -0
- package/openh264/codec/common/arm64/intra_pred_common_aarch64_neon.S +58 -0
- package/openh264/codec/common/arm64/mc_aarch64_neon.S +2614 -0
- package/openh264/codec/common/generate_version.sh +28 -0
- package/openh264/codec/common/inc/WelsList.h +287 -0
- package/openh264/codec/common/inc/WelsLock.h +97 -0
- package/openh264/codec/common/inc/WelsTask.h +75 -0
- package/openh264/codec/common/inc/WelsTaskThread.h +83 -0
- package/openh264/codec/common/inc/WelsThread.h +106 -0
- package/openh264/codec/common/inc/WelsThreadLib.h +151 -0
- package/openh264/codec/common/inc/WelsThreadPool.h +124 -0
- package/openh264/codec/common/inc/asmdefs_mmi.h +345 -0
- package/openh264/codec/common/inc/copy_mb.h +103 -0
- package/openh264/codec/common/inc/cpu.h +81 -0
- package/openh264/codec/common/inc/cpu_core.h +103 -0
- package/openh264/codec/common/inc/crt_util_safe_x.h +104 -0
- package/openh264/codec/common/inc/deblocking_common.h +124 -0
- package/openh264/codec/common/inc/expand_pic.h +107 -0
- package/openh264/codec/common/inc/golomb_common.h +166 -0
- package/openh264/codec/common/inc/intra_pred_common.h +86 -0
- package/openh264/codec/common/inc/loongson_intrinsics.h +1919 -0
- package/openh264/codec/common/inc/ls_defines.h +130 -0
- package/openh264/codec/common/inc/macros.h +329 -0
- package/openh264/codec/common/inc/mc.h +407 -0
- package/openh264/codec/common/inc/measure_time.h +88 -0
- package/openh264/codec/common/inc/memory_align.h +116 -0
- package/openh264/codec/common/inc/msa_macros.h +2393 -0
- package/openh264/codec/common/inc/sad_common.h +139 -0
- package/openh264/codec/common/inc/typedefs.h +86 -0
- package/openh264/codec/common/inc/utils.h +95 -0
- package/openh264/codec/common/inc/version.h +10 -0
- package/openh264/codec/common/inc/version_gen.h.template +6 -0
- package/openh264/codec/common/inc/welsCodecTrace.h +64 -0
- package/openh264/codec/common/inc/wels_common_defs.h +373 -0
- package/openh264/codec/common/inc/wels_const_common.h +63 -0
- package/openh264/codec/common/loongarch/copy_mb_lsx.c +194 -0
- package/openh264/codec/common/loongarch/deblock_lsx.c +1489 -0
- package/openh264/codec/common/loongarch/intra_pred_com_lasx.c +112 -0
- package/openh264/codec/common/loongarch/intra_pred_com_lsx.c +91 -0
- package/openh264/codec/common/loongarch/mc_chroma_lsx.c +192 -0
- package/openh264/codec/common/loongarch/mc_horver_lsx.c +654 -0
- package/openh264/codec/common/loongarch/satd_sad_lasx.c +568 -0
- package/openh264/codec/common/meson.build +84 -0
- package/openh264/codec/common/mips/copy_mb_mmi.c +477 -0
- package/openh264/codec/common/mips/copy_mb_msa.c +80 -0
- package/openh264/codec/common/mips/deblock_mmi.c +2826 -0
- package/openh264/codec/common/mips/deblock_msa.c +1024 -0
- package/openh264/codec/common/mips/expand_picture_mmi.c +673 -0
- package/openh264/codec/common/mips/intra_pred_com_mmi.c +548 -0
- package/openh264/codec/common/mips/satd_sad_mmi.c +2154 -0
- package/openh264/codec/common/targets.mk +136 -0
- package/openh264/codec/common/x86/asm_inc.asm +743 -0
- package/openh264/codec/common/x86/cpuid.asm +263 -0
- package/openh264/codec/common/x86/dct.asm +1036 -0
- package/openh264/codec/common/x86/deblock.asm +848 -0
- package/openh264/codec/common/x86/expand_picture.asm +728 -0
- package/openh264/codec/common/x86/intra_pred_com.asm +117 -0
- package/openh264/codec/common/x86/mb_copy.asm +615 -0
- package/openh264/codec/common/x86/mc_chroma.asm +313 -0
- package/openh264/codec/common/x86/mc_luma.asm +4490 -0
- package/openh264/codec/common/x86/satd_sad.asm +2734 -0
- package/openh264/codec/common/x86/vaa.asm +411 -0
- package/openh264/codec/console/common/inc/read_config.h +68 -0
- package/openh264/codec/console/common/meson.build +12 -0
- package/openh264/codec/console/common/targets.mk +20 -0
- package/openh264/codec/console/dec/inc/d3d9_utils.h +148 -0
- package/openh264/codec/console/dec/meson.build +15 -0
- package/openh264/codec/console/dec/targets.mk +20 -0
- package/openh264/codec/console/enc/meson.build +9 -0
- package/openh264/codec/console/enc/targets.mk +19 -0
- package/openh264/codec/console/meson.build +3 -0
- package/openh264/codec/decoder/core/arm/block_add_neon.S +129 -0
- package/openh264/codec/decoder/core/arm/intra_pred_neon.S +635 -0
- package/openh264/codec/decoder/core/arm64/block_add_aarch64_neon.S +131 -0
- package/openh264/codec/decoder/core/arm64/intra_pred_aarch64_neon.S +524 -0
- package/openh264/codec/decoder/core/inc/au_parser.h +199 -0
- package/openh264/codec/decoder/core/inc/bit_stream.h +62 -0
- package/openh264/codec/decoder/core/inc/cabac_decoder.h +111 -0
- package/openh264/codec/decoder/core/inc/deblocking.h +118 -0
- package/openh264/codec/decoder/core/inc/dec_frame.h +156 -0
- package/openh264/codec/decoder/core/inc/dec_golomb.h +344 -0
- package/openh264/codec/decoder/core/inc/decode_mb_aux.h +83 -0
- package/openh264/codec/decoder/core/inc/decode_slice.h +104 -0
- package/openh264/codec/decoder/core/inc/decoder.h +186 -0
- package/openh264/codec/decoder/core/inc/decoder_context.h +590 -0
- package/openh264/codec/decoder/core/inc/decoder_core.h +206 -0
- package/openh264/codec/decoder/core/inc/error_code.h +222 -0
- package/openh264/codec/decoder/core/inc/error_concealment.h +68 -0
- package/openh264/codec/decoder/core/inc/fmo.h +114 -0
- package/openh264/codec/decoder/core/inc/get_intra_predictor.h +191 -0
- package/openh264/codec/decoder/core/inc/manage_dec_ref.h +62 -0
- package/openh264/codec/decoder/core/inc/mb_cache.h +80 -0
- package/openh264/codec/decoder/core/inc/memmgr_nal_unit.h +66 -0
- package/openh264/codec/decoder/core/inc/mv_pred.h +195 -0
- package/openh264/codec/decoder/core/inc/nal_prefix.h +56 -0
- package/openh264/codec/decoder/core/inc/nalu.h +79 -0
- package/openh264/codec/decoder/core/inc/parameter_sets.h +217 -0
- package/openh264/codec/decoder/core/inc/parse_mb_syn_cabac.h +89 -0
- package/openh264/codec/decoder/core/inc/parse_mb_syn_cavlc.h +137 -0
- package/openh264/codec/decoder/core/inc/pic_queue.h +62 -0
- package/openh264/codec/decoder/core/inc/picture.h +112 -0
- package/openh264/codec/decoder/core/inc/rec_mb.h +104 -0
- package/openh264/codec/decoder/core/inc/slice.h +208 -0
- package/openh264/codec/decoder/core/inc/vlc_decoder.h +177 -0
- package/openh264/codec/decoder/core/inc/wels_common_basis.h +317 -0
- package/openh264/codec/decoder/core/inc/wels_const.h +65 -0
- package/openh264/codec/decoder/core/inc/wels_decoder_thread.h +170 -0
- package/openh264/codec/decoder/core/loongarch/mb_aux_lsx.c +296 -0
- package/openh264/codec/decoder/core/mips/dct_mmi.c +786 -0
- package/openh264/codec/decoder/core/x86/dct.asm +72 -0
- package/openh264/codec/decoder/core/x86/intra_pred.asm +1456 -0
- package/openh264/codec/decoder/meson.build +69 -0
- package/openh264/codec/decoder/plus/inc/welsDecoderExt.h +170 -0
- package/openh264/codec/decoder/targets.mk +115 -0
- package/openh264/codec/encoder/core/arm/intra_pred_neon.S +589 -0
- package/openh264/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S +735 -0
- package/openh264/codec/encoder/core/arm/memory_neon.S +62 -0
- package/openh264/codec/encoder/core/arm/pixel_neon.S +882 -0
- package/openh264/codec/encoder/core/arm/reconstruct_neon.S +903 -0
- package/openh264/codec/encoder/core/arm/svc_motion_estimation.S +366 -0
- package/openh264/codec/encoder/core/arm64/intra_pred_aarch64_neon.S +505 -0
- package/openh264/codec/encoder/core/arm64/intra_pred_sad_3_opt_aarch64_neon.S +611 -0
- package/openh264/codec/encoder/core/arm64/memory_aarch64_neon.S +63 -0
- package/openh264/codec/encoder/core/arm64/pixel_aarch64_neon.S +621 -0
- package/openh264/codec/encoder/core/arm64/reconstruct_aarch64_neon.S +717 -0
- package/openh264/codec/encoder/core/arm64/svc_motion_estimation_aarch64_neon.S +350 -0
- package/openh264/codec/encoder/core/inc/as264_common.h +138 -0
- package/openh264/codec/encoder/core/inc/au_set.h +152 -0
- package/openh264/codec/encoder/core/inc/deblocking.h +92 -0
- package/openh264/codec/encoder/core/inc/decode_mb_aux.h +112 -0
- package/openh264/codec/encoder/core/inc/dq_map.h +58 -0
- package/openh264/codec/encoder/core/inc/encode_mb_aux.h +199 -0
- package/openh264/codec/encoder/core/inc/encoder.h +148 -0
- package/openh264/codec/encoder/core/inc/encoder_context.h +240 -0
- package/openh264/codec/encoder/core/inc/extern.h +124 -0
- package/openh264/codec/encoder/core/inc/get_intra_predictor.h +186 -0
- package/openh264/codec/encoder/core/inc/mb_cache.h +141 -0
- package/openh264/codec/encoder/core/inc/md.h +181 -0
- package/openh264/codec/encoder/core/inc/mt_defs.h +91 -0
- package/openh264/codec/encoder/core/inc/mv_pred.h +191 -0
- package/openh264/codec/encoder/core/inc/nal_encap.h +143 -0
- package/openh264/codec/encoder/core/inc/param_svc.h +576 -0
- package/openh264/codec/encoder/core/inc/parameter_sets.h +181 -0
- package/openh264/codec/encoder/core/inc/paraset_strategy.h +310 -0
- package/openh264/codec/encoder/core/inc/picture.h +137 -0
- package/openh264/codec/encoder/core/inc/picture_handle.h +66 -0
- package/openh264/codec/encoder/core/inc/rc.h +284 -0
- package/openh264/codec/encoder/core/inc/ref_list_mgr_svc.h +148 -0
- package/openh264/codec/encoder/core/inc/sample.h +154 -0
- package/openh264/codec/encoder/core/inc/set_mb_syn_cabac.h +127 -0
- package/openh264/codec/encoder/core/inc/set_mb_syn_cavlc.h +92 -0
- package/openh264/codec/encoder/core/inc/slice.h +212 -0
- package/openh264/codec/encoder/core/inc/slice_multi_threading.h +97 -0
- package/openh264/codec/encoder/core/inc/stat.h +102 -0
- package/openh264/codec/encoder/core/inc/svc_base_layer_md.h +102 -0
- package/openh264/codec/encoder/core/inc/svc_enc_frame.h +136 -0
- package/openh264/codec/encoder/core/inc/svc_enc_golomb.h +123 -0
- package/openh264/codec/encoder/core/inc/svc_enc_macroblock.h +82 -0
- package/openh264/codec/encoder/core/inc/svc_enc_slice_segment.h +212 -0
- package/openh264/codec/encoder/core/inc/svc_encode_mb.h +63 -0
- package/openh264/codec/encoder/core/inc/svc_encode_slice.h +184 -0
- package/openh264/codec/encoder/core/inc/svc_mode_decision.h +94 -0
- package/openh264/codec/encoder/core/inc/svc_motion_estimate.h +369 -0
- package/openh264/codec/encoder/core/inc/svc_set_mb_syn.h +70 -0
- package/openh264/codec/encoder/core/inc/svc_set_mb_syn_cavlc.h +67 -0
- package/openh264/codec/encoder/core/inc/vlc_encoder.h +92 -0
- package/openh264/codec/encoder/core/inc/wels_common_basis.h +160 -0
- package/openh264/codec/encoder/core/inc/wels_const.h +174 -0
- package/openh264/codec/encoder/core/inc/wels_func_ptr_def.h +300 -0
- package/openh264/codec/encoder/core/inc/wels_preprocess.h +251 -0
- package/openh264/codec/encoder/core/inc/wels_task_base.h +79 -0
- package/openh264/codec/encoder/core/inc/wels_task_encoder.h +142 -0
- package/openh264/codec/encoder/core/inc/wels_task_management.h +135 -0
- package/openh264/codec/encoder/core/inc/wels_transpose_matrix.h +58 -0
- package/openh264/codec/encoder/core/loongarch/dct_lasx.c +452 -0
- package/openh264/codec/encoder/core/loongarch/get_intra_predictor_lsx.c +166 -0
- package/openh264/codec/encoder/core/loongarch/quant_lsx.c +153 -0
- package/openh264/codec/encoder/core/loongarch/sample_lasx.c +87 -0
- package/openh264/codec/encoder/core/loongarch/svc_motion_estimate_lsx.c +104 -0
- package/openh264/codec/encoder/core/mips/dct_mmi.c +529 -0
- package/openh264/codec/encoder/core/mips/quant_mmi.c +553 -0
- package/openh264/codec/encoder/core/mips/score_mmi.c +324 -0
- package/openh264/codec/encoder/core/x86/coeff.asm +695 -0
- package/openh264/codec/encoder/core/x86/dct.asm +108 -0
- package/openh264/codec/encoder/core/x86/intra_pred.asm +1129 -0
- package/openh264/codec/encoder/core/x86/matrix_transpose.asm +395 -0
- package/openh264/codec/encoder/core/x86/memzero.asm +132 -0
- package/openh264/codec/encoder/core/x86/quant.asm +507 -0
- package/openh264/codec/encoder/core/x86/sample_sc.asm +1829 -0
- package/openh264/codec/encoder/core/x86/score.asm +363 -0
- package/openh264/codec/encoder/meson.build +98 -0
- package/openh264/codec/encoder/plus/inc/welsEncoderExt.h +129 -0
- package/openh264/codec/encoder/targets.mk +146 -0
- package/openh264/codec/meson.build +9 -0
- package/openh264/codec/processing/interface/IWelsVP.h +310 -0
- package/openh264/codec/processing/meson.build +71 -0
- package/openh264/codec/processing/targets.mk +117 -0
- package/openh264/docs/doxygen/Doxyfile +1865 -0
- package/openh264/docs/doxygen/Home.rest +25 -0
- package/openh264/docs/doxygen/ISVCDecoder.rest +19 -0
- package/openh264/docs/doxygen/ISVCEncoder.rest +16 -0
- package/openh264/docs/doxygen/UsageExampleForDecoder.rest +10 -0
- package/openh264/docs/doxygen/UsageExampleForEncoder.rest +15 -0
- package/openh264/docs/doxygen2rst.py +619 -0
- package/openh264/gmpopenh264.info +4 -0
- package/openh264/gradlew +172 -0
- package/openh264/meson.build +218 -0
- package/openh264/meson_options.txt +1 -0
- package/openh264/module/RefCounted.h +141 -0
- package/openh264/module/gmp-openh264.cpp +1196 -0
- package/openh264/module/targets.mk +14 -0
- package/openh264/module/task_utils.h +38 -0
- package/openh264/module/task_utils.py +207 -0
- package/openh264/module/task_utils_generated.h +2087 -0
- package/openh264/openh264.def +7 -0
- package/openh264/openh264.pc.in +10 -0
- package/openh264/openh264.rc +61 -0
- package/openh264/openh264.rc.template +61 -0
- package/openh264/res/Adobe_PDF_sample_a_1024x768_50Frms.264 +0 -0
- package/openh264/res/BA1_FT_C.264 +0 -0
- package/openh264/res/BA1_Sony_D.jsv +0 -0
- package/openh264/res/BAMQ1_JVC_C.264 +0 -0
- package/openh264/res/BAMQ2_JVC_C.264 +0 -0
- package/openh264/res/BANM_MW_D.264 +0 -0
- package/openh264/res/BASQP1_Sony_C.jsv +0 -0
- package/openh264/res/BA_MW_D.264 +0 -0
- package/openh264/res/BA_MW_D_IDR_LOST.264 +0 -0
- package/openh264/res/BA_MW_D_P_LOST.264 +0 -0
- package/openh264/res/CI1_FT_B.264 +0 -0
- package/openh264/res/CI_MW_D.264 +0 -0
- package/openh264/res/CVFC1_Sony_C.jsv +0 -0
- package/openh264/res/CVPCMNL1_SVA_C.264 +0 -0
- package/openh264/res/CiscoVT2people_160x96_6fps.yuv +1 -0
- package/openh264/res/CiscoVT2people_320x192_12fps.yuv +1 -0
- package/openh264/res/Cisco_Absolute_Power_1280x720_30fps.yuv +3607 -0
- package/openh264/res/Cisco_Adobe_PDF_sample_a_1024x768_CAVLC_Bframe_9.264 +0 -0
- package/openh264/res/Cisco_Men_whisper_640x320_CABAC_Bframe_9.264 +0 -0
- package/openh264/res/Cisco_Men_whisper_640x320_CAVLC_Bframe_9.264 +0 -0
- package/openh264/res/Error_I_P.264 +0 -0
- package/openh264/res/LS_SVA_D.264 +0 -0
- package/openh264/res/MIDR_MW_D.264 +0 -0
- package/openh264/res/MPS_MW_A.264 +0 -0
- package/openh264/res/MR1_BT_A.h264 +0 -0
- package/openh264/res/MR1_MW_A.264 +0 -0
- package/openh264/res/MR2_MW_A.264 +0 -0
- package/openh264/res/MR2_TANDBERG_E.264 +0 -0
- package/openh264/res/NL1_Sony_D.jsv +0 -0
- package/openh264/res/NLMQ1_JVC_C.264 +0 -0
- package/openh264/res/NLMQ2_JVC_C.264 +0 -0
- package/openh264/res/NRF_MW_E.264 +0 -0
- package/openh264/res/QCIF_2P_I_allIPCM.264 +0 -0
- package/openh264/res/SVA_BA1_B.264 +0 -0
- package/openh264/res/SVA_BA2_D.264 +0 -0
- package/openh264/res/SVA_Base_B.264 +0 -0
- package/openh264/res/SVA_CL1_E.264 +0 -0
- package/openh264/res/SVA_FM1_E.264 +0 -0
- package/openh264/res/SVA_NL1_B.264 +0 -0
- package/openh264/res/SVA_NL2_E.264 +0 -0
- package/openh264/res/SarVui.264 +0 -0
- package/openh264/res/Static.264 +0 -0
- package/openh264/res/Static_152_100.yuv +1 -0
- package/openh264/res/VID_1280x544_cabac_temporal_direct.264 +0 -0
- package/openh264/res/VID_1280x544_cavlc_temporal_direct.264 +0 -0
- package/openh264/res/VID_1280x720_cabac_temporal_direct.264 +0 -0
- package/openh264/res/VID_1280x720_cavlc_temporal_direct.264 +0 -0
- package/openh264/res/VID_1920x1080_cabac_temporal_direct.264 +0 -0
- package/openh264/res/VID_1920x1080_cavlc_temporal_direct.264 +0 -0
- package/openh264/res/Zhling_1280x720.264 +0 -0
- package/openh264/res/jm_1080p_allslice.264 +0 -0
- package/openh264/res/sps_subsetsps_bothVUI.264 +0 -0
- package/openh264/res/test_cif_I_CABAC_PCM.264 +0 -0
- package/openh264/res/test_cif_I_CABAC_slice.264 +0 -0
- package/openh264/res/test_cif_P_CABAC_slice.264 +0 -0
- package/openh264/res/test_qcif_cabac.264 +0 -0
- package/openh264/res/test_scalinglist_jm.264 +0 -0
- package/openh264/res/test_vd_1d.264 +0 -0
- package/openh264/res/test_vd_rc.264 +0 -0
- package/openh264/run_Test.sh +91 -0
- package/openh264/settings.gradle +4 -0
- package/openh264/subprojects/gtest.wrap +10 -0
- package/openh264/testbin/AutoBuild_Windows_VS2008.bat +59 -0
- package/openh264/testbin/CmdLineExample.sh +7 -0
- package/openh264/testbin/CmdLineReadMe +22 -0
- package/openh264/testbin/layer2.cfg +37 -0
- package/openh264/testbin/layer2_arbitrary_res.cfg +37 -0
- package/openh264/testbin/layer2_vd.cfg +38 -0
- package/openh264/testbin/layer2_vd_rc.cfg +38 -0
- package/openh264/testbin/welsenc.cfg +71 -0
- package/openh264/testbin/welsenc_arbitrary_res.cfg +70 -0
- package/openh264/testbin/welsenc_ios.cfg +71 -0
- package/openh264/testbin/welsenc_vd_1d.cfg +70 -0
- package/openh264/testbin/welsenc_vd_rc.cfg +69 -0
- package/openh264/ut.def +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
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
|
+
* \file set_mb_syn_cabac.h
|
|
33
|
+
*
|
|
34
|
+
* \brief Seting all syntax elements of mb and encoding residual with cabac
|
|
35
|
+
*
|
|
36
|
+
* \date 09/27/2014 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
#ifndef SET_MB_SYN_CABAC_H_
|
|
42
|
+
#define SET_MB_SYN_CABAC_H_
|
|
43
|
+
|
|
44
|
+
#include "typedefs.h"
|
|
45
|
+
#include "wels_common_defs.h"
|
|
46
|
+
|
|
47
|
+
using namespace WelsCommon;
|
|
48
|
+
|
|
49
|
+
namespace WelsEnc {
|
|
50
|
+
|
|
51
|
+
#define WELS_QP_MAX 51
|
|
52
|
+
|
|
53
|
+
typedef uint64_t cabac_low_t;
|
|
54
|
+
enum { CABAC_LOW_WIDTH = sizeof (cabac_low_t) / sizeof (uint8_t) * 8 };
|
|
55
|
+
|
|
56
|
+
typedef struct TagStateCtx {
|
|
57
|
+
// Packed representation of state and MPS as state << 1 | MPS.
|
|
58
|
+
uint8_t m_uiStateMps;
|
|
59
|
+
|
|
60
|
+
uint8_t Mps() const { return m_uiStateMps & 1; }
|
|
61
|
+
uint8_t State() const { return m_uiStateMps >> 1; }
|
|
62
|
+
void Set (uint8_t uiState, uint8_t uiMps) { m_uiStateMps = uiState * 2 + uiMps; }
|
|
63
|
+
} SStateCtx;
|
|
64
|
+
typedef struct TagCabacCtx {
|
|
65
|
+
cabac_low_t m_uiLow;
|
|
66
|
+
int32_t m_iLowBitCnt;
|
|
67
|
+
int32_t m_iRenormCnt;
|
|
68
|
+
uint32_t m_uiRange;
|
|
69
|
+
SStateCtx m_sStateCtx[WELS_CONTEXT_COUNT];
|
|
70
|
+
uint8_t* m_pBufStart;
|
|
71
|
+
uint8_t* m_pBufEnd;
|
|
72
|
+
uint8_t* m_pBufCur;
|
|
73
|
+
} SCabacCtx;
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
void WelsCabacContextInit (void* pCtx, SCabacCtx* pCbCtx, int32_t iModel);
|
|
77
|
+
void WelsCabacEncodeInit (SCabacCtx* pCbCtx, uint8_t* pBuf, uint8_t* pEnd);
|
|
78
|
+
inline void WelsCabacEncodeDecision (SCabacCtx* pCbCtx, int32_t iCtx, uint32_t uiBin);
|
|
79
|
+
inline void WelsCabacEncodeBypassOne (SCabacCtx* pCbCtx, int32_t uiBin);
|
|
80
|
+
void WelsCabacEncodeTerminate (SCabacCtx* pCbCtx, uint32_t uiBin);
|
|
81
|
+
void WelsCabacEncodeUeBypass (SCabacCtx* pCbCtx, int32_t iExpBits, uint32_t uiVal);
|
|
82
|
+
void WelsCabacEncodeFlush (SCabacCtx* pCbCtx);
|
|
83
|
+
uint8_t* WelsCabacEncodeGetPtr (SCabacCtx* pCbCtx);
|
|
84
|
+
int32_t WriteBlockResidualCabac (void* pEncCtx, int16_t* pCoffLevel, int32_t iEndIdx,
|
|
85
|
+
int32_t iCalRunLevelFlag,
|
|
86
|
+
int32_t iResidualProperty, int8_t iNC, SBitStringAux* pBs);
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
// private functions used by public inline functions.
|
|
90
|
+
void WelsCabacEncodeDecisionLps_ (SCabacCtx* pCbCtx, int32_t iCtx);
|
|
91
|
+
void WelsCabacEncodeUpdateLowNontrivial_ (SCabacCtx* pCbCtx);
|
|
92
|
+
inline void WelsCabacEncodeUpdateLow_ (SCabacCtx* pCbCtx) {
|
|
93
|
+
if (pCbCtx->m_iLowBitCnt + pCbCtx->m_iRenormCnt < CABAC_LOW_WIDTH) {
|
|
94
|
+
pCbCtx->m_iLowBitCnt += pCbCtx->m_iRenormCnt;
|
|
95
|
+
pCbCtx->m_uiLow <<= pCbCtx->m_iRenormCnt;
|
|
96
|
+
} else {
|
|
97
|
+
WelsCabacEncodeUpdateLowNontrivial_ (pCbCtx);
|
|
98
|
+
}
|
|
99
|
+
pCbCtx->m_iRenormCnt = 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// inline function definitions.
|
|
103
|
+
void WelsCabacEncodeDecision (SCabacCtx* pCbCtx, int32_t iCtx, uint32_t uiBin) {
|
|
104
|
+
if (uiBin == pCbCtx->m_sStateCtx[iCtx].Mps()) {
|
|
105
|
+
const int32_t kiState = pCbCtx->m_sStateCtx[iCtx].State();
|
|
106
|
+
uint32_t uiRange = pCbCtx->m_uiRange;
|
|
107
|
+
uint32_t uiRangeLps = g_kuiCabacRangeLps[kiState][(uiRange & 0xff) >> 6];
|
|
108
|
+
uiRange -= uiRangeLps;
|
|
109
|
+
|
|
110
|
+
const int32_t kiRenormAmount = uiRange >> 8 ^ 1;
|
|
111
|
+
pCbCtx->m_uiRange = uiRange << kiRenormAmount;
|
|
112
|
+
pCbCtx->m_iRenormCnt += kiRenormAmount;
|
|
113
|
+
pCbCtx->m_sStateCtx[iCtx].Set (g_kuiStateTransTable[kiState][1], uiBin);
|
|
114
|
+
} else {
|
|
115
|
+
WelsCabacEncodeDecisionLps_ (pCbCtx, iCtx);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
void WelsCabacEncodeBypassOne (SCabacCtx* pCbCtx, int32_t uiBin) {
|
|
120
|
+
const uint32_t kuiBinBitmask = -uiBin;
|
|
121
|
+
pCbCtx->m_iRenormCnt++;
|
|
122
|
+
WelsCabacEncodeUpdateLow_ (pCbCtx);
|
|
123
|
+
pCbCtx->m_uiLow += kuiBinBitmask & pCbCtx->m_uiRange;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
}
|
|
127
|
+
#endif
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
* \file set_mb_syn_cavlc.h
|
|
33
|
+
*
|
|
34
|
+
* \brief Seting all syntax elements of mb and decoding residual with cavlc
|
|
35
|
+
*
|
|
36
|
+
* \date 05/19/2009 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
#ifndef SET_MB_SYN_CAVLC_H_
|
|
42
|
+
#define SET_MB_SYN_CAVLC_H_
|
|
43
|
+
|
|
44
|
+
#include "typedefs.h"
|
|
45
|
+
#include "wels_func_ptr_def.h"
|
|
46
|
+
|
|
47
|
+
namespace WelsEnc {
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
enum ECtxBlockCat {
|
|
51
|
+
LUMA_DC = 0,
|
|
52
|
+
LUMA_AC = 1,
|
|
53
|
+
LUMA_4x4 = 2,
|
|
54
|
+
CHROMA_DC = 3,
|
|
55
|
+
CHROMA_AC = 4
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
#define LUMA_DC_AC 0x04
|
|
60
|
+
|
|
61
|
+
typedef struct TagCavlcTableItem {
|
|
62
|
+
uint16_t uiBits;
|
|
63
|
+
uint8_t uiLen;
|
|
64
|
+
uint8_t uiSuffixLength;
|
|
65
|
+
} SCavlcTableItem;
|
|
66
|
+
|
|
67
|
+
void InitCoeffFunc (SWelsFuncPtrList* pFuncList, const uint32_t uiCpuFlag,int32_t iEntropyCodingModeFlag);
|
|
68
|
+
|
|
69
|
+
int32_t WriteBlockResidualCavlc (SWelsFuncPtrList* pFuncList, int16_t* pCoffLevel, int32_t iEndIdx,
|
|
70
|
+
int32_t iCalRunLevelFlag,
|
|
71
|
+
int32_t iResidualProperty, int8_t iNC, SBitStringAux* pBs);
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
#if defined(__cplusplus)
|
|
75
|
+
extern "C" {
|
|
76
|
+
#endif//__cplusplus
|
|
77
|
+
|
|
78
|
+
int32_t CavlcParamCal_c (int16_t* pCoffLevel, uint8_t* pRun, int16_t* pLevel, int32_t* pTotalCoeffs ,
|
|
79
|
+
int32_t iEndIdx);
|
|
80
|
+
#ifdef X86_ASM
|
|
81
|
+
int32_t CavlcParamCal_sse2 (int16_t* pCoffLevel, uint8_t* pRun, int16_t* pLevel, int32_t* pTotalCoeffs ,
|
|
82
|
+
int32_t iEndIdx);
|
|
83
|
+
int32_t CavlcParamCal_sse42 (int16_t* pCoffLevel, uint8_t* pRun, int16_t* pLevel, int32_t* pTotalCoeffs ,
|
|
84
|
+
int32_t iEndIdx);
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
#if defined(__cplusplus)
|
|
88
|
+
}
|
|
89
|
+
#endif//__cplusplus
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
#endif
|
|
@@ -0,0 +1,212 @@
|
|
|
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
|
+
//wels_slice.h
|
|
34
|
+
#ifndef WELS_SLICE_H__
|
|
35
|
+
#define WELS_SLICE_H__
|
|
36
|
+
|
|
37
|
+
#include "typedefs.h"
|
|
38
|
+
#include "wels_const.h"
|
|
39
|
+
#include "wels_common_basis.h"
|
|
40
|
+
#include "mb_cache.h"
|
|
41
|
+
#include "picture.h"
|
|
42
|
+
#include "parameter_sets.h"
|
|
43
|
+
#include "svc_enc_slice_segment.h"
|
|
44
|
+
#include "set_mb_syn_cabac.h"
|
|
45
|
+
#include "nal_encap.h"
|
|
46
|
+
|
|
47
|
+
namespace WelsEnc {
|
|
48
|
+
|
|
49
|
+
/*******************************sub struct of slice header****************************/
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* Reference picture list reordering syntax, refer to page 64 in JVT X201wcm
|
|
54
|
+
*/
|
|
55
|
+
typedef struct TagRefPicListReorderSyntax {
|
|
56
|
+
struct {
|
|
57
|
+
uint32_t uiAbsDiffPicNumMinus1; //uiAbsDiffPicNumMinus1 SHOULD be in the range of [4, (1<<pSps->uiLog2MaxFrameNum)-1], {p104, JVT-X201wcm1}
|
|
58
|
+
//but int8_t can't cover the range, SHOULD modify it.
|
|
59
|
+
uint16_t iLongTermPicNum;
|
|
60
|
+
uint16_t uiReorderingOfPicNumsIdc; //in order to pack 2-uint16_t into 1-(u)int32_t, so modify the type into uint16_t.
|
|
61
|
+
} SReorderingSyntax[MAX_REFERENCE_REORDER_COUNT_NUM]; // MAX_REF_PIC_COUNT
|
|
62
|
+
} SRefPicListReorderSyntax;
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
/* Decoded reference picture marking syntax, refer to Page 66 in JVT X201wcm */
|
|
66
|
+
typedef struct TagRefPicMarking {
|
|
67
|
+
struct {
|
|
68
|
+
int32_t iMmcoType;
|
|
69
|
+
int32_t iShortFrameNum;
|
|
70
|
+
int32_t iDiffOfPicNum;
|
|
71
|
+
int32_t iLongTermPicNum;
|
|
72
|
+
int32_t iLongTermFrameIdx;
|
|
73
|
+
int32_t iMaxLongTermFrameIdx;
|
|
74
|
+
} SMmcoRef[MAX_REFERENCE_MMCO_COUNT_NUM]; // MAX_MMCO_COUNT
|
|
75
|
+
|
|
76
|
+
// int32_t mmco_index;
|
|
77
|
+
uint8_t uiMmcoCount;
|
|
78
|
+
bool bNoOutputOfPriorPicsFlag;
|
|
79
|
+
bool bLongTermRefFlag;
|
|
80
|
+
bool bAdaptiveRefPicMarkingModeFlag;
|
|
81
|
+
} SRefPicMarking;
|
|
82
|
+
|
|
83
|
+
// slice level rc statistic info
|
|
84
|
+
typedef struct TagRCSlicing {
|
|
85
|
+
int32_t iComplexityIndexSlice;
|
|
86
|
+
int32_t iCalculatedQpSlice;
|
|
87
|
+
int32_t iStartMbSlice;
|
|
88
|
+
int32_t iEndMbSlice;
|
|
89
|
+
int32_t iTotalQpSlice;
|
|
90
|
+
int32_t iTotalMbSlice;
|
|
91
|
+
int32_t iTargetBitsSlice;
|
|
92
|
+
int32_t iBsPosSlice;
|
|
93
|
+
int32_t iFrameBitsSlice;
|
|
94
|
+
int32_t iGomBitsSlice;
|
|
95
|
+
int32_t iGomTargetBits;
|
|
96
|
+
//int32_t gom_coded_mb;
|
|
97
|
+
} SRCSlicing;
|
|
98
|
+
|
|
99
|
+
/* Header of slice syntax elements, refer to Page 63 in JVT X201wcm */
|
|
100
|
+
typedef struct TagSliceHeader {
|
|
101
|
+
/*****************************slice header syntax and generated****************************/
|
|
102
|
+
int32_t iFirstMbInSlice;
|
|
103
|
+
// uint32_t pic_parameter_set_id;
|
|
104
|
+
int32_t iFrameNum;
|
|
105
|
+
int32_t iPicOrderCntLsb;
|
|
106
|
+
|
|
107
|
+
// int32_t delta_pic_order_cnt_bottom;
|
|
108
|
+
// int32_t delta_pic_order_cnt[2];
|
|
109
|
+
// int32_t redundant_pic_cnt;
|
|
110
|
+
|
|
111
|
+
EWelsSliceType eSliceType;
|
|
112
|
+
uint8_t uiNumRefIdxL0Active; //
|
|
113
|
+
//int32_t num_ref_idx_l1_active_minus1 //B frame is not supported
|
|
114
|
+
uint8_t uiRefCount;
|
|
115
|
+
//Ref_Pic *ref_pic;
|
|
116
|
+
uint8_t uiRefIndex; // exact reference picture index for slice
|
|
117
|
+
|
|
118
|
+
int8_t iSliceQpDelta;
|
|
119
|
+
// int32_t slice_qp;
|
|
120
|
+
// int32_t slice_qs_delta; // For SP/SI slices
|
|
121
|
+
uint8_t uiDisableDeblockingFilterIdc;
|
|
122
|
+
int8_t iSliceAlphaC0Offset;
|
|
123
|
+
int8_t iSliceBetaOffset;
|
|
124
|
+
#if !defined(DISABLE_FMO_FEATURE)
|
|
125
|
+
int32_t iSliceGroupChangeCycle;
|
|
126
|
+
#endif//!DISABLE_FMO_FEATURE
|
|
127
|
+
|
|
128
|
+
SWelsSPS* pSps;
|
|
129
|
+
SWelsPPS* pPps;
|
|
130
|
+
int32_t iSpsId;
|
|
131
|
+
int32_t iPpsId;
|
|
132
|
+
|
|
133
|
+
uint16_t uiIdrPicId;
|
|
134
|
+
// uint8_t color_plane_id;//from?
|
|
135
|
+
|
|
136
|
+
bool bNumRefIdxActiveOverrideFlag;
|
|
137
|
+
// bool field_pic_flag; //not supported in base profile
|
|
138
|
+
// bool bottom_field_flag; //not supported in base profile
|
|
139
|
+
uint8_t uiPadding1Bytes;
|
|
140
|
+
|
|
141
|
+
SRefPicMarking sRefMarking; // Decoded reference picture marking syntaxs
|
|
142
|
+
|
|
143
|
+
SRefPicListReorderSyntax sRefReordering; // Reference picture list reordering syntaxs
|
|
144
|
+
} SSliceHeader, *PSliceHeader;
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
/* SSlice header in scalable extension syntax, refer to Page 394 in JVT X201wcm */
|
|
148
|
+
typedef struct TagSliceHeaderExt {
|
|
149
|
+
SSliceHeader sSliceHeader;
|
|
150
|
+
|
|
151
|
+
SSubsetSps* pSubsetSps;
|
|
152
|
+
|
|
153
|
+
uint32_t uiNumMbsInSlice;
|
|
154
|
+
|
|
155
|
+
bool bStoreRefBasePicFlag;
|
|
156
|
+
bool bConstrainedIntraResamplingFlag;
|
|
157
|
+
bool bSliceSkipFlag;
|
|
158
|
+
|
|
159
|
+
bool bAdaptiveBaseModeFlag;
|
|
160
|
+
bool bDefaultBaseModeFlag;
|
|
161
|
+
bool bAdaptiveMotionPredFlag;
|
|
162
|
+
bool bDefaultMotionPredFlag;
|
|
163
|
+
|
|
164
|
+
bool bAdaptiveResidualPredFlag;
|
|
165
|
+
bool bDefaultResidualPredFlag;
|
|
166
|
+
bool bTcoeffLevelPredFlag;
|
|
167
|
+
uint8_t uiDisableInterLayerDeblockingFilterIdc;
|
|
168
|
+
|
|
169
|
+
} SSliceHeaderExt, *PSliceHeaderExt;
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
typedef struct TagSlice {
|
|
173
|
+
// mainly for multiple threads imp.
|
|
174
|
+
SMbCache sMbCacheInfo; // MBCache is introduced within slice dependency
|
|
175
|
+
SBitStringAux* pSliceBsa;
|
|
176
|
+
SWelsSliceBs sSliceBs;
|
|
177
|
+
|
|
178
|
+
/*******************************sSliceHeader****************************/
|
|
179
|
+
SSliceHeaderExt sSliceHeaderExt;
|
|
180
|
+
|
|
181
|
+
SMVUnitXY sMvStartMin;
|
|
182
|
+
SMVUnitXY sMvStartMax;
|
|
183
|
+
SMVUnitXY sMvc[5];
|
|
184
|
+
uint8_t uiMvcNum;
|
|
185
|
+
uint8_t sScaleShift;
|
|
186
|
+
|
|
187
|
+
int32_t iSliceIdx;
|
|
188
|
+
uint32_t uiBufferIdx;
|
|
189
|
+
bool bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext?
|
|
190
|
+
uint8_t uiLastMbQp; // stored qp for last mb coded, maybe more efficient for mb skip detection etc.
|
|
191
|
+
|
|
192
|
+
bool bDynamicSlicingSliceSizeCtrlFlag;
|
|
193
|
+
uint8_t uiAssumeLog2BytePerMb;
|
|
194
|
+
|
|
195
|
+
uint32_t uiSliceFMECostDown;//TODO: for FME switch under MT, to opt after ME final?
|
|
196
|
+
|
|
197
|
+
uint8_t uiReservedFillByte; // reserved to meet 4 bytes alignment
|
|
198
|
+
|
|
199
|
+
SCabacCtx sCabacCtx;
|
|
200
|
+
int32_t iCabacInitIdc;
|
|
201
|
+
int32_t iMbSkipRun;
|
|
202
|
+
|
|
203
|
+
int32_t iCountMbNumInSlice;
|
|
204
|
+
uint32_t uiSliceConsumeTime;
|
|
205
|
+
int32_t iSliceComplexRatio;
|
|
206
|
+
|
|
207
|
+
SRCSlicing sSlicingOverRc; //slice level rc statistic info
|
|
208
|
+
} SSlice, *PSlice;
|
|
209
|
+
|
|
210
|
+
}
|
|
211
|
+
#endif//WELS_SLICE_H__
|
|
212
|
+
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* \copy
|
|
3
|
+
* Copyright (c) 2010-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
|
+
* \file slice_multi_threading.c
|
|
33
|
+
*
|
|
34
|
+
* \brief slice based multiple threading
|
|
35
|
+
*
|
|
36
|
+
* \date 04/16/2010 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
#ifndef SVC_SLICE_MULTIPLE_THREADING_H__
|
|
41
|
+
#define SVC_SLICE_MULTIPLE_THREADING_H__
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
#include "typedefs.h"
|
|
45
|
+
#include "codec_app_def.h"
|
|
46
|
+
#include "param_svc.h"
|
|
47
|
+
#include "encoder_context.h"
|
|
48
|
+
#include "svc_enc_frame.h"
|
|
49
|
+
#include "svc_enc_macroblock.h"
|
|
50
|
+
#include "svc_enc_slice_segment.h"
|
|
51
|
+
#include "WelsThreadLib.h"
|
|
52
|
+
|
|
53
|
+
namespace WelsEnc {
|
|
54
|
+
void UpdateMbListNeighborParallel (SDqLayer* pCurDq,
|
|
55
|
+
SMB* pMbList,
|
|
56
|
+
const int32_t kiSliceIdc);
|
|
57
|
+
|
|
58
|
+
void CalcSliceComplexRatio (SDqLayer* pCurDq);
|
|
59
|
+
|
|
60
|
+
int32_t NeedDynamicAdjust (SSlice** ppSliceInLayer, const int32_t iSliceNum);
|
|
61
|
+
|
|
62
|
+
void DynamicAdjustSlicing (sWelsEncCtx* pCtx,
|
|
63
|
+
SDqLayer* pCurDqLayer,
|
|
64
|
+
int32_t iCurDid);
|
|
65
|
+
|
|
66
|
+
int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pParam, const int32_t kiCountBsLen,
|
|
67
|
+
const int32_t kiTargetSpatialBsSize, bool bDynamicSlice);
|
|
68
|
+
|
|
69
|
+
void ReleaseMtResource (sWelsEncCtx** ppCtx);
|
|
70
|
+
|
|
71
|
+
int32_t AppendSliceToFrameBs (sWelsEncCtx* pCtx, SLayerBSInfo* pLbi, const int32_t kiSliceCount);
|
|
72
|
+
|
|
73
|
+
#if !defined(_WIN32)
|
|
74
|
+
WELS_THREAD_ROUTINE_TYPE UpdateMbListThreadProc (void* arg);
|
|
75
|
+
#endif//!_WIN32
|
|
76
|
+
|
|
77
|
+
int32_t DynamicDetectCpuCores();
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
int32_t AdjustBaseLayer (sWelsEncCtx* pCtx);
|
|
81
|
+
int32_t AdjustEnhanceLayer (sWelsEncCtx* pCtx, int32_t iCurDid);
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
#if defined(MT_DEBUG)
|
|
86
|
+
void TrackSliceComplexities (sWelsEncCtx* pCtx, const int32_t kiCurDid);
|
|
87
|
+
#endif
|
|
88
|
+
#if defined(MT_DEBUG)
|
|
89
|
+
void TrackSliceConsumeTime (sWelsEncCtx* pCtx, int32_t* pDidList, const int32_t kiSpatialNum);
|
|
90
|
+
#endif//defined(MT_DEBUG)
|
|
91
|
+
|
|
92
|
+
void SetOneSliceBsBufferUnderMultithread(sWelsEncCtx* pCtx, const int32_t kiThreadIdx, SSlice* pSlice);
|
|
93
|
+
int32_t WriteSliceBs (sWelsEncCtx* pCtx,SWelsSliceBs* pSliceBs,const int32_t iSliceIdx,int32_t& iSliceSize);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
#endif//SVC_SLICE_MULTIPLE_THREADING_H__
|
|
97
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
* \file stat.h
|
|
33
|
+
*
|
|
34
|
+
* \brief statistical pData information
|
|
35
|
+
*
|
|
36
|
+
* \date 4/22/2009 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
#if !defined(WELS_ENCODER_STATISTICAL_DATA_H__)
|
|
41
|
+
#define WELS_ENCODER_STATISTICAL_DATA_H__
|
|
42
|
+
|
|
43
|
+
namespace WelsEnc {
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
* Stat quality
|
|
47
|
+
*/
|
|
48
|
+
typedef struct TagStatQuality {
|
|
49
|
+
|
|
50
|
+
float rYPsnr[5];
|
|
51
|
+
float rUPsnr[5];
|
|
52
|
+
float rVPsnr[5];
|
|
53
|
+
|
|
54
|
+
} SStatQuality;
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* Stat complexity pData
|
|
58
|
+
*/
|
|
59
|
+
typedef struct TagComplexityStat {
|
|
60
|
+
|
|
61
|
+
#ifdef FME_TEST
|
|
62
|
+
int32_t cost_time;
|
|
63
|
+
int32_t me_time;
|
|
64
|
+
int32_t mvp_time;
|
|
65
|
+
int32_t mvb_time;
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
// any else?
|
|
69
|
+
|
|
70
|
+
} SComplexityStat;
|
|
71
|
+
|
|
72
|
+
/*
|
|
73
|
+
* Stat slice details information
|
|
74
|
+
*/
|
|
75
|
+
typedef struct TagStatSliceInfo {
|
|
76
|
+
|
|
77
|
+
/* per slice info */
|
|
78
|
+
int32_t iSliceCount[5];
|
|
79
|
+
int32_t iSliceSize [5];
|
|
80
|
+
int32_t iMbCount [5][18];
|
|
81
|
+
|
|
82
|
+
} SStatSliceInfo;
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* For overall statistical pData
|
|
86
|
+
*/
|
|
87
|
+
typedef struct TagStatData {
|
|
88
|
+
|
|
89
|
+
// Quality
|
|
90
|
+
SStatQuality sQualityStat;
|
|
91
|
+
|
|
92
|
+
// Complexity
|
|
93
|
+
SComplexityStat sComplexityStat;
|
|
94
|
+
|
|
95
|
+
// SSlice information output
|
|
96
|
+
SStatSliceInfo sSliceData;
|
|
97
|
+
|
|
98
|
+
} SStatData;
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
#endif//WELS_ENCODER_STATISTICAL_DATA_H__
|