213 lines · 6.9 KB · Shell
RawDownload
#!/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:#       -- Usage:  run_OneBitStream.sh   $BitStreamName $TestType#       -- WorkingDir#          1) For local  test:  WorkingDir=openh264/test/encoder_binary_comparison#          2) For travis test:  WorkingDir=openh264#             There will be an auto detection for working directory#       -- Before using this script, need to run below command:#          ./run_PrepareAllTestData.sh  32(or 64)#          cd  $WorkingDir## date:  10/06/2014 Created#******************************************************************************* #uasge: runGetCurrentYUVName  $BitStreamToYUV.log runGetCurrentYUVName() {  if [ ! $# -eq 1 ]  then    echo "usage: runGetCurrentYUVName  \$BitStreamToYUV.log"    echo "detected by run_OneBitStream.sh"    return 1  fi  local BitStreamToYUVLog=$1  local YUVName=""  while read line  do    if [[ "$line" =~ "renamed as"  ]]    then      YUVName=`echo $line | awk 'BEGIN {FS=":"} {print $3}'`    fi  done <${BitStreamToYUVLog}  echo ${YUVName} } #usage:  runSHA1TableCheck  ${SHA1FileName}runSHA1TableCheck(){  if [ ! $# -eq 1 ]  then    echo "usage:  runSHA1TableCheck  \${SHA1FileName}"    return 1  fi  local SHA1File=$1  if [  ! -e  "${SHA1File}"   ]  then    echo "SHA1 table does not exist:  ${SHA1File} "    echo "SHA1 table should be named as \${StreamName}_AllCases_SHA1_Table.csv"    exit 0  fi  return 0 } #usage: usage: runBitStreamCheck  \$BitStreamerunBitStreamCheck(){  if [ ! $# -eq 1 ]  then    echo "usage: runBitStreamCheck  \$BitStreame"    return 1  fi  local BitStream=$1  local BitSreamName=`echo ${BitStream} | awk 'BEGIN {FS="/"} {print $NF}'`  echo "bit stream is $BitSreamName"  if [ ! -e ${BitStream}  ]  then    echo -e "\033[31m   bit stream does not exist:  $BitSreamName   \033[0m"    echo -e "\033[31m   please double check under  openh264/res folder \033[0m"    echo -e "\033[31m     -----detected by run_OneBitStream.sh  \033[0m"    exit 0  fi  return 0 } #usage:  runTestSpaceCheck  ${BitStreamTestDir} runTestSpaceCheck() {   if [ ! $# -eq 1 ]  then    echo "usage: runMain \${BitStreamTestDir} "    echo "detected by run_OneBitStream.sh"    return 1  fi  local BitStreamTestDir=$1  if [ ! -d ${BitStreamTestDir} ]  then    echo ""    echo  -e "\033[31m ----Test space for bitsream does not exist!--- ${BitStreamTestDir}  \033[0m"    echo  -e "\033[31m ---- before running this test locally, please follow step below:   \033[0m"    echo  -e "\033[31m       ---- 1)cd test/encoder_binary_comparison/  \033[0m"    echo  -e "\033[31m       ---- 2)run script file:  ./run_PrepareAllTestData.sh    \033[0m"    echo ""    exit 1  fi  return 0 } #brief: delete temp files based on test typerunPostAction() {    echo ""    echo "deleting temp data,entire folder will be deleted........ "  if [ -d ${BitStreamTestDir} ]  then        ${EncoderTestDir}/Scripts/run_SafeDelete.sh ${BitStreamTestDir}  fi   if [ ${TestType} = "TravisTest" ]  then  if [-d ${FinalResultDir} ]      then          ${EncoderTestDir}/Scripts/run_SafeDelete.sh ${FinalResultDir}  fi  fi }  #usage: usage: runMain $BitStreamName $TestTyperunMain(){  if [ ! $# -eq 2 ]  then    echo "usage: runMain \$BitStreamName \$TestType"    echo "detected by run_OneBitStream.sh"    exit 1  fi  BitStreamName=$1  TestType=$2  TestYUVName=""  StreamName=""  BitStreamToYUVLog="Bit2YUV.log"  SHA1Table="${BitStreamName}_AllCases_SHA1_Table.csv"  #dir info  WorkingDir=`pwd`  EncoderTestDir=""  BitStreamTestDir=""  FinalResultDir=""  StreamFileFullPath=""  BitSreamDir=""  if [[  "${WorkingDir}" =~ "test/encoder_binary_comparison"  ]]  then    #for local test: working dir is  openh264/test/encoder_binary_comparison    EncoderTestDir=${WorkingDir}    BitStreamTestDir="${EncoderTestDir}/AllTestData/${BitStreamName}"    FinalResultDir="${EncoderTestDir}/FinalResult"    BitSreamDir="../../res"  else    #for travis test: working dir is  openh264/    EncoderTestDir=${WorkingDir}/test/encoder_binary_comparison    BitStreamTestDir="${EncoderTestDir}/AllTestData/${BitStreamName}"    FinalResultDir="${EncoderTestDir}/FinalResult"    BitSreamDir="${WorkingDir}/res"  fi  cd ${BitSreamDir}  StreamFileFullPath=`pwd`  StreamFileFullPath=${StreamFileFullPath}/${BitStreamName}  cd ${WorkingDir}  runBitStreamCheck ${StreamFileFullPath}  runTestSpaceCheck  ${BitStreamTestDir}  #go to Bitstream test space   cd ${BitStreamTestDir}  runSHA1TableCheck   ${SHA1Table}  #bit stream to YUV  ./run_BitStreamToYUV.sh  ${StreamFileFullPath}>${BitStreamToYUVLog}  if [  ! $? -eq 0 ]  then    echo "failed to translate bit stream to yuv !"    exit 1  fi  #parse basic info  TestYUVName=`runGetCurrentYUVName ${BitStreamToYUVLog} `  TestYUVName=`echo ${TestYUVName} | awk 'BEGIN {FS="/"}  {print $NF}   ' `  StreamName=`echo ${StreamFileFullPath} | awk 'BEGIN {FS="/"}  {print $NF}  ' `  echo ""  echo "TestYUVName    is  ${TestYUVName}"  echo "StreamName     is  ${StreamName} "  echo "SHA1Table      is  ${SHA1Table}"  echo ""  #binary comparison  ./run_BinarySHA1Comparison.sh   ${TestYUVName}   ${SHA1Table}  if [  ! $? -eq 0 ]  then    echo ""    echo  -e "\033[31m  not all cases passed .....\033[0m"    echo  -e "\033[31m  this may caused by:      \033[0m"    echo  -e "\033[31m   --1) you changed encoder algorithm which changed the final bit stream  \033[0m"    echo  -e "\033[31m        if so, you need to update the SHA1 table in folder  ./test/encoder_binary_comparison/SHA1Table  \033[0m"    echo  -e "\033[31m   --2) the decoder  has been changed and since the test YUV is generated by h264dec,the input YUV changed,so bit stream will also change \033[0m"    echo  -e "\033[31m        if so, you need to update the SHA1 table in folder  ./test/encoder_binary_comparison/SHA1Table  \033[0m"    echo  -e "\033[31m        for how to update, please refer to doc:  ./test/encoder_binary_comparison/AboutTest  \033[0m"    echo  -e "\033[31m   --3) there may be something wrong in you code change (encoder or decoder) \033[0m"    echo  -e "\033[31m        if so, please fix bug in your code \033[0m"    cp  ./result/*    ${FinalResultDir}    cd  ${WorkingDir}    #delete the test data    runPostAction    exit 1  else    echo -e "\033[32m  all cases passed!! ----bit stream:  ${StreamName} \033[0m"    cp  ./result/*    ${FinalResultDir}    cd  ${WorkingDir}    #delete the test data    runPostAction    exit 0  fi }BitSteamName=$1TestType=$2runMain  "${BitSteamName}" "${TestType}" 

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t