一個懼怕寫批處理的人寫了一個解碼正確性驗證的bash

作爲一個懼怕寫批處理被布魯托儒罵了無數遍的人,前段時間鼓起勇氣(是得逼一逼)寫了第一個shell腳本,自動化測試還是蠻爽的,人和汪最大的區別就是人會使用工具給汪鏟屎吧。


目標:

測試彙編優化後的ffmpeg內置解碼器的正確性。

所以原始ffmeg解碼的結果作爲了測試的anchor。

批處理的原理就是:分別用兩個版本的解碼器分別解碼同一個碼流(一個文件夾裏放滿了碼流),把解碼的兩個YUV文件進行二進制比較,如果一樣就對了,如果有不一致出現那就是彙編寫錯了。


整個測試在手機端(android)進行。


其實批處理精髓就是:

變量命名(路徑啊什麼的提前寫好)

執行的命令

輸出的結果:向文本文件的重定向  

 2>> ${WORKDIR_PATH}/${resolution}_result.txt
就代表將錯誤信息重定向到文本文件,便於結果的收割。


#!/bin/bash
echo "Hello World !"
WORKDIR_PATH=/sdcard/mengw
BITSTREAM_EXTNAME=h265
FFMPEG_PATH=/data/local/tmp/mengw/bin/ffmpeg
FFMPEG_ORG_PATH=/data/local/tmp/mengw/bin/ffmpeg-org

PLATFORM=$1
THREAD=$2

FFREPORT_PATH=${WORKDIR_PATH}/${PLATFORM}_thread${THREAD}_ffreport

rm -fr ${FFREPORT_PATH}
mkdir -p ${FFREPORT_PATH}

echo ${FFMPEG_PATH}
echo ${FFREPORT_PATH}

rm -f *.log
rm -f ${WORKDIR_PATH}/*result.txt

for resolution in 360p
do
    bitstream_path=${WORKDIR_PATH}/hevc-bitstream/${resolution}
    for filename in `ls ${bitstream_path}/*.${BITSTREAM_EXTNAME}`
    do
        echo "begin!"
        echo ${filename}
        ${FFMPEG_ORG_PATH} -report -threads ${THREAD} -i ${filename} -f rawvideo -y ${filename}_org.yuv
        ${FFMPEG_PATH} -report -threads ${THREAD} -i ${filename} -f rawvideo  -y ${filename}_test.yuv
        echo ${filename} >> ${WORKDIR_PATH}/${resolution}_result.txt
        cmp -l ${filename}_org.yuv ${filename}_test.yuv 2>> ${WORKDIR_PATH}/${resolution}_result.txt
        rm  ${filename}_test.yuv
        rm  ${filename}_org.yuv
    done
done


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章