| #!/bin/bash |
| #******************************************************************************* |
| # Encoder binary comparison test model |
| # -- Compared with benchmark version using SHA-1 string |
| # -- Test bit stream under folder openh264/res |
| # -- SHA-1 string of benchmark version for all cases of all bit streams |
| # under folder openh264/test/encoder_binary_comparion/SHA1Table |
| # -- For more detail,please refer to file AboutTest. |
| # |
| #brief: |
| # -- Transform test bit stream into YUV as test sequence, |
| # 1) Called by run_OneBitStream.sh before testing all cases |
| # 2) eg: |
| # -- input: ./run_BitStreamToYUV.sh TestABC.264 |
| # -- output: TestABC.264_382X288.yuv |
| # -- Usage: run_BitStreamToYUV.sh ${BitStreamFile} |
| # |
| # |
| # date: 10/06/2014 Created |
| #******************************************************************************* |
| |
| # usage: run_ParseDecoderLog $Decoder_LogFile |
| # eg: input: run_ParseDecoderLog test.264.log |
| # output 1024 720 |
| run_ParseDecoderLog() |
| { |
| if [ ! $# -eq 1 ] |
| then |
| echo "usage: run_ParseDecoderLog \$Decoder_LogFile" |
| return 1 |
| fi |
| local LogFile=$1 |
| local Width="" |
| local Height="" |
| while read line |
| do |
| if [[ $line =~ "iWidth" ]] |
| then |
| Width=`echo $line | awk 'BEGIN {FS="[:\n]"} {print $2}'` |
| fi |
| if [[ $line =~ "height" ]] |
| then |
| Height=`echo $line | awk 'BEGIN {FS="[:\n]"} {print $2}'` |
| fi |
| done < ${LogFile} |
| echo "${Width} ${Height}" |
| } |
| |
| #usage: run_BitStream2YUV $BitstreamName $OutputYUVName $LogFile |
| run_BitStream2YUV() |
| { |
| if [ ! $# -eq 3 ] |
| then |
| echo "usage: run_BitStream2YUV \$BitstreamName \$OutputYUVName \$LogFile " |
| return 1 |
| fi |
| local BitStreamName=$1 |
| local OutputYUVName=$2 |
| local LogFile=$3 |
| if [ ! -f ${BitStreamName} ] |
| then |
| echo "bit stream file does not exist!" |
| echo "detected by run_BitStreamToYUV.sh" |
| return 1 |
| fi |
| #decode bitstream |
| ./h264dec ${BitStreamName} ${OutputYUVName} 2> ${LogFile} |
| return 0 |
| } |
| |
| #usage: run_RegularizeYUVName $BitstreamName $OutputYUVName $LogFile |
| run_RegularizeYUVName() |
| { |
| if [ ! $# -eq 3 ] |
| then |
| echo "usage: run_RegularizeYUVName \$BitstreamName \$OutputYUVName \$LogFile " |
| return 1 |
| fi |
| local BitStreamName=$1 |
| local OrignName=$2 |
| local LogFile=$3 |
| local RegularizedYUVName="" |
| declare -a aDecodedYUVInfo |
| aDecodedYUVInfo=(`run_ParseDecoderLog ${LogFile}`) |
| BitStreamName=`echo ${BitStreamName} | awk 'BEGIN {FS="/"} {print $NF}'` |
| RegularizedYUVName="${BitStreamName}_${aDecodedYUVInfo[0]}x${aDecodedYUVInfo[1]}.yuv" |
| mv -f ${OrignName} ${RegularizedYUVName} |
| echo "" |
| echo "file: ${OrignName} has been renamed as: ${RegularizedYUVName}" |
| echo "" |
| return 0 |
| } |
| |
| #usage: runMain ${BitStreamName} |
| runMain() |
| { |
| if [ ! $# -eq 1 ] |
| then |
| echo "usage: runMain \${BitStreamName} " |
| return 1 |
| fi |
| local BitStreameFile=$1 |
| local BitSteamName=`echo ${BitStreameFile} | awk 'BEGIN {FS="/"} {print $NF}'` |
| local DecoderLogFile="${BitSteamName}_h264dec.log" |
| local DecodedYUVName="${BitSteamName}_dec.yuv" |
| local RegularizedName="" |
| |
| #********************** |
| #decoded test bit stream |
| run_BitStream2YUV ${BitStreameFile} ${DecodedYUVName} ${DecoderLogFile} |
| if [ ! $? -eq 0 ] |
| then |
| echo "bit stream decoded failed!" |
| return 1 |
| fi |
| #********************* |
| #regularized YUV name |
| run_RegularizeYUVName ${BitStreameFile} ${DecodedYUVName} ${DecoderLogFile} |
| return 0 |
| } |
| BitStreamFile=$1 |
| runMain ${BitStreamFile} |
| |