212 lines · 6.6 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#******************************************************************************* runInitial(){    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} } runBitStreamToYUV(){     ./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 `    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 ""}  runGetCurrentYUVName() {     local YUVName=""    while read line    do        if [[ "$line" =~ "renamed as"  ]]        then            YUVName=`echo $line | awk 'BEGIN {FS=":"} {print $3}'`        fi    done <${BitStreamToYUVLog}    echo ${YUVName} } runSHA1TableCheck(){    if [  ! -e  "${SHA1Table}"   ]    then        echo "SHA1 table does not exist:  ${SHA1Table} "        echo "SHA1 table should be named as \${StreamName}_AllCases_SHA1_Table.csv"        exit 0    fi    return 0 } runBitStreamCheck(){     local BitSreamName=`echo ${StreamFileFullPath} | awk 'BEGIN {FS="/"} {print $NF}'`    echo "bit stream is $BitSreamName"    if [ ! -e ${StreamFileFullPath}  ]    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 } runTestSpaceCheck() {     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     runInitial    runBitStreamCheck    runTestSpaceCheck     #go to Bitstream test space    cd ${BitStreamTestDir}     runSHA1TableCheck     #bit stream to YUV    runBitStreamToYUV     #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