shithub: openh264

Download patch

ref: 5a966b97b1d97f9f5e787462a71aedbd7aadc00c
parent: 84d6ed0b78bd38999edb032eb2a1e7d78f1b2f59
parent: 62b4f5dfdefa2e1bfb962c2d9bbfb3ee9bc16ab8
author: ruil2 <ruil2@cisco.com>
date: Tue Sep 20 11:04:30 EDT 2016

Merge pull request #2556 from shihuade/MacTest_V2.0

remove unneed script, MD5 check and simplified the case check logic

--- a/test/encoder_binary_comparison/Scripts/run_BinarySHA1Comparison.sh
+++ b/test/encoder_binary_comparison/Scripts/run_BinarySHA1Comparison.sh
@@ -22,18 +22,13 @@
 #usage runGlobalVariableDef
 runGlobalVariableDef()
 {
-    WorkingDirDir=""
     #test data space
     FinalResultPath=""
     IssueDataPath=""
     TempDataPath=""
     #for test sequence info
-    TestSequenceName=""
     PicW=""
     PicH=""
-    #test cfg file and test info output file
-    ConfigureFile=""
-    AllCaseFile=""
     #xxx.csv
     AllCasePassStatusFile=""
     #for encoder command
@@ -40,7 +35,6 @@
     declare -a aEncoderCommandSet
     declare -a aEncoderCommandName
     declare -a aEncoderCommandValue
-    declare -a aRecYUVFileList
     #encoder parameters  change based on the case info
     let "EncoderFlag = 0"
     CaseInfo=""
@@ -55,7 +49,6 @@
 #usage runEncoderCommandInital
 runEncoderCommandInital()
 {
-
     aEncoderCommandSet=( -utype  -frms  -numl   -numtl \
                          -sw -sh    "-dw 0"  "-dh 0" "-dw 1" "-dh 1" "-dw 2" "-dh 2" "-dw 3" "-dh 3" \
                          "-frout 0" "-frout 1" "-frout 2" "-frout 3" \
@@ -95,17 +88,12 @@
     IssueDataPath="${CurrentDir}/issue"
     TempDataPath="TempData"
     TestSequencePath="${CurrentDir}"
-    #get YUV detail info $picW $picH $FPS
-    declare -a aYUVInfo
-    aYUVInfo=(`./run_ParseYUVInfo.sh  ${TestSequenceName}`)
-    PicW=${aYUVInfo[0]}
-    PicH=${aYUVInfo[1]}
-    #test cfg file and test info output file
-    ConfigureFile=welsenc.cfg
-    AllCasePassStatusFile="${FinalResultPath}/${TestSequenceName}_AllCaseOutput.csv"
-    UnpassCaseFile="${FinalResultPath}/${TestSequenceName}_unpassCaseOutput.csv"
-    UpdateSHA1TableFile="${FinalResultPath}/${TestSequenceName}_UpdateSHA1Table.csv"
 
+    #test info output file
+    AllCasePassStatusFile="${FinalResultPath}/${TestYUVName}_AllCaseOutput.csv"
+    UnpassCaseFile="${FinalResultPath}/${TestYUVName}_unpassCaseOutput.csv"
+    UpdateSHA1TableFile="${FinalResultPath}/${TestYUVName}_UpdateSHA1Table.csv"
+
    HeadLine1="EncoderFlag, DecoderFlag, FPS, BitSreamSHA1, BitSreamMD5, InputYUVSHA1, InputYUVMD5,\
               -utype,    -frms,  -numl,  -numtl, -sw, -sh,\
               -dw 0, -dh 0, -dw 1, -dh 1, -dw 2, -dh 2, -dw 3, -dh 3,\
@@ -144,13 +132,15 @@
     EncoderCommand=""
     EncoderLogFile="${TempDataPath}/Encoder.log"
     TargetSHA1=""
-    TargetMD5=""
     TargetYUVSHA1=""
-    TargetYUVMD5=""
     BenchmarkSHA1=""
-    BenchmarkMD5=""
     BenchmarkYUVSHA1=""
-    BenchmarkYUVMD5=""
+
+    RecParam=""
+    for((i=0;i<4;i++))
+    do
+        RecParam="${RecParam} -drec ${i} ${TempDataPath}/${TestYUVName}_rec${i}.yuv"
+    done
 }
 #***********************************************************
 #called by    runAllCaseTest
@@ -163,76 +153,31 @@
         echo "no parameter!"
         return 1
     fi
-    local TempData=""
+
     local CaseData=$@
-    local BitstreamPrefix=""
     BenchmarkSHA1=`echo $CaseData |awk 'BEGIN {FS="[,\r]"} {print $1} ' `
-    BenchmarkMD5=`echo $CaseData |awk 'BEGIN {FS="[,\r]"} {print $2} ' `
     BenchmarkYUVSHA1=`echo $CaseData |awk 'BEGIN {FS="[,\r]"} {print $3} ' `
-    BenchmarkYUVMD5=`echo $CaseData |awk 'BEGIN {FS="[,\r]"} {print $4} ' `
-
-
-    declare -a aTempParamIndex=( 6 7 8 9 10 11 12 13        15 16 17   19 20 21     25 26 27 28   31 32 33 34 35 36 )
-    TempData=`echo $CaseData |awk 'BEGIN {FS="[,\r]"} {for(i=5;i<=NF;i++) printf(" %s",$i)} ' `
-    aEncoderCommandValue=(${TempData})
-    let "TempParamFlag=0"
-
-    for((i=0; i<$NumParameter; i++))
-    do
-        for ParnmIndex in ${aTempParamIndex[@]}
-        do
-            if [  $i -eq ${ParnmIndex} ]
-            then
-                let "TempParamFlag=1"
-            fi
-        done
-
-        if [ ${TempParamFlag} -eq 0 ]
-        then
-            BitstreamPrefix=${BitstreamPrefix}_${aEncoderCommandName[$i]}_${aEncoderCommandValue[$i]}
-        fi
-        let "TempParamFlag=0"
-    done
-
-    BitstreamTarget=${TempDataPath}/${TestSequenceName}_${BitstreamPrefix}_codec_target.264
-    echo ""
-    echo "BitstreamPrefix is ${BitstreamPrefix}"
-    echo ""
+    aEncoderCommandValue=(`echo $CaseData |awk 'BEGIN {FS="[,\r]"} {for(i=5;i<=NF;i++) printf(" %s",$i)} ' `)
+    BitstreamTarget=${TempDataPath}/${TestYUVName}_codec_target.264
 }
 
 runEncodeOneCase()
 {
-    local ParamCommand=""
+    EncoderCommand=""
     BitStreamFile=${BitstreamTarget}
 
-    for ((i=4; i<${NumParameter}; i++))
+    for ((i=0; i<${NumParameter}; i++))
     do
-        ParamCommand="${ParamCommand} ${aEncoderCommandSet[$i]}  ${aEncoderCommandValue[$i]} "
+        EncoderCommand="${EncoderCommand} ${aEncoderCommandSet[$i]}  ${aEncoderCommandValue[$i]} "
     done
 
-    for((i=0;i<4;i++))
-    do
-        aRecYUVFileList[$i]="${TempDataPath}/${TestYUVName}_rec${i}.yuv"
-    done
+    EncoderCommand="./h264enc welsenc.cfg -lconfig 0 layer0.cfg -lconfig 1 layer1.cfg -lconfig 2 layer2.cfg  -lconfig 3 layer3.cfg \
+                    -bf ${BitStreamFile} -org ${TestSequencePath}/${TestYUVName} ${RecParam} ${EncoderCommand}"
+    echo -e "\n---------------Encode One Case-------------------------------------------"
+    echo -e "case encode command is : \n ${EncoderCommand} "
 
-    ParamCommand="${aEncoderCommandSet[0]} ${aEncoderCommandValue[0]} ${aEncoderCommandSet[1]}  ${aEncoderCommandValue[1]} \
-                                 ${aEncoderCommandSet[2]}  ${aEncoderCommandValue[2]} \
-                                -lconfig 0 layer0.cfg -lconfig 1 layer1.cfg -lconfig 2 layer2.cfg  -lconfig 3 layer3.cfg  \
-                                ${aEncoderCommandSet[3]}  ${aEncoderCommandValue[3]}  \
-                                ${ParamCommand}"
-    echo ""
-    echo "---------------Encode One Case-------------------------------------------"
-    echo "case line is :"
-    EncoderCommand="./h264enc  welsenc.cfg    ${ParamCommand} -bf   ${BitStreamFile} \
-                                -drec 0 ${aRecYUVFileList[0]} -drec 1 ${aRecYUVFileList[1]} \
-                                -drec 2 ${aRecYUVFileList[2]} -drec 3 ${aRecYUVFileList[3]} \
-                                -org ${TestSequencePath}/${TestSequenceName}"
-    echo ${EncoderCommand}
     echo -e  "\n\n"
-    ./h264enc  welsenc.cfg    ${ParamCommand} -bf   ${BitStreamFile} \
-                                -drec 0 ${aRecYUVFileList[0]} -drec 1 ${aRecYUVFileList[1]} \
-                                -drec 2 ${aRecYUVFileList[2]} -drec 3 ${aRecYUVFileList[3]} \
-                                -org ${TestSequencePath}/${TestSequenceName} 2>${EncoderLogFile}
+    ${EncoderCommand}  2>${EncoderLogFile}
     if [ $? -eq 0  ]
     then
         let "EncoderFlag=0"
@@ -255,9 +200,8 @@
 #usage    runJSVMVerify
 runBitStreamVerify()
 {
-    echo ""
-    echo "******************************************"
-    echo "Bit streamSHA1 value comparison.... "
+    echo -e "\n******************************************"
+    echo -e "Bit stream SHA1 value comparison.... "
     #*******************************************
     TargetSHA1="NULL"
     TargetMD5="NULL"
@@ -267,7 +211,7 @@
     if [ ${EncoderFlag} -eq 1 ]
     then
         let "UnpassCaseNum++"
-    echo "1:unpassed! encoder initial failed or crash!"
+        echo "1:unpassed! encoder initial failed or crash!"
         DiffFlag="1:unpassed! encoder initial failed or crash!"
         return 1
     fi
@@ -275,39 +219,23 @@
     if [ ! -s ${BitStreamFile} ]
     then
         let "UnpassCaseNum++"
-    echo "2:unpassed! 0 bits--bit stream"
+        echo "2:unpassed! 0 bits--bit stream"
         DiffFlag="2:unpassed! 0 bits--bit stream"
         return 1
     fi
+
     #*******************************************
-    #*******************************************
-    echo ""
-    echo "${BitStreamFile}"
     #SHA1
-    TargetSHA1=`openssl sha1  ${BitStreamFile}`
-    TargetSHA1=`echo ${TargetSHA1} | awk '{print $2}' `
-    TargetMD5=`openssl md5   ${BitStreamFile}`
-    TargetMD5=`echo ${TargetMD5} | awk '{print $2}' `
-
-    TargetYUVSHA1=`openssl sha1  ${TestSequencePath}/${TestSequenceName} `
-    TargetYUVSHA1=`echo ${TargetYUVSHA1} | awk '{print $2}' `
-    TargetYUVMD5=`openssl md5  ${TestSequencePath}/${TestSequenceName} `
-    TargetYUVMD5=`echo ${TargetYUVMD5} | awk '{print $2}' `
-
-    if [[   "${TargetSHA1}"  =~  "${BenchmarkSHA1}"  ]]
+    TargetSHA1=`openssl sha1  ${BitStreamFile} | awk '{print $2}'`
+    TargetYUVSHA1=`openssl sha1  ${TestSequencePath}/${TestYUVName} | awk '{print $2}'`
+    if [[  "${TargetSHA1}"  =~  "${BenchmarkSHA1}"  ]]
     then
-        echo "bitstream pass!      SHA1--${TargetSHA1} ----- ${BenchmarkSHA1}"
-        echo "MD5 info:                MD5--${TargetMD5} ----- ${BenchmarkMD5}"
-        echo "YUV SHA1 info:       SHA1--${TargetYUVSHA1} ---- ${BenchmarkYUVSHA1} "
-        echo "YUV MD5  info:       MD5--${TargetYUVMD5} ---- ${BenchmarkYUVMD5}"
+        echo "bitstream pass! SHA1--${TargetSHA1} ----- ${BenchmarkSHA1} YUV--SHA1--info: ${TargetYUVSHA1} ---- ${BenchmarkYUVSHA1}"
         DiffFlag="0:passed!"
         let "PassCaseNum++"
         return 0
     else
-        echo "!!! SHA1 string not match: ${TargetSHA1}  ----- ${BenchmarkSHA1}  "
-        echo "MD5 info:                MD5--${TargetMD5} ----- ${BenchmarkMD5}"
-        echo "YUV SHA1 info:       SHA1--${TargetYUVSHA1} ---- ${BenchmarkYUVSHA1} "
-        echo "YUV MD5  info:       MD5--${TargetYUVMD5} ---- ${BenchmarkYUVMD5}"
+        echo "!!! SHA1 string not match: ${TargetSHA1}  ----- ${BenchmarkSHA1} YUV--SHA1--info: ${TargetYUVSHA1} ---- ${BenchmarkYUVSHA1}"
         DiffFlag="3:unpassed!"
         let "UnpassCaseNum++"
         return 1
@@ -314,7 +242,7 @@
     fi
 }
 
-#called by    runAllCaseTest
+#called by  runAllCaseTest
 #delete temp data    files and output single case test result to log file
 #usage    runSingleCasePostAction $CaseData
 runSingleCasePostAction()
@@ -326,16 +254,15 @@
     fi
     local CaseData=$@
     CaseInfo=`echo $CaseData | awk 'BEGIN {FS="[,\r]"} {for(i=5;i<=NF;i++) printf(" %s,",$i)} '`
-    PassStatusInfo="${DiffFlag}, ${TargetSHA1}, ${BenchmarkSHA1}, ${TargetMD5}, ${BenchmarkMD5},\
-        ${TargetYUVMD5}, ${BenchmarkYUVMD5}, ${TargetYUVSHA1}, ${BenchmarkYUVSHA1},\
-        ${CaseInfo}, ${EncoderCommand} "
+    PassStatusInfo="${DiffFlag}, ${TargetSHA1}, ${BenchmarkSHA1}, ${TargetYUVSHA1}, ${BenchmarkYUVSHA1}, ${CaseInfo}, ${EncoderCommand} "
     echo "${PassStatusInfo}">>${AllCasePassStatusFile}
     if [ "$DiffFlag" != "0:passed!"  ]
     then
         echo "${PassStatusInfo}">>${UnpassCaseFile}
     fi
-     echo "${TargetSHA1}, ${TargetMD5},${TargetYUVMD5}, ${TargetYUVSHA1},${CaseInfo}">>${UpdateSHA1TableFile}
-    ./run_SafeDelete.sh ${BitstreamTarget} >>${AllCaseConsoleLogFile}
+
+    echo "${TargetSHA1}, ${TargetMD5},${TargetYUVMD5}, ${TargetYUVSHA1},${CaseInfo}">>${UpdateSHA1TableFile}
+    #./run_SafeDelete.sh ${BitstreamTarget} >>${AllCaseConsoleLogFile}
 }
 
 #usage runOutputPassNum
@@ -344,7 +271,7 @@
     # output file locate in ../result
     echo ""
     echo "***********************************************************"
-    echo "${TestSequenceName}"
+    echo "${TestYUVName}"
     echo "total case  Num is: ${TotalCaseNum}"
     echo "pass  case  Num is: ${PassCaseNum}"
     echo "unpass case Num is: ${UnpassCaseNum}"
@@ -376,17 +303,15 @@
             then
                 if [  "$DiffFlag" = "0:passed!"   ]
                 then
-                  echo -e "\033[32m    OK!   ${TestSequenceName} Case Index ${TotalCaseNum}:SHA-1(Current--Benchmark): ${TargetSHA1}-----${BenchmarkSHA1}  \033[0m"
-                  echo -e "\033[32m            ----MD5 (Current--Benchmark): ${TargetMD5}-----${BenchmarkMD5} \033[0m"
-                  echo -e "\033[32m            ----YUVMD5:  ${TargetYUVMD5},  ${BenchmarkYUVMD5}   YUVSHA1:  ${TargetYUVSHA1}, ${BenchmarkYUVSHA1}  \033[0m"
+                  echo -e "\033[32m    OK!   ${TestYUVName} Case Index ${TotalCaseNum}:SHA-1(Current--Benchmark): ${TargetSHA1}-----${BenchmarkSHA1}    \033[0m"
+                  echo -e "\033[32m          ----YUVSHA1: ${TargetYUVSHA1}, ${BenchmarkYUVSHA1} \033[0m"
                 fi
             fi
             #******************************************
             if [ ! "$DiffFlag" = "0:passed!"  ]
             then
-                echo -e "\033[31m    Failed! ${TestSequenceName} Case Index ${TotalCaseNum}:SHA-1(Current--Benchmark): ${TargetSHA1}-----${BenchmarkSHA1}  \033[0m"
-                echo -e "\033[31m            ----MD5 (Current--Benchmark): ${TargetMD5}-----${BenchmarkMD5} \033[0m"
-                echo -e "\033[31m            ----YUVMD5:  ${TargetYUVMD5},  ${BenchmarkYUVMD5}   YUVSHA1:  ${TargetYUVSHA1}, ${BenchmarkYUVSHA1}  \033[0m"
+                echo -e "\033[31m    Failed! ${TestYUVName} Case Index ${TotalCaseNum}:SHA-1(Current--Benchmark): ${TargetSHA1}-----${BenchmarkSHA1}  \033[0m"
+                echo -e "\033[31m            ----YUVSHA1:  ${TargetYUVSHA1}, ${BenchmarkYUVSHA1}  \033[0m"
                 EncoderLogInfo=`cat  ${EncoderLogFile}`
                 echo -e "\033[31m           ${EncoderLogInfo}   \033[0m"
             fi
@@ -399,21 +324,11 @@
 # usage: runMain $TestYUV    $AllCaseFile
 runMain()
 {
-    if [ ! $# -eq 2  ]
-    then
-        echo "usage: run_BinarySHA1Comparison.sh \$TestYUV  \$AllCaseFile"
-        return 1
-    fi
-
     runGlobalVariableDef
-
-    #for test sequence info
-    TestSequenceName=$1
-    AllCaseFile=$2
     runGlobalVariableInitial
     TestFolder=`echo $CurrentDir | awk 'BEGIN {FS="/"} { i=NF; print $i}'`
-    AllCaseConsoleLogFile="${FinalResultPath}/${TestSequenceName}.TestLog"
-    CaseSummaryFile="${FinalResultPath}/${TestSequenceName}.Summary"
+    AllCaseConsoleLogFile="${FinalResultPath}/${TestYUVName}.TestLog"
+    CaseSummaryFile="${FinalResultPath}/${TestYUVName}.Summary"
     FlagFile=""
 
     #run all cases
@@ -420,7 +335,7 @@
     runAllCaseTest
 
     # output file locate in ./result
-    echo "${TestSequenceName},            \
+    echo "${TestYUVName},            \
          ${PassCaseNum} pass!,    \
          ${UnpassCaseNum} unpass!,\
          detail file located in ../AllTestData/${TestFolder}/result">${CaseSummaryFile}
@@ -436,7 +351,15 @@
         exit 0
     fi
 }
+#************************************************************************
+# main entry
+#************************************************************************
+if [ ! $# -eq 2  ]
+then
+    echo "usage: run_BinarySHA1Comparison.sh \$TestYUV  \$AllCaseFile"
+    return 1
+fi
 TestYUVName=$1
 AllCaseFile=$2
-runMain    ${TestYUVName}   ${AllCaseFile}
+runMain
 
--- a/test/encoder_binary_comparison/Scripts/run_BitStreamToYUV.sh
+++ b/test/encoder_binary_comparison/Scripts/run_BitStreamToYUV.sh
@@ -110,7 +110,7 @@
     run_BitStream2YUV  ${BitStreameFile}  ${DecodedYUVName}  ${DecoderLogFile}
     if [  ! $?  -eq 0  ]
     then
-            echo "bit stream decoded  failed!"
+        echo "bit stream decoded  failed!"
         return 1
     fi
     #*********************
--- a/test/encoder_binary_comparison/run_OneBitStream.sh
+++ b/test/encoder_binary_comparison/run_OneBitStream.sh
@@ -72,9 +72,9 @@
     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 "TestYUVName is  ${TestYUVName}"
+    echo "StreamName  is  ${StreamName}"
+    echo "SHA1Table   is  ${SHA1Table}"
     echo ""
 }
 
@@ -147,10 +147,10 @@
 
     if [ ${TestType} = "TravisTest" ]
     then
-    if [ -d ${FinalResultDir} ]
-            then
-                ${EncoderTestDir}/Scripts/run_SafeDelete.sh ${FinalResultDir}
-    fi
+        if [ -d ${FinalResultDir} ]
+        then
+            ${EncoderTestDir}/Scripts/run_SafeDelete.sh ${FinalResultDir}
+        fi
     fi
  }