diff --git a/testbin/AutoBuild_Linux.sh b/testbin/AutoBuild_Linux.sh new file mode 100755 index 00000000..65435489 --- /dev/null +++ b/testbin/AutoBuild_Linux.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +usage="this file must located in ../testbin/ based on our code structure " +echo $usage + +CurDir=`pwd` +EncoderMakeDir="../codec/build/linux/enc/" +DecoderMakeDir="../codec/build/linux/dec/" +VPMakeDir="../processing/build/linux/" + +CodecBinDir="../codec/build/linux/bin/" +VPBinDir="../bin/linux" + +let "EncoderBuildFlag=1" +let "DecoderBuildFlag=1" +let "VPBuildFlag=1" +MakefileLogFile="${CurDir}/CodecVPBuild.log" + +#************************************************ +#call Encoder make file +echo "encoder building....." +cd ${EncoderMakeDir} +make clean >${MakefileLogFile} +make >>${MakefileLogFile} + +cd ${CurDir} +cd ${CodecBinDir} +if [ ! -e welsenc.a ] +then + let "EncoderBuildFlag=0" +fi + +if [ ! -e welsenc.so ] +then + let "EncoderBuildFlag=0" +fi + +if [ ! -e welsenc.exe ] +then + let "EncoderBuildFlag=0" +fi + +if [ "$EncoderBuildFlag" -eq 1 ] +then + echo "encoder build success!" +else + echo "encoder build failed!" +fi + +#************************************************ +#call Decoder make file +echo "decoder building....." +cd ${CurDir} +cd ${DecoderMakeDir} +make clean >>${MakefileLogFile} +make >>${MakefileLogFile} + +cd ${CurDir} +cd ${CodecBinDir} +if [ ! -e welsdec.a ] +then + let "DecoderBuildFlag=0" +fi + +if [ ! -e welsdec.so ] +then + let "DecoderBuildFlag=0" +fi + +if [ ! -e welsdec.exe ] +then + let "DecoderBuildFlag=0" +fi + +if [ "$DecoderBuildFlag" -eq 1 ] +then + echo "decoder build success!" +else + echo "decoder build failed!" +fi + +#************************************************ +#call VP make file +echo "VP building....." +cd ${CurDir} +cd ${VPMakeDir} +make clean >>${MakefileLogFile} +make >>${MakefileLogFile} + +cd ${CurDir} +cd ${VPBinDir} +if [ ! -e libwelsvp.so ] +then + let "VPBuildFlag=0" +fi + +if [ "$VPBuildFlag" -eq 1 ] +then + echo "VP build success!" +else + echo "VP build failed!" +fi + + +#**************************** +cd ${CurDir} +rm -f *.a *.exe *.so + +for file in ${CodecBinDir}/* +do + cp ${file} ./ + echo "file ${file} under ../openh264/bin/" +done + +for file in ${VPBinDir}/* +do + cp ${file} ./ + echo "file ${file} under ../openh264/bin/" +done + + + + + + + + + diff --git a/testbin/AutoBuild_Windows_VS2008.bat b/testbin/AutoBuild_Windows_VS2008.bat new file mode 100755 index 00000000..74f6cdde --- /dev/null +++ b/testbin/AutoBuild_Windows_VS2008.bat @@ -0,0 +1,59 @@ +echo off +SET usage="this file must located in ..\testbin\ based on our code structure " +echo %usage% + +echo "Auto build of openH264 by VS2008" + +SET VCBUILDEXE="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" + +SET CurDir=%~dp0 +SET EncoderProjectDir="..\codec\build\win32\enc\" +SET DecoderProjectDir="..\codec\build\win32\dec\" +SET VPProjectDir="..\processing\build\win32\" + +SET CodecBinDir="..\codec\build\win32\bin\" +SET VPBinDir="..\processing\bin\" + +SET EncoderBuildFlag=1 +SET DecoderBuildFlag=1 +SET VPBuildFlag=1 +SET MakefileLogFile="${CurDir}\CodecVPBuild.log" + +rem ************************************************ +rem call VP build +echo "Welsvp Building....." +cd %VPProjectDir% +rem vcclean +%VCBUILDEXE% WelsVP_2008.vcproj + + +rem ************************************************ +rem call WelsEncoder build +echo "WelsEncoder Building....." + +cd %CurDir% +cd %EncoderProjectDir% +rem vcclean +%VCBUILDEXE% WelsEncCore.vcproj +%VCBUILDEXE% WelsEncPlus.vcproj +%VCBUILDEXE% encConsole.vcproj + +rem ************************************************ +rem call WelsDecoder build +echo "WelsDecoder Building....." + +cd %CurDir% +cd %DecoderProjectDir% +rem vcclean +%VCBUILDEXE% WelsDecCore.vcproj +%VCBUILDEXE% WelsDecPlus.vcproj +%VCBUILDEXE% decConsole.vcproj + +cd %CurDir% +echo "this is the end of auto build..." +pause + +rem TBD + + + diff --git a/testbin/AutoBuild_Windows_VS2010.bat b/testbin/AutoBuild_Windows_VS2010.bat new file mode 100755 index 00000000..913330c3 --- /dev/null +++ b/testbin/AutoBuild_Windows_VS2010.bat @@ -0,0 +1,66 @@ +echo off +SET usage="this file must located in ..\testbin\ based on our code structure " +echo %usage% +echo "Auto build of openH264 by VS2010" + +SET VCENVSETBAT="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" + +Rem ************************************************ +rem reset the dev env for VS2010 +echo "reset the developing env for VS2010" +call %VCENVSETBAT% + + +SET VCMSBUILDEXE_RELEASE=MSbuild /t:Rebuild /p:Configuration=Release +SET VCMSBUILDEXE_DEBUG=MSbuild /t:Rebuild /p:Configuration=Debug + +SET CurDir=%~dp0 +SET EncoderProjectDir="..\codec\build\win32\enc\" +SET DecoderProjectDir="..\codec\build\win32\dec\" +SET VPProjectDir="..\processing\build\win32\" + +SET CodecBinDir="..\codec\build\win32\bin\" +SET VPBinDir="..\processing\bin\" + +SET EncoderBuildFlag=1 +SET DecoderBuildFlag=1 +SET VPBuildFlag=1 +SET MakefileLogFile="${CurDir}\CodecVPBuild.log" + + + +rem ************************************************ +rem call WelsEncoder build +echo "WelsEncoder Building....." + +cd %CurDir% +cd %EncoderProjectDir% +echo current directory is %EncoderProjectDir% +rem vcclean + +echo %VCMSBUILDEXE_RELEASE% WelsEncoder_2010.sln +%VCMSBUILDEXE_RELEASE% WelsEncoder_2010.sln +%VCMSBUILDEXE_DEBUG% WelsEncoder_2010.sln + +rem ************************************************ +rem call WelsDecoder build +echo "WelsDecoder Building....." + +cd %CurDir% +cd %DecoderProjectDir% +echo current directory is %DecoderProjectDir% +rem vcclean + +echo %VCMSBUILDEXE_RELEASE% WelsDecoder_2010.sln + +%VCMSBUILDEXE_RELEASE% WelsDecoder_2010.sln +%VCMSBUILDEXE_DEBUG% WelsDecoder_2010.sln + +cd %CurDir% +echo "this is the end of auto build..." +pause + +rem TBD + + + diff --git a/testbin/AutoBuild_Windows_VS2012.bat b/testbin/AutoBuild_Windows_VS2012.bat new file mode 100755 index 00000000..b3553571 --- /dev/null +++ b/testbin/AutoBuild_Windows_VS2012.bat @@ -0,0 +1,66 @@ +echo off +SET usage="this file must located in ..\testbin\ based on our code structure " +echo %usage% +echo "Auto build of openH264 by VS2012" + +SET VCENVSETBAT="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat" + +Rem ************************************************ +rem reset the dev env for VS2012 +echo "reset the developing env for VS2012" +call %VCENVSETBAT% + + +SET VCMSBUILDEXE_RELEASE=MSbuild /t:Rebuild /p:Configuration=Release +SET VCMSBUILDEXE_DEBUG=MSbuild /t:Rebuild /p:Configuration=Debug + +SET CurDir=%~dp0 +SET EncoderProjectDir="..\codec\build\win32\enc\" +SET DecoderProjectDir="..\codec\build\win32\dec\" +SET VPProjectDir="..\processing\build\win32\" + +SET CodecBinDir="..\codec\build\win32\bin\" +SET VPBinDir="..\processing\bin\" + +SET EncoderBuildFlag=1 +SET DecoderBuildFlag=1 +SET VPBuildFlag=1 +SET MakefileLogFile="${CurDir}\CodecVPBuild.log" + + + +rem ************************************************ +rem call WelsEncoder build +echo "WelsEncoder Building....." + +cd %CurDir% +cd %EncoderProjectDir% +echo current directory is %EncoderProjectDir% +rem vcclean + +echo %VCMSBUILDEXE_RELEASE% WelsEncoder_2012.sln +%VCMSBUILDEXE_RELEASE% WelsEncoder_2012.sln +%VCMSBUILDEXE_DEBUG% WelsEncoder_2012.sln + +rem ************************************************ +rem call WelsDecoder build +echo "WelsDecoder Building....." + +cd %CurDir% +cd %DecoderProjectDir% +echo current directory is %DecoderProjectDir% +rem vcclean + +echo %VCMSBUILDEXE_RELEASE% WelsDecoder_2012.sln + +%VCMSBUILDEXE_RELEASE% WelsDecoder_2012.sln +%VCMSBUILDEXE_DEBUG% WelsDecoder_2012.sln + +cd %CurDir% +echo "this is the end of auto build..." +pause + +rem TBD + + + diff --git a/testbin/AutoClean_Linux.sh b/testbin/AutoClean_Linux.sh new file mode 100755 index 00000000..7210b780 --- /dev/null +++ b/testbin/AutoClean_Linux.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +usage="this file must located in ../testbin/ based on our code structure " +echo $usage + +CurDir=`pwd` +EncoderMakeDir="../codec/build/linux/enc/" +DecoderMakeDir="../codec/build/linux/dec/" +VPMakeDir="../processing/build/linux/" + +CodecBinDir="../codec/build/linux/bin/" +VPBinDir="../bin/linux" + +let "EncoderBuildFlag=1" +let "DecoderBuildFlag=1" +let "VPBuildFlag=1" +MakefileLogFile="${CurDir}/CodecVPBuild.log" + +#************************************************ +#call Encoder make file +echo "encoder cleanning....." +cd ${EncoderMakeDir} +make clean >${MakefileLogFile} +#make >>${MakefileLogFile} + + + +#************************************************ +#call Decoder make file +echo "decoder cleanning....." +cd ${CurDir} +cd ${DecoderMakeDir} +make clean >>${MakefileLogFile} +#make >>${MakefileLogFile} + + + +#************************************************ +#call VP make file +echo "VP cleanning....." +cd ${CurDir} +cd ${VPMakeDir} +make clean >>${MakefileLogFile} +#make >>${MakefileLogFile} + +cd ${CurDir} + +rm -f *.exe *.so *.a *.log +rm -fr ../bin # remove the bin directory + + + + diff --git a/testbin/CmdLineExample.sh b/testbin/CmdLineExample.sh new file mode 100755 index 00000000..5123a108 --- /dev/null +++ b/testbin/CmdLineExample.sh @@ -0,0 +1,6 @@ +chmod 777 ../bin/linux/welsenc.exe +../bin/linux/welsenc.exe welsenc_vd_1d.cfg +../bin/linux/welsenc.exe welsenc_vd_rc.cfg + +../bin/linux/welsdec.exe test_vd_1d.264 test_vd_1d.yuv +../bin/linux/welsdec.exe test_vd_1d.264 test_vd_rc.yuv diff --git a/testbin/CmdLineReadMe b/testbin/CmdLineReadMe new file mode 100644 index 00000000..255221b7 --- /dev/null +++ b/testbin/CmdLineReadMe @@ -0,0 +1,20 @@ +/* Instant Runable Configurations */ +//for encoder configure files +welsenc_vd_1d.cfg +welsenc_vd_rc.cfg + +//the actual generated decoder EXE files are in folder ../bin/win32/release/ with Release build +//user may copy "decConsole.exe" and "welsdec.dll" into ../bin +//Now assume the generated EXE files are in folder ../bin + +Example Command Line for encoding in Windows: +../bin/encConsole.exe welsenc_vd_1d.cfg +../bin/encConsole.exe welsenc_vd_rc.cfg + +Example Command Line for decoding in Windows +../bin/decConsole.exe welsenc_vd_1d.264 welsenc_vd_1d.yuv +../bin/decConsole.exe welsenc_vd_rc.264 welsenc_vd_rc.yuv + +Example shell script for Linux for encoder & decoder: +CmdLineExample.sh + diff --git a/testbin/layer2.cfg b/testbin/layer2.cfg new file mode 100644 index 00000000..8e2015f6 --- /dev/null +++ b/testbin/layer2.cfg @@ -0,0 +1,39 @@ +# Layer Configuration File + + +#============================== INPUT / OUTPUT ============================== +SourceWidth 640 # Input frame width +SourceHeight 384 # Input frame height +FrameRateIn 24 # Input frame rate [Hz] +FrameRateOut 24 # Output frame rate [Hz] +InputFile CiscoVT2people_640x384_24fps.yuv # Input file +ReconFile rec_layer2.yuv # Reconstructed file + +#============================== CODING ============================== +ProfileIdc 66 # value of profile_idc (or 0 for auto detection) + +InitialQP 24 # Quantization parameters for base quality layer +#================================ RATE CONTROL =============================== +SpatialBitrate 600 # Unit: kbps, controled by DisableRC also +#============================== MultiSlice Slice Argument ============================== +# for S/M Slice(s) mode settings +SliceMode 0 # 0: sigle slice mode; >0: multiple slices mode, see below; +SliceSize 1500 +SliceNum 1 # multiple slices number specified + +SlicesAssign0 960 # count number of MBs in slice #0 +SlicesAssign1 0 # count number of MBs in slice #1 +SlicesAssign2 0 # count number of MBs in slice #2 +SlicesAssign3 0 # count number of MBs in slice #3 -- seting here is for better testing +SlicesAssign4 0 # count number of MBs in slice #4 +SlicesAssign5 0 # count number of MBs in slice #5 +SlicesAssign6 0 # count number of MBs in slice #6 +SlicesAssign7 0 # count number of MBs in slice #7 + +### DESIGN OF SLICE MODE #### +# 0 SM_SINGLE_SLICE | SliceNum==1 +# 1 SM_FIXEDSLCNUM_SLICE | according to SliceNum | Enabled dynamic slicing for multi-thread +# 2 SM_RASTER_SLICE | according to SlicesAssign | Need input of MB numbers each slice. In addition, if other constraint in slice_argument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved. +# 3 SM_ROWMB_SLICE | according to PictureMBHeight | Typical of single row of mbs each slice?+ slice size constraint which including re-encoding +# 4 SM_DYN_SLICE | according to SliceSize | Dynamic slicing (have no idea about slice_nums until encoding current frame) + diff --git a/testbin/layer2_vd.cfg b/testbin/layer2_vd.cfg new file mode 100644 index 00000000..c2b48d33 --- /dev/null +++ b/testbin/layer2_vd.cfg @@ -0,0 +1,39 @@ +# Layer Configuration File + + +#============================== INPUT / OUTPUT ============================== +SourceWidth 640 # Input frame width +SourceHeight 384 # Input frame height +FrameRateIn 24 # Input frame rate [Hz] +FrameRateOut 24 # Output frame rate [Hz] +InputFile CiscoVT2people_640x384_24fps.yuv # Input file +ReconFile rec_layer2.yuv # Reconstructed file + +#============================== CODING ============================== +ProfileIdc 66 # value of profile_idc (or 0 for auto detection) + +InitialQP 24 # Quantization parameters for base quality layer +#================================ RATE CONTROL =============================== +SpatialBitrate 600 # Unit: kbps, controled by DisableRC also +#============================== MultiSlice Slice Argument ============================== +# for S/M Slice(s) mode settings +SliceMode 0 # 0: sigle slice mode; >0: multiple slices mode, see below; +SliceSize 1500 +SliceNum 1 # multiple slices number specified + +SlicesAssign0 960 # count number of MBs in slice #0 +SlicesAssign1 0 # count number of MBs in slice #1 +SlicesAssign2 0 # count number of MBs in slice #2 +SlicesAssign3 0 # count number of MBs in slice #3 -- seting here is for better testing +SlicesAssign4 0 # count number of MBs in slice #4 +SlicesAssign5 0 # count number of MBs in slice #5 +SlicesAssign6 0 # count number of MBs in slice #6 +SlicesAssign7 0 # count number of MBs in slice #7 + +### DESIGN OF SLICE MODE, 100804, Sijia #### +# 0 SM_SINGLE_SLICE | SliceNum==1 +# 1 SM_FIXEDSLCNUM_SLICE | according to SliceNum | Enabled dynamic slicing for multi-thread +# 2 SM_RASTER_SLICE | according to SlicesAssign | Need input of MB numbers each slice. In addition, if other constraint in slice_argument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved. +# 3 SM_ROWMB_SLICE | according to PictureMBHeight | Specially for TP. Typical of single row of mbs each slice?+ slice size constraint which including re-encoding +# 4 SM_DYN_SLICE | according to SliceSize | Dynamic slicing (have no idea about slice_nums until encoding current frame) + diff --git a/testbin/layer2_vd_rc.cfg b/testbin/layer2_vd_rc.cfg new file mode 100644 index 00000000..c2b48d33 --- /dev/null +++ b/testbin/layer2_vd_rc.cfg @@ -0,0 +1,39 @@ +# Layer Configuration File + + +#============================== INPUT / OUTPUT ============================== +SourceWidth 640 # Input frame width +SourceHeight 384 # Input frame height +FrameRateIn 24 # Input frame rate [Hz] +FrameRateOut 24 # Output frame rate [Hz] +InputFile CiscoVT2people_640x384_24fps.yuv # Input file +ReconFile rec_layer2.yuv # Reconstructed file + +#============================== CODING ============================== +ProfileIdc 66 # value of profile_idc (or 0 for auto detection) + +InitialQP 24 # Quantization parameters for base quality layer +#================================ RATE CONTROL =============================== +SpatialBitrate 600 # Unit: kbps, controled by DisableRC also +#============================== MultiSlice Slice Argument ============================== +# for S/M Slice(s) mode settings +SliceMode 0 # 0: sigle slice mode; >0: multiple slices mode, see below; +SliceSize 1500 +SliceNum 1 # multiple slices number specified + +SlicesAssign0 960 # count number of MBs in slice #0 +SlicesAssign1 0 # count number of MBs in slice #1 +SlicesAssign2 0 # count number of MBs in slice #2 +SlicesAssign3 0 # count number of MBs in slice #3 -- seting here is for better testing +SlicesAssign4 0 # count number of MBs in slice #4 +SlicesAssign5 0 # count number of MBs in slice #5 +SlicesAssign6 0 # count number of MBs in slice #6 +SlicesAssign7 0 # count number of MBs in slice #7 + +### DESIGN OF SLICE MODE, 100804, Sijia #### +# 0 SM_SINGLE_SLICE | SliceNum==1 +# 1 SM_FIXEDSLCNUM_SLICE | according to SliceNum | Enabled dynamic slicing for multi-thread +# 2 SM_RASTER_SLICE | according to SlicesAssign | Need input of MB numbers each slice. In addition, if other constraint in slice_argument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved. +# 3 SM_ROWMB_SLICE | according to PictureMBHeight | Specially for TP. Typical of single row of mbs each slice?+ slice size constraint which including re-encoding +# 4 SM_DYN_SLICE | according to SliceSize | Dynamic slicing (have no idea about slice_nums until encoding current frame) + diff --git a/testbin/welsenc.cfg b/testbin/welsenc.cfg new file mode 100644 index 00000000..66c79a3e --- /dev/null +++ b/testbin/welsenc.cfg @@ -0,0 +1,63 @@ +# Cisco Scalable H.264/AVC Extension Encoder Configuration File + +#============================== GENERAL ============================== +OutputFile test.264 # Bitstream file +MaxFrameRate 30 # Maximum frame rate [Hz] +FramesToBeEncoded -1 # Number of frames (at input frame rate) + +GOPSize 4 # GOP Size (at maximum frame rate), 16 +IntraPeriod 0 # Intra Period ( multipler of GoP size or -1) +EnableSpsPpsIDAddition 1 + +EnableFrameCropping 1 # enable frame cropping flag + +#============================== LOOP FILTER ============================== +LoopFilterDisableIDC 0 # Loop filter idc (0: on, 1: off, + # 2: on except for slice boundaries, + # 3: two stage. slice boundries on in second stage + # 4: Luma on but Chroma off (w.r.t. idc=0) + # 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2) + # 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3) +LoopFilterAlphaC0Offset 0 # AlphaOffset(-6..+6): valid range +LoopFilterBetaOffset 0 # BetaOffset (-6..+6): valid range + +InterLayerLoopFilterDisableIDC 0 # filter idc for inter-layer deblocking (0: on, 1: off, + # 2: on except for slice boundaries, + # 3: two stage. slice boundries on in second stage + # 4: Luma on but Chroma off in enh. layer (w.r.t. idc=0) + # 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2) + # 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3) +InterLayerLoopFilterAlphaC0Offset 0 # AlphaOffset for inter-layer deblocking +InterLayerLoopFilterBetaOffset 0 # BetaOffset for inter-layer deblocking + +#============================== SOFTWARE IMPLEMENTATION ============================== +MultipleThreadIdc 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads; + +#============================== RATE CONTROL ============================== +EnableRC 1 # ENABLE RC +TargetBitrate 5000 # Unit: kbps, controled by EnableRC also + +#============================== DENOISE CONTROL ============================== +EnableDenoise 0 # Enable Denoise (1: enable, 0: disable) + +#============================== SCENE CHANGE DETECTION CONTROL ======================= +EnableSceneChangeDetection 1 # Enable Scene Change Detection (1: enable, 0: disable) + +#============================== BACKGROUND DETECTION CONTROL ============================== +EnableBackgroundDetection 1 # BGD control(1: enable, 0: disable) + +#============================== ADAPTIVE QUANTIZATION CONTROL ======================= +EnableAdaptiveQuantization 1 # Enable Adaptive Quantization (1: enable, 0: disable) + +#============================== LONG TERM REFERENCE CONTROL ============================== +EnableLongTermReference 0 # Enable Long Term Reference (1: enable, 0: disable) +LtrMarkPeriod 30 # Long Term Reference Marking Period + +#============================== LAYER DEFINITION ============================== +PrefixNALAddingCtrl 0 # Control flag of adding prefix unit (0: off, 1: on) + # It shall always be on in SVC contexts (i.e. when there are CGS/MGS/spatial enhancement layers) + # Can be disabled when no inter spatial layer prediction in case of its value as 0 +NumLayers 1 # Number of layers +//LayerCfg layer0.cfg # Layer 0 configuration file +//LayerCfg layer1.cfg # Layer 1 configuration file +LayerCfg layer2.cfg # Layer 2 configuration file diff --git a/testbin/welsenc_vd_1d.cfg b/testbin/welsenc_vd_1d.cfg new file mode 100644 index 00000000..bdd90222 --- /dev/null +++ b/testbin/welsenc_vd_1d.cfg @@ -0,0 +1,63 @@ +# Cisco Scalable H.264/AVC Extension Encoder Configuration File + +#============================== GENERAL ============================== +OutputFile test_vd_1d.264 # Bitstream file +MaxFrameRate 30 # Maximum frame rate [Hz] +FramesToBeEncoded -1 # Number of frames (at input frame rate) + +GOPSize 4 # GOP Size (at maximum frame rate), 16 +IntraPeriod 0 # Intra Period ( multipler of GoP size or -1) +EnableSpsPpsIDAddition 1 + +EnableFrameCropping 1 # enable frame cropping flag + +#============================== LOOP FILTER ============================== +LoopFilterDisableIDC 0 # Loop filter idc (0: on, 1: off, + # 2: on except for slice boundaries, + # 3: two stage. slice boundries on in second stage + # 4: Luma on but Chroma off (w.r.t. idc=0) + # 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2) + # 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3) +LoopFilterAlphaC0Offset 0 # AlphaOffset(-6..+6): valid range +LoopFilterBetaOffset 0 # BetaOffset (-6..+6): valid range + +InterLayerLoopFilterDisableIDC 0 # filter idc for inter-layer deblocking (0: on, 1: off, + # 2: on except for slice boundaries, + # 3: two stage. slice boundries on in second stage + # 4: Luma on but Chroma off in enh. layer (w.r.t. idc=0) + # 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2) + # 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3) +InterLayerLoopFilterAlphaC0Offset 0 # AlphaOffset for inter-layer deblocking +InterLayerLoopFilterBetaOffset 0 # BetaOffset for inter-layer deblocking + +#============================== SOFTWARE IMPLEMENTATION ============================== +MultipleThreadIdc 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads; + +#============================== RATE CONTROL ============================== +EnableRC 0 # ENABLE RC +TargetBitrate 5000 # Unit: kbps, controled by EnableRC also + +#============================== DENOISE CONTROL ============================== +EnableDenoise 0 # Enable Denoise (1: enable, 0: disable) + +#============================== SCENE CHANGE DETECTION CONTROL ======================= +EnableSceneChangeDetection 1 # Enable Scene Change Detection (1: enable, 0: disable) + +#============================== BACKGROUND DETECTION CONTROL ============================== +EnableBackgroundDetection 1 # BGD control(1: enable, 0: disable) + +#============================== ADAPTIVE QUANTIZATION CONTROL ======================= +EnableAdaptiveQuantization 0 # Enable Adaptive Quantization (1: enable, 0: disable) + +#============================== LONG TERM REFERENCE CONTROL ============================== +EnableLongTermReference 1 # Enable Long Term Reference (1: enable, 0: disable) +LtrMarkPeriod 30 # Long Term Reference Marking Period + +#============================== LAYER DEFINITION ============================== +PrefixNALAddingCtrl 0 # Control flag of adding prefix unit (0: off, 1: on) + # It shall always be on in SVC contexts (i.e. when there are CGS/MGS/spatial enhancement layers) + # Can be disabled when no inter spatial layer prediction in case of its value as 0 +NumLayers 1 # Number of layers +//LayerCfg layer0_vd.cfg # Layer 0 configuration file +//LayerCfg layer1_vd.cfg # Layer 1 configuration file +LayerCfg layer2_vd.cfg # Layer 2 configuration file diff --git a/testbin/welsenc_vd_rc.cfg b/testbin/welsenc_vd_rc.cfg new file mode 100644 index 00000000..ed981149 --- /dev/null +++ b/testbin/welsenc_vd_rc.cfg @@ -0,0 +1,63 @@ +# Cisco Scalable H.264/AVC Extension Encoder Configuration File + +#============================== GENERAL ============================== +OutputFile test_vd_rc.264 # Bitstream file +MaxFrameRate 30 # Maximum frame rate [Hz] +FramesToBeEncoded -1 # Number of frames (at input frame rate), -1 + +GOPSize 8 # GOP Size (at maximum frame rate), 16 +IntraPeriod 0 # Intra Period ( multipler of GoP size or -1) +EnableSpsPpsIDAddition 1 + +EnableFrameCropping 1 # enable frame cropping flag + +#============================== LOOP FILTER ============================== +LoopFilterDisableIDC 0 # Loop filter idc (0: on, 1: off, + # 2: on except for slice boundaries, + # 3: two stage. slice boundries on in second stage + # 4: Luma on but Chroma off (w.r.t. idc=0) + # 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2) + # 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3) +LoopFilterAlphaC0Offset 0 # AlphaOffset(-6..+6): valid range +LoopFilterBetaOffset 0 # BetaOffset (-6..+6): valid range + +InterLayerLoopFilterDisableIDC 0 # filter idc for inter-layer deblocking (0: on, 1: off, + # 2: on except for slice boundaries, + # 3: two stage. slice boundries on in second stage + # 4: Luma on but Chroma off in enh. layer (w.r.t. idc=0) + # 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2) + # 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3) +InterLayerLoopFilterAlphaC0Offset 0 # AlphaOffset for inter-layer deblocking +InterLayerLoopFilterBetaOffset 0 # BetaOffset for inter-layer deblocking + +#============================== SOFTWARE IMPLEMENTATION ============================== +MultipleThreadIdc 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads; + +#============================== RATE CONTROL ============================== +EnableRC 1 # ENABLE RC +TargetBitrate 600 # Unit: kbps, controled by EnableRC also + +#============================== DENOISE CONTROL ============================== +EnableDenoise 1 # Enable Denoise (1: enable, 0: disable) + +#============================== SCENE CHANGE DETECTION CONTROL ======================= +EnableSceneChangeDetection 1 # Enable Scene Change Detection (1: enable, 0: disable) + +#============================== BACKGROUND DETECTION CONTROL ============================== +EnableBackgroundDetection 1 # BGD control(1: enable, 0: disable) + +#============================== ADAPTIVE QUANTIZATION CONTROL ======================= +EnableAdaptiveQuantization 1 # Enable Adaptive Quantization (1: enable, 0: disable) + +#============================== LONG TERM REFERENCE CONTROL ============================== +EnableLongTermReference 1 # Enable Long Term Reference (1: enable, 0: disable) +LtrMarkPeriod 30 # Long Term Reference Marking Period + +#============================== LAYER DEFINITION ============================== +PrefixNALAddingCtrl 0 # Control flag of adding prefix unit (0: off, 1: on) + # It shall always be on in SVC contexts (i.e. when there are CGS/MGS/spatial enhancement layers) + # Can be disabled when no inter spatial layer prediction in case of its value as 0 +NumLayers 1 # Number of layers +//LayerCfg layer0_vd.cfg # Layer 0 configuration file +//LayerCfg layer1_vd.cfg # Layer 1 configuration file +LayerCfg layer2_vd_rc.cfg # Layer 2 configuration file