@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,102 @@
|
|
|
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 svc_base_layer_md.h
|
|
33
|
+
*
|
|
34
|
+
* \brief mode decision
|
|
35
|
+
*
|
|
36
|
+
* \date 2009.08.10 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
#ifndef SVC_BASE_LAYER_MACROBLOCK_MODE_DECISION_H__
|
|
41
|
+
#define SVC_BASE_LAYER_MACROBLOCK_MODE_DECISION_H__
|
|
42
|
+
|
|
43
|
+
#include "md.h"
|
|
44
|
+
#include "mb_cache.h"
|
|
45
|
+
|
|
46
|
+
namespace WelsEnc {
|
|
47
|
+
void WelsMdIntraInit (sWelsEncCtx* pEncCtx, SMB* pCurMb, SMbCache* pMbCache, const int32_t kiSliceFirstMbXY);
|
|
48
|
+
int32_t WelsMdI16x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SMbCache* pMbCache, int32_t iLambda);
|
|
49
|
+
int32_t WelsMdIntraChroma (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SMbCache* pMbCache, int32_t iLambda);
|
|
50
|
+
|
|
51
|
+
int32_t WelsMdI4x4 (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
52
|
+
int32_t WelsMdI4x4Fast (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
53
|
+
|
|
54
|
+
int32_t WelsMdIntraFinePartition (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
55
|
+
int32_t WelsMdIntraFinePartitionVaa (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
56
|
+
|
|
57
|
+
void WelsMdIntraMb (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
58
|
+
|
|
59
|
+
void WelsMdBackgroundMbEnc (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache, SSlice* pSlice, bool bSkipMbFlag);
|
|
60
|
+
bool WelsMdPSkipEnc (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
61
|
+
int32_t WelsMdP16x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb);
|
|
62
|
+
|
|
63
|
+
int32_t WelsMdP16x8 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice);
|
|
64
|
+
int32_t WelsMdP8x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice);
|
|
65
|
+
int32_t WelsMdP8x8 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice);
|
|
66
|
+
int32_t WelsMdP4x4 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice, const int32_t ki8x8Idx);
|
|
67
|
+
int32_t WelsMdP8x4 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice, const int32_t ki8x8Idx);
|
|
68
|
+
int32_t WelsMdP4x8 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice, const int32_t ki8x8Idx);
|
|
69
|
+
/*static*/ void WelsMdInterInit (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb, const int32_t kiSliceFirstMbXY);
|
|
70
|
+
/*static*/ void WelsMdInterFinePartition (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, int32_t bestCost);
|
|
71
|
+
/*static*/ void WelsMdInterFinePartitionVaa (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, int32_t bestCost);
|
|
72
|
+
/*static*/ void WelsMdInterFinePartitionVaaOnScreen (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb,
|
|
73
|
+
int32_t bestCost);
|
|
74
|
+
void WelsMdInterMbRefinement (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
75
|
+
bool WelsMdFirstIntraMode (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
76
|
+
//bool svc_md_first_intra_mode_constrained(sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache *pMbCache);
|
|
77
|
+
void WelsMdInterMb (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pUnused);
|
|
78
|
+
|
|
79
|
+
//both used in BL and EL
|
|
80
|
+
//void wels_md_inter_init ( SWelsMD* pMd, const uint8_t ref_idx, const bool is_highest_dlayer_flag );
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
bool WelsMdInterJudgePskip (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
|
85
|
+
bool bTrySkip);
|
|
86
|
+
void WelsMdInterUpdatePskip (SDqLayer* pCurDqLayer, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache);
|
|
87
|
+
void WelsMdInterDecidedPskip (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache);
|
|
88
|
+
|
|
89
|
+
void WelsMdInterDoubleCheckPskip (SMB* pCurMb, SMbCache* pMbCache);
|
|
90
|
+
void WelsMdInterEncode (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache);
|
|
91
|
+
|
|
92
|
+
void WelsMdInterSaveSadAndRefMbType (Mb_Type* pRefMbTypeList, SMbCache* pMbCache, const SMB* kpCurMb,
|
|
93
|
+
const SWelsMD* kpMd);
|
|
94
|
+
|
|
95
|
+
void WelsMdInterSecondaryModesEnc (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb,
|
|
96
|
+
SMbCache* pMbCache, const bool kbSkip);
|
|
97
|
+
void WelsMdIntraSecondaryModesEnc (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
|
98
|
+
//end of: both used in BL and EL
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
#endif//WELS_MACROBLOCK_MODE_DECISION_H__
|
|
@@ -0,0 +1,136 @@
|
|
|
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_svc_layer.h
|
|
34
|
+
#ifndef WELS_SVC_EXTENSION_LAYER_H__
|
|
35
|
+
#define WELS_SVC_EXTENSION_LAYER_H__
|
|
36
|
+
|
|
37
|
+
#include "typedefs.h"
|
|
38
|
+
#include "wels_const.h"
|
|
39
|
+
#include "wels_common_basis.h"
|
|
40
|
+
#include "parameter_sets.h"
|
|
41
|
+
#include "slice.h"
|
|
42
|
+
#include "picture.h"
|
|
43
|
+
#include "svc_enc_macroblock.h"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
#include "svc_enc_slice_segment.h"
|
|
47
|
+
namespace WelsEnc {
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Frame level in SVC DQLayer instead.
|
|
51
|
+
* Dependency-Quaility layer struction definition for SVC extension of H.264/AVC
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
///////////////////////////////////DQ Layer level///////////////////////////////////
|
|
55
|
+
|
|
56
|
+
typedef struct TagDqLayer SDqLayer;
|
|
57
|
+
typedef SDqLayer* pDqLayer;
|
|
58
|
+
|
|
59
|
+
typedef struct TagFeatureSearchPreparation {
|
|
60
|
+
SScreenBlockFeatureStorage* pRefBlockFeature;//point the the ref frame storage
|
|
61
|
+
|
|
62
|
+
uint16_t* pFeatureOfBlock; // Feature of every block (8x8), begin with the point
|
|
63
|
+
uint8_t uiFeatureStrategyIndex;// index of hash strategy
|
|
64
|
+
|
|
65
|
+
/* for FME frame-level switch */
|
|
66
|
+
bool bFMESwitchFlag;
|
|
67
|
+
uint8_t uiFMEGoodFrameCount;
|
|
68
|
+
int32_t iHighFreMbCount;
|
|
69
|
+
} SFeatureSearchPreparation; //maintain only one
|
|
70
|
+
|
|
71
|
+
typedef struct TagSliceBufferInfo {
|
|
72
|
+
SSlice* pSliceBuffer; // slice buffer for multi thread,
|
|
73
|
+
int32_t iMaxSliceNum;
|
|
74
|
+
int32_t iCodedSliceNum;
|
|
75
|
+
}SSliceBufferInfo;
|
|
76
|
+
|
|
77
|
+
typedef struct TagLayerInfo {
|
|
78
|
+
SNalUnitHeaderExt sNalHeaderExt;
|
|
79
|
+
SSubsetSps* pSubsetSpsP; // current pSubsetSps used, memory alloc in external
|
|
80
|
+
SWelsSPS* pSpsP; // current pSps based avc used, memory alloc in external
|
|
81
|
+
SWelsPPS* pPpsP; // current pPps used
|
|
82
|
+
} SLayerInfo;
|
|
83
|
+
/* Layer Representation */
|
|
84
|
+
struct TagDqLayer {
|
|
85
|
+
SLayerInfo sLayerInfo;
|
|
86
|
+
SSliceBufferInfo sSliceBufferInfo[MAX_THREADS_NUM];
|
|
87
|
+
SSlice** ppSliceInLayer;
|
|
88
|
+
SSliceCtx sSliceEncCtx; // current slice context
|
|
89
|
+
uint8_t* pCsData[3]; // pointer to reconstructed picture pData
|
|
90
|
+
int32_t iCsStride[3]; // Cs stride
|
|
91
|
+
|
|
92
|
+
uint8_t* pEncData[3]; // pData picture to be encoded in current layer
|
|
93
|
+
int32_t iEncStride[3]; // pData picture stride
|
|
94
|
+
|
|
95
|
+
SMB* sMbDataP; // pointer to mb of mbAddr equal to 0 in slice, mb_data_ptr = mb_base_ptr + (1+iMbStride).
|
|
96
|
+
int16_t iMbWidth; // MB width of this picture, equal to pSps.iMbWidth
|
|
97
|
+
int16_t iMbHeight; // MB height of this picture, equal to pSps.iMbHeight;
|
|
98
|
+
|
|
99
|
+
bool bBaseLayerAvailableFlag; // whether base layer is available for prediction?
|
|
100
|
+
bool bSatdInMdFlag; // whether SATD is calculated in ME and integer-pel MD
|
|
101
|
+
|
|
102
|
+
uint8_t iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries
|
|
103
|
+
int8_t iLoopFilterAlphaC0Offset;// AlphaOffset: valid range [-6, 6], default 0
|
|
104
|
+
int8_t iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
|
|
105
|
+
uint8_t uiDisableInterLayerDeblockingFilterIdc;
|
|
106
|
+
int8_t iInterLayerSliceAlphaC0Offset;
|
|
107
|
+
int8_t iInterLayerSliceBetaOffset;
|
|
108
|
+
bool bDeblockingParallelFlag; //parallel_deblocking_flag
|
|
109
|
+
|
|
110
|
+
SPicture* pRefPic; // reference picture pointer
|
|
111
|
+
SPicture* pDecPic; // reconstruction picture pointer for layer
|
|
112
|
+
SPicture* pRefOri[MAX_REF_PIC_COUNT];
|
|
113
|
+
|
|
114
|
+
bool bThreadSlcBufferFlag;
|
|
115
|
+
bool bSliceBsBufferFlag;
|
|
116
|
+
int32_t iMaxSliceNum;
|
|
117
|
+
int32_t NumSliceCodedOfPartition[MAX_THREADS_NUM]; // for dynamic slicing mode
|
|
118
|
+
int32_t LastCodedMbIdxOfPartition[MAX_THREADS_NUM]; // for dynamic slicing mode
|
|
119
|
+
int32_t FirstMbIdxOfPartition[MAX_THREADS_NUM]; // for dynamic slicing mode
|
|
120
|
+
int32_t EndMbIdxOfPartition[MAX_THREADS_NUM]; // for dynamic slicing mode
|
|
121
|
+
int32_t* pFirstMbIdxOfSlice;
|
|
122
|
+
int32_t* pCountMbNumInSlice;
|
|
123
|
+
|
|
124
|
+
bool bNeedAdjustingSlicing;
|
|
125
|
+
|
|
126
|
+
SFeatureSearchPreparation* pFeatureSearchPreparation;
|
|
127
|
+
|
|
128
|
+
SDqLayer* pRefLayer; // pointer to referencing dq_layer of current layer to be decoded
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
///////////////////////////////////////////////////////////////////////
|
|
132
|
+
|
|
133
|
+
// frame structure for svc
|
|
134
|
+
typedef SDqLayer SWelsSvcFrame;
|
|
135
|
+
}
|
|
136
|
+
#endif//WELS_SVC_EXTENSION_LAYER_H__
|
|
@@ -0,0 +1,123 @@
|
|
|
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 svc_enc_golomb.h
|
|
33
|
+
*
|
|
34
|
+
* \brief Exponential Golomb entropy coding routine
|
|
35
|
+
*
|
|
36
|
+
* \date 03/13/2009 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
#ifndef WELS_EXPONENTIAL_GOLOMB_ENTROPY_CODING_H__
|
|
41
|
+
#define WELS_EXPONENTIAL_GOLOMB_ENTROPY_CODING_H__
|
|
42
|
+
|
|
43
|
+
#include "wels_common_defs.h"
|
|
44
|
+
#include "golomb_common.h"
|
|
45
|
+
|
|
46
|
+
using namespace WelsCommon;
|
|
47
|
+
|
|
48
|
+
namespace WelsEnc {
|
|
49
|
+
|
|
50
|
+
/************************************************************************/
|
|
51
|
+
/* GOLOMB CODIMG FOR WELS ENCODER ONLY */
|
|
52
|
+
/************************************************************************/
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* Get size of unsigned exp golomb codes
|
|
57
|
+
*/
|
|
58
|
+
static inline uint32_t BsSizeUE (const uint32_t kiValue) {
|
|
59
|
+
if (256 > kiValue) {
|
|
60
|
+
return g_kuiGolombUELength[kiValue];
|
|
61
|
+
} else {
|
|
62
|
+
uint32_t n = 0;
|
|
63
|
+
uint32_t iTmpValue = kiValue + 1;
|
|
64
|
+
|
|
65
|
+
if (iTmpValue & 0xffff0000) {
|
|
66
|
+
iTmpValue >>= 16;
|
|
67
|
+
n += 16;
|
|
68
|
+
}
|
|
69
|
+
if (iTmpValue & 0xff00) {
|
|
70
|
+
iTmpValue >>= 8;
|
|
71
|
+
n += 8;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//n += (g_kuiGolombUELength[iTmpValue] >> 1);
|
|
75
|
+
n += (g_kuiGolombUELength[iTmpValue - 1] >> 1);
|
|
76
|
+
return ((n << 1) + 1);
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/*
|
|
82
|
+
* Get size of signed exp golomb codes
|
|
83
|
+
*/
|
|
84
|
+
static inline uint32_t BsSizeSE (const int32_t kiValue) {
|
|
85
|
+
uint32_t iTmpValue;
|
|
86
|
+
if (0 == kiValue) {
|
|
87
|
+
return 1;
|
|
88
|
+
} else if (0 < kiValue) {
|
|
89
|
+
iTmpValue = (kiValue << 1) - 1;
|
|
90
|
+
return BsSizeUE (iTmpValue);
|
|
91
|
+
} else {
|
|
92
|
+
iTmpValue = ((-kiValue) << 1);
|
|
93
|
+
return BsSizeUE (iTmpValue);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/*
|
|
98
|
+
* Write truncated exp golomb codes
|
|
99
|
+
*/
|
|
100
|
+
static inline void BsWriteTE (SBitStringAux* pBs, const int32_t kiX, const uint32_t kuiValue) {
|
|
101
|
+
if (1 == kiX) {
|
|
102
|
+
BsWriteOneBit (pBs, !kuiValue);
|
|
103
|
+
} else {
|
|
104
|
+
BsWriteUE (pBs, kuiValue);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
static inline int32_t BsGetBitsPos (SBitStringAux* pBs) {
|
|
109
|
+
return (int32_t) (((pBs->pCurBuf - pBs->pStartBuf) << 3) + 32 - pBs->iLeftBits);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
static inline void BsAlign( SBitStringAux* pBs )
|
|
113
|
+
{
|
|
114
|
+
if( pBs->iLeftBits&7 )
|
|
115
|
+
{
|
|
116
|
+
pBs->uiCurBits <<= pBs->iLeftBits&7;
|
|
117
|
+
pBs->uiCurBits |= (1 << (pBs->iLeftBits&7)) - 1;
|
|
118
|
+
pBs->iLeftBits &= ~7;
|
|
119
|
+
}
|
|
120
|
+
BsFlush(pBs );
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
#endif//WELS_EXPONENTIAL_GOLOMB_ENTROPY_CODING_H__
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
//macroblock.h
|
|
34
|
+
#ifndef WELS_MACROBLOCK_H__
|
|
35
|
+
#define WELS_MACROBLOCK_H__
|
|
36
|
+
|
|
37
|
+
#include "typedefs.h"
|
|
38
|
+
#include "wels_const.h"
|
|
39
|
+
#include "wels_common_basis.h"
|
|
40
|
+
#include "macros.h"
|
|
41
|
+
|
|
42
|
+
namespace WelsEnc {
|
|
43
|
+
|
|
44
|
+
//struct Mb_s;
|
|
45
|
+
|
|
46
|
+
/* MB syntax and context, refer to Page 399 in JVT X201wcm */
|
|
47
|
+
// keep the most essential level pData structure be 64 Bytes, which matches cache line size; if so, the order with structure maybe negligible.
|
|
48
|
+
// pls take care when modify MB structure size
|
|
49
|
+
typedef struct TagMB {
|
|
50
|
+
/*************************mb_layer() syntax and generated********************************/
|
|
51
|
+
/*mb_layer():*/
|
|
52
|
+
Mb_Type uiMbType; // including MB detailed partition type, number and type of reference list
|
|
53
|
+
uint8_t uiSubMbType[4]; // sub MB types
|
|
54
|
+
int32_t iMbXY; // offset position of MB top left point based
|
|
55
|
+
int16_t iMbX; // position of MB in horizontal axis [0..32767]
|
|
56
|
+
int16_t iMbY; // position of MB in vertical axis [0..32767]
|
|
57
|
+
|
|
58
|
+
uint8_t uiNeighborAvail; // avail && same_slice: LEFT_MB_POS:0x01, TOP_MB_POS:0x02, TOPRIGHT_MB_POS = 0x04 ,TOPLEFT_MB_POS = 0x08;
|
|
59
|
+
uint8_t uiCbp;
|
|
60
|
+
|
|
61
|
+
SMVUnitXY* sMv;
|
|
62
|
+
int8_t* pRefIndex;
|
|
63
|
+
|
|
64
|
+
int32_t* pSadCost; // mb sad. set to 0 for intra mb
|
|
65
|
+
int8_t* pIntra4x4PredMode; // [MB_BLOCK4x4_NUM]
|
|
66
|
+
int8_t* pNonZeroCount; // [MB_LUMA_CHROMA_BLOCK4x4_NUM]
|
|
67
|
+
|
|
68
|
+
SMVUnitXY sP16x16Mv;
|
|
69
|
+
|
|
70
|
+
uint8_t uiLumaQp; // uiLumaQp: pPps->iInitialQp + sSliceHeader->delta_qp + mb->dquant.
|
|
71
|
+
uint8_t uiChromaQp;
|
|
72
|
+
uint16_t uiSliceIdc; // 2^16=65536 > MaxFS(36864) of level 5.1; AVC: iFirstMbInSlice?; SVC: (iFirstMbInSlice << 7) | ((uiDependencyId << 4) | uiQualityId);
|
|
73
|
+
uint32_t uiChromPredMode;
|
|
74
|
+
int32_t iLumaDQp;
|
|
75
|
+
SMVUnitXY sMvd[MB_BLOCK4x4_NUM]; //only for CABAC writing; storage structure the same as sMv, in 4x4 scan order.
|
|
76
|
+
int32_t iCbpDc;
|
|
77
|
+
//uint8_t reserved_filling_bytes[1]; // not deleting this line for further changes of this structure. filling bytes reserved to make structure aligned with 4 bytes, higher cache hit on less structure size by 2 cache lines( 2 * 64 bytes) once hit
|
|
78
|
+
} SMB, *PMb;
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
#endif//WELS_MACROBLOCK_H__
|
|
@@ -0,0 +1,212 @@
|
|
|
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 slice_segment.h
|
|
33
|
+
*
|
|
34
|
+
* \brief SSlice segment routine (Single slice/multiple slice/fmo arrangement exclusive)
|
|
35
|
+
*
|
|
36
|
+
* \date 2/4/2009 Created
|
|
37
|
+
*
|
|
38
|
+
*************************************************************************************
|
|
39
|
+
*/
|
|
40
|
+
#ifndef WELS_SLICE_SEGMENT_H__
|
|
41
|
+
#define WELS_SLICE_SEGMENT_H__
|
|
42
|
+
|
|
43
|
+
#include "typedefs.h"
|
|
44
|
+
#include "macros.h"
|
|
45
|
+
#include "as264_common.h"
|
|
46
|
+
#include "memory_align.h"
|
|
47
|
+
|
|
48
|
+
#include "codec_app_def.h"
|
|
49
|
+
#include "set_mb_syn_cabac.h"
|
|
50
|
+
|
|
51
|
+
using namespace WelsCommon;
|
|
52
|
+
|
|
53
|
+
namespace WelsEnc {
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
// NOTE:
|
|
57
|
+
// if PREFIX_NALs are used in base layer(iDid=0, qid=0), MAX_SLICES_NUM will be half of MAX_NAL_UNITS_IN_LAYER in case ST or MT without PACKING_ONE_SLICE_PER_LAYER
|
|
58
|
+
// in case MT and PACKING_ONE_SLICE_PER_LAYER, MAX_SLICES_NUM should not be exceeding MAX_LAYER_NUM_OF_FRAME
|
|
59
|
+
// for AVC cases, maximal resolution we can support up to (?x1024) for SM_ROWMB_SLICE slice mode
|
|
60
|
+
// fine solution for MAX_SLICES_NUM, need us use the variable instead of MACRO for any resolution combining any multiple-slice mode adaptive
|
|
61
|
+
#define SAVED_NALUNIT_NUM ( (MAX_SPATIAL_LAYER_NUM*MAX_QUALITY_LAYER_NUM) + 1 + MAX_SPATIAL_LAYER_NUM ) // SPS/PPS + SEI/SSEI + PADDING_NAL
|
|
62
|
+
#define MAX_SLICES_NUM ( ( MAX_NAL_UNITS_IN_LAYER - SAVED_NALUNIT_NUM ) / 3 ) // Also MAX_SLICES_NUM need constrained by implementation: uiSliceIdc allocated in SSliceCtx.pOverallMbMap need a byte range as expected
|
|
63
|
+
#define AVERSLICENUM_CONSTRAINT (MAX_SLICES_NUM) // used in sNalList initialization,
|
|
64
|
+
|
|
65
|
+
#define MIN_NUM_MB_PER_SLICE 48 // (128/16 * 96/16), addressing the lowest resolution for multiple slicing is 128x96 above
|
|
66
|
+
|
|
67
|
+
#define DEFAULT_MAXPACKETSIZE_CONSTRAINT (1200) //in bytes
|
|
68
|
+
//#define MINPACKETSIZE_CONSTRAINT (1200)
|
|
69
|
+
|
|
70
|
+
#define AVER_MARGIN_BYTES ( 100 ) //in bytes
|
|
71
|
+
#define JUMPPACKETSIZE_CONSTRAINT(max_byte) ( max_byte - AVER_MARGIN_BYTES ) //in bytes
|
|
72
|
+
#define JUMPPACKETSIZE_JUDGE(len,mb_idx,max_byte) ( (len) > JUMPPACKETSIZE_CONSTRAINT(max_byte) ) //( (mb_idx+1)%40/*16slice for compare*/ == 0 ) //
|
|
73
|
+
//cur_mb_idx is for early tests, can be omit in optimization
|
|
74
|
+
typedef struct TagSlice SSlice;
|
|
75
|
+
typedef struct TagDqLayer SDqLayer;
|
|
76
|
+
typedef struct TagWelsEncCtx sWelsEncCtx;
|
|
77
|
+
/*!
|
|
78
|
+
* \brief SSlice context
|
|
79
|
+
*/
|
|
80
|
+
/* Single/multiple slices */
|
|
81
|
+
typedef struct SlicepEncCtx_s {
|
|
82
|
+
SliceModeEnum uiSliceMode; /* 0: single slice in frame; 1: multiple slices in frame; */
|
|
83
|
+
int16_t iMbWidth; /* width of picture size in mb */
|
|
84
|
+
int16_t iMbHeight; /* height of picture size in mb */
|
|
85
|
+
int32_t iSliceNumInFrame; /* count number of slices in frame; */
|
|
86
|
+
int32_t iMbNumInFrame; /* count number of MBs in frame */
|
|
87
|
+
uint16_t* pOverallMbMap; /* overall MB map in frame, store virtual slice idc; */
|
|
88
|
+
uint32_t uiSliceSizeConstraint; /* in byte */
|
|
89
|
+
int32_t iMaxSliceNumConstraint; /* maximal number of slices constraint */
|
|
90
|
+
|
|
91
|
+
} SSliceCtx;
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
typedef struct TagDynamicSlicingStack {
|
|
95
|
+
int32_t iStartPos;
|
|
96
|
+
int32_t iCurrentPos;
|
|
97
|
+
|
|
98
|
+
uint8_t* pBsStackBufPtr; // current writing position
|
|
99
|
+
uint32_t uiBsStackCurBits;
|
|
100
|
+
int32_t iBsStackLeftBits;
|
|
101
|
+
|
|
102
|
+
SCabacCtx sStoredCabac;
|
|
103
|
+
int32_t iMbSkipRunStack;
|
|
104
|
+
uint8_t uiLastMbQp;
|
|
105
|
+
uint8_t* pRestoreBuffer;
|
|
106
|
+
} SDynamicSlicingStack;
|
|
107
|
+
|
|
108
|
+
/*!
|
|
109
|
+
* \brief Initialize Wels SSlice context (Single/multiple slices and FMO)
|
|
110
|
+
*
|
|
111
|
+
* \param pCurDq current layer which its SSlice context will be initialized
|
|
112
|
+
* \param bFmoUseFlag flag of using fmo
|
|
113
|
+
* \param iMbWidth MB width
|
|
114
|
+
* \param iMbHeight MB height
|
|
115
|
+
* \param uiSliceMode slice mode
|
|
116
|
+
* \param mul_slice_arg argument for multiple slice if it is applicable
|
|
117
|
+
* \param pPpsArg argument for pPps parameter
|
|
118
|
+
*
|
|
119
|
+
* \return 0 - successful; none 0 - failed;
|
|
120
|
+
*/
|
|
121
|
+
int32_t InitSlicePEncCtx (SDqLayer* pCurDq,
|
|
122
|
+
CMemoryAlign* pMa,
|
|
123
|
+
bool bFmoUseFlag,
|
|
124
|
+
int32_t iMbWidth,
|
|
125
|
+
int32_t iMbHeight,
|
|
126
|
+
SSliceArgument* pSliceArgument,
|
|
127
|
+
void* pPpsArg);
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
/*!
|
|
131
|
+
* \brief Uninitialize Wels SSlice context (Single/multiple slices and FMO)
|
|
132
|
+
*
|
|
133
|
+
* \param pCurDq curent layer which its SSlice context will be initialized
|
|
134
|
+
*
|
|
135
|
+
* \return NONE;
|
|
136
|
+
*/
|
|
137
|
+
void UninitSlicePEncCtx (SDqLayer* pCurDq, CMemoryAlign* pMa);
|
|
138
|
+
|
|
139
|
+
/*!
|
|
140
|
+
* \brief Get slice idc for given iMbXY (apply in Single/multiple slices and FMO)
|
|
141
|
+
*
|
|
142
|
+
* \param pCurDq current layer info
|
|
143
|
+
* \param kiMbXY MB xy index
|
|
144
|
+
*
|
|
145
|
+
* \return uiSliceIdc - successful; (uint8_t)(-1) - failed;
|
|
146
|
+
*/
|
|
147
|
+
uint16_t WelsMbToSliceIdc (SDqLayer* pCurDq, const int32_t kiMbXY);
|
|
148
|
+
|
|
149
|
+
/*!
|
|
150
|
+
* \brief Get first mb in slice/slice_group: uiSliceIdc (apply in Single/multiple slices and FMO)
|
|
151
|
+
*
|
|
152
|
+
* \param pCurLayer current layer
|
|
153
|
+
* \param kiSliceIdc slice idc
|
|
154
|
+
*
|
|
155
|
+
* \return first_mb - successful; -1 - failed;
|
|
156
|
+
*/
|
|
157
|
+
int32_t WelsGetFirstMbOfSlice (SDqLayer* pCurLayer, const int32_t kiSliceIdc);
|
|
158
|
+
|
|
159
|
+
/*!
|
|
160
|
+
* \brief Get successive mb to be processed in slice/slice_group: uiSliceIdc (apply in Single/multiple slices and FMO)
|
|
161
|
+
*
|
|
162
|
+
* \param pCurDq current layer info
|
|
163
|
+
* \param kiMbXY MB xy index
|
|
164
|
+
*
|
|
165
|
+
* \return next_mb - successful; -1 - failed;
|
|
166
|
+
*/
|
|
167
|
+
int32_t WelsGetNextMbOfSlice (SDqLayer* pCurDq, const int32_t kiMbXY);
|
|
168
|
+
|
|
169
|
+
/*!
|
|
170
|
+
* \brief Get previous mb to be processed in slice/slice_group: uiSliceIdc (apply in Single/multiple slices and FMO)
|
|
171
|
+
*
|
|
172
|
+
* \param pCurDq current layer info
|
|
173
|
+
* \param kiMbXY MB xy index
|
|
174
|
+
*
|
|
175
|
+
* \return prev_mb - successful; -1 - failed;
|
|
176
|
+
*/
|
|
177
|
+
int32_t WelsGetPrevMbOfSlice (SDqLayer* pCurDq, const int32_t kiMbXY);
|
|
178
|
+
|
|
179
|
+
/*!
|
|
180
|
+
* \brief Get number of mb in slice/slice_group: uiSliceIdc (apply in Single/multiple slices and FMO)
|
|
181
|
+
*
|
|
182
|
+
* \param pCurDq current layer info
|
|
183
|
+
* \param pSlice slice which request slice num
|
|
184
|
+
* \param kiSliceIdc slice/slice_group idc
|
|
185
|
+
*
|
|
186
|
+
* \return count_num_of_mb - successful; -1 - failed;
|
|
187
|
+
*/
|
|
188
|
+
int32_t WelsGetNumMbInSlice (SDqLayer* pCurDq, SSlice* pSlice, const int32_t kuiSliceIdc);
|
|
189
|
+
|
|
190
|
+
/*!
|
|
191
|
+
* Get slice count for multiple slice segment
|
|
192
|
+
*
|
|
193
|
+
*/
|
|
194
|
+
int32_t GetInitialSliceNum (SSliceArgument* pSliceArgument);
|
|
195
|
+
int32_t GetCurrentSliceNum (const SDqLayer* pCurDq);
|
|
196
|
+
SSlice* GetSliceByIndex(sWelsEncCtx* pCtx, const int32_t kiSliceIdc);
|
|
197
|
+
|
|
198
|
+
//checking valid para
|
|
199
|
+
int32_t DynamicMaxSliceNumConstraint (uint32_t uiMaximumNum, int32_t uiConsumedNum, uint32_t uiDulplicateTimes);
|
|
200
|
+
|
|
201
|
+
bool CheckFixedSliceNumMultiSliceSetting (const int32_t kiMbNumInFrame, SSliceArgument* pSliceArg);
|
|
202
|
+
bool CheckRasterMultiSliceSetting (const int32_t kiMbNumInFrame, SSliceArgument* pSliceArg);
|
|
203
|
+
bool CheckRowMbMultiSliceSetting (const int32_t kiMbWidth, SSliceArgument* pSliceArg);
|
|
204
|
+
|
|
205
|
+
bool GomValidCheckSliceNum (const int32_t kiMbWidth, const int32_t kiMbHeight, uint32_t* pSliceNum);
|
|
206
|
+
bool GomValidCheckSliceMbNum (const int32_t kiMbWidth, const int32_t kiMbHeight, SSliceArgument* pSliceArg);
|
|
207
|
+
//end of checking valid para
|
|
208
|
+
|
|
209
|
+
int32_t DynamicAdjustSlicePEncCtxAll (SDqLayer* pCurDq,
|
|
210
|
+
int32_t* pRunLength);
|
|
211
|
+
}
|
|
212
|
+
#endif//WELS_SLICE_SEGMENT_H__
|