rework benchmark

This commit is contained in:
2024-02-24 11:17:08 -06:00
parent 0c4721a134
commit 5e7a09d94e

View File

@@ -39,15 +39,19 @@ do
-map 0 -an -sn -t $CHUNK_TIME "$INPUT_DIR/$input" -map 0 -an -sn -t $CHUNK_TIME "$INPUT_DIR/$input"
done done
THREADS="$(nproc)"
# Different variables to test # Different variables to test
CRF=(20 25 30) CRF=(20 25 30)
ENCODER=('libsvtav1' 'librav1e' 'libaom-av1') ENCODER=('libsvtav1' 'librav1e' 'libaom-av1')
PRESET=(4 8 12) PRESET=(2 4 6 8)
# uncomment for quick testing # uncomment for quick testing
# CRF=(25) # CRF=(25)
# ENCODER=('libsvtav1') # ENCODER=('libsvtav1')
# PRESET=(13) # ENCODER=('librav1e')
# ENCODER=('libaom-av1')
# PRESET=(8)
# Log for results # Log for results
LOG="$BENCHMARK_DIR/results.txt" LOG="$BENCHMARK_DIR/results.txt"
@@ -57,7 +61,7 @@ ffmpeg -version | grep "version" > "$LOG"
echo "ENCODER,PRESET,CRF,INPUT,TIME_TAKEN,SIZE,PSNR_HVS,CAMBI,FLOAT_MS_SSIM,VMAF" > "$CSV" echo "ENCODER,PRESET,CRF,INPUT,TIME_TAKEN,SIZE,PSNR_HVS,CAMBI,FLOAT_MS_SSIM,VMAF" > "$CSV"
uname -srmpio >> "$LOG" uname -srmpio >> "$LOG"
CPU_PROD=$(sudo lshw | grep "product" | head -1 | cut -d ':' -f2) CPU_PROD=$(sudo lshw | grep "product" | head -1 | cut -d ':' -f2)
echo "CPU product:$CPU_PROD with $(nproc) threads" >> $LOG echo "CPU product:$CPU_PROD with $THREADS threads" >> $LOG
# Find versions of files # Find versions of files
cd /usr/local/lib || exit cd /usr/local/lib || exit
@@ -69,6 +73,9 @@ DAV1D_VER=$(basename "$(find . -mindepth 1 ! -type l | grep "libdav1d.so")")
cd "$BASE_DIR" || exit cd "$BASE_DIR" || exit
echo -e "$SVTAV1_VER $RAV1E_VER $AOM_VER $VMAF_VER $DAV1D_VER" >> "$LOG" echo -e "$SVTAV1_VER $RAV1E_VER $AOM_VER $VMAF_VER $DAV1D_VER" >> "$LOG"
power2() { echo "x=l($1)/l(2); scale=0; 2^((x+0.5)/1)" | bc -l; }
TILES=$(power2 "$THREADS")
for input in "${INPUT[@]}" for input in "${INPUT[@]}"
do do
for encoder in "${ENCODER[@]}" for encoder in "${ENCODER[@]}"
@@ -81,9 +88,28 @@ do
OUTPUT="$OUTPUT_DIR/${encoder}_preset${preset}_crf${crf}_$input" OUTPUT="$OUTPUT_DIR/${encoder}_preset${preset}_crf${crf}_$input"
echo "output: $(basename "$OUTPUT")" >> "$LOG" echo "output: $(basename "$OUTPUT")" >> "$LOG"
# lib specific params
PARAMS=""
if [[ "$encoder" == "librav1e" ]]
then
test "$crf" -eq 20 && quantizer=50
test "$crf" -eq 25 && quantizer=100
test "$crf" -eq 30 && quantizer=150
PARAMS="-speed $preset -rav1e-params tiles=$TILES:threads=$THREADS:quantizer=$quantizer"
elif [[ "$encoder" == "libaom-av1" ]]
then
PARAMS="-cpu-used $preset -row-mt 1 -threads $THREADS -crf $crf"
elif [[ "$encoder" == "libsvtav1" ]]
then
PARAMS="-preset $preset -crf $crf -sc_detection true \
-svtav1-params tune=0:enable-overlays=1:enable-hdr=1:fast-decode=1 "
else
PARAMS=""
fi
# encode # encode
export TIMEFORMAT=%R export TIMEFORMAT=%R
FFMPEG_CMD="ffmpeg -i $INPUT_DIR/$input -c:a copy -c:v $encoder -preset $preset -crf $crf $OUTPUT" FFMPEG_CMD="ffmpeg -i $INPUT_DIR/$input -c:a copy -c:v $encoder $PARAMS -pix_fmt yuv420p10le $OUTPUT"
(time $FFMPEG_CMD) |& tee TIME (time $FFMPEG_CMD) |& tee TIME
TIME_DIFF="$(cat TIME | tail -n 1)" TIME_DIFF="$(cat TIME | tail -n 1)"
rm TIME rm TIME