openh264/test/encoder_binary_comparison/run_Main.sh

145 lines
4.9 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:
# -- This file is for local test under Linux/Unix OS
# -- Start point of the test model,
# -- For local test, please run below command:
# ./run_Main.sh LocalTest
# And wait minutes for the test result.
# Final test result, you can refer to test output files under folder
# openh264/test/encoder_binary_comparison/FinalResult.
# -- If there is something change in encoder design,and found that the bit stream
# also change,you need to update the SHA1 table files in ./SHA1Table.
# For update the SHA1 tables, please run below command:
# ./run_Main.sh UpdateSHA1Table
# There will be some mismatched warning info, please ignore it.
# Wait for minutes,the up-to-date will be copied to ./SHA1Table.
# date: 10/06/2014 Created
#*******************************************************************************
#usage: runTestTypeCheck ${TestType}
runTestTypeCheck()
{
if [ ! $# -eq 1 ]
then
echo "usage: runTestTypeCheck \${TestType}"
exit 1
fi
local TestType=$1
echo "TestType is ${TestType}"
if [ "${TestType}" = "LocalTest" ]
then
return 0
elif [ "${TestType}" = "UpdateSHA1Table" ]
then
return 0
else
echo "usage: --./run_Main.sh LocalTest"
echo " or --./run_Main.sh UpdateSHA1Table"
exit 1
fi
}
#delete temp files/folders
runLocalTestPostAction()
{
./Scripts/run_SafeDelete.sh ${AllTestDataFolder} >>${DeletedLog}
./Scripts/run_SafeDelete.sh ./Codec >>${DeletedLog}
echo -e "\n\n\n"
echo -e "\033[32m *************************************************************** \033[0m"
echo -e "\033[32m Local test completed, \033[0m"
if [ ${Flag} -eq 0 ]
then
echo -e "\033[32m --all cases pass!! ----bit stream: ${StreamName} \033[0m"
else
echo -e "\033[31m --not all cases passed .....\033[0m"
fi
echo ""
echo -e "\033[32m for more detail, please refer to xxx.log files and xxx.csv files in ./FinalResult \033[0m"
echo -e "\033[32m *************************************************************** \033[0m"
echo ""
}
#copy up-to-date SHA1 table files to ./SHA1Table
#and delete temp files/folders
runUpdateSHA1TablePostAction()
{
local BitStreamName=""
local SHA1TableName=""
local FileName=""
for file in ${FinalResultFolder}/*
do
FileName=`echo $file | awk 'BEGIN {FS="/"} {print $NF}'`
if [[ "$FileName" =~ UpdateSHA1Table.csv$ ]]
then
BitStreamName=`echo $FileName | awk 'BEGIN {FS=".264"} {print $1}'`
SHA1TableName=${BitStreamName}.264_AllCases_SHA1_Table.csv
./Scripts/run_SafeDelete.sh ${SHA1TableFolder}/${SHA1TableName} >>${DeletedLog}
cp $file ${SHA1TableFolder}/${SHA1TableName}
fi
done
./Scripts/run_SafeDelete.sh ${AllTestDataFolder}>>${DeletedLog}
./Scripts/run_SafeDelete.sh ${FinalResultFolder}>>${DeletedLog}
./Scripts/run_SafeDelete.sh ./Codec>>${DeletedLog}
echo -e "\n\n\n"
echo -e "\033[32m *************************************************************** \033[0m"
echo -e "\033[32m all SHA1 tables in ./${SHA1TableFolder} have been updated \033[0m"
echo -e "\n"
echo -e "\033[32m *************************************************************** \033[0m"
echo -e "\n\n"
}
#usage: --./run_Main.sh LocalTest
# or --./run_Main.sh UpdateSHA1Table
runMain()
{
if [ ! $# -eq 1 ]
then
echo "usage: --./run_Main.sh LocalTest"
echo " or --./run_Main.sh UpdateSHA1Table"
exit 1
fi
local TestType=$1
local BitStreamName=""
Flag=""
SHA1TableFolder="SHA1Table"
FinalResultFolder="FinalResult"
AllTestDataFolder="AllTestData"
DeletedLog="Delete.log"
runTestTypeCheck ${TestType}
# 32 -->32 bits release version;64 -->64 bits release version
./run_PrepareAllTestData.sh 32
if [ ! $? -eq 0 ]
then
echo "failed to prepare test space for all test data!"
exit 1
fi
#test all cases
let "Flag=0"
for Bitsream in ./SHA1Table/*.csv
do
BitStreamName=`echo ${Bitsream} | awk 'BEGIN {FS="/"} {print $NF} ' `
BitStreamName=`echo ${BitStreamName} | awk 'BEGIN {FS="_AllCase"} {print $1} ' `
echo -e "\n\n\n"
./run_OneBitStream.sh ${BitStreamName} ${TestType}
if [ ! $? -eq 0 ]
then
let "Flag=1"
fi
done
#post action
if [ ${TestType} = "LocalTest" ]
then
runLocalTestPostAction
elif [ ${TestType} = "UpdateSHA1Table" ]
then
runUpdateSHA1TablePostAction
fi
}
TestType=$1
runMain ${TestType}