124 lines
3.8 KiB
Bash
Executable File
124 lines
3.8 KiB
Bash
Executable File
#!/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}
|
|
|