Add QP parallelization to rd_collect for theora.
authorJustin Nickelsburg <nickelsburg99@gmail.com>
Tue, 9 Jul 2019 20:46:10 +0000 (16:46 -0400)
committerNathan E. Egge <negge@dgql.org>
Wed, 24 Jul 2019 02:56:32 +0000 (22:56 -0400)
tools/rd_collect.sh
tools/rd_collect_theora.sh

index 28c417f..9045e1f 100755 (executable)
@@ -290,6 +290,10 @@ case $CODEC in
       exit 1
     fi
 
+    if [ -z "$QPS" ]; then
+      QPS=$(seq 63 -1 0)
+    fi
+
     export RD_COLLECT_SUB=$(dirname $0)/rd_collect_theora.sh
     ;;
   webp)
@@ -517,7 +521,7 @@ if [ -z "$CORES" ]; then
 fi
 
 case $CODEC in
-  libaom | libaom-rt | daala | rav1e | svt-av1 | vp8 | vp9 | x264 | x265 | jpeg | mozjpeg)
+  libaom | libaom-rt | daala | rav1e | svt-av1 | vp8 | vp9 | x264 | x265 | jpeg | mozjpeg | theora)
     FILES=$(find -L "$@" -type f -name "*.y4m")
     for f in $FILES; do for q in $QPS; do printf "%s\0" $f $q; done; done | xargs -0 -n2 -P$CORES $RD_COLLECT_SUB
     for f in $FILES; do cat $(basename $f)-$CODEC-*.out | sort -n > $(basename $f)-$CODEC.out && rm $(basename $f)-$CODEC-*.out; done
index 9926f71..2fc3d37 100755 (executable)
@@ -7,28 +7,27 @@ if [ -z $RD_COLLECT_SUB ]; then
 fi
 
 FILE=$1
+QP=$2
 
-BASENAME=$(basename $FILE)-$CODEC
+BASENAME=$(basename $FILE)-$CODEC-$QP
 rm $BASENAME.out 2> /dev/null || true
 echo $BASENAME
 
 WIDTH=$(head -1 $FILE | cut -d\  -f 2 | tr -d 'W')
 HEIGHT=$(head -1 $FILE | cut -d\  -f 3 | tr -d 'H')
 
-for x in $(seq 63 -1 0); do
-    V=$(echo $x | awk '{print $1*0.15873015873015}');
-    $ENCODER_EXAMPLE -o $BASENAME.ogv -v $V -z 0 $FILE 2> $BASENAME-$x-enc.err >/dev/null
-    $DUMP_VIDEO $BASENAME.ogv -c -o $BASENAME.y4m 2>/dev/null
-    SIZE=$(wc -c $BASENAME.ogv | awk '{ print $1 }')
-    $DUMP_PSNR $FILE $BASENAME.y4m > $BASENAME-$x-psnr.out 2> /dev/null
-    FRAMES=$(cat $BASENAME-$x-psnr.out | grep ^0 | wc -l)
-    PIXELS=$(($WIDTH*$HEIGHT*$FRAMES))
-    PSNR=$(cat $BASENAME-$x-psnr.out | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
-    PSNRHVS=$($DUMP_PSNRHVS $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
-    SSIM=$($DUMP_SSIM $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
-    FASTSSIM=$($DUMP_FASTSSIM -c $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
-    CIEDE=$($DUMP_CIEDE $FILE $BASENAME.y4m 2> /dev/null | grep Total | cut -d' ' -f2-)
-    rm $BASENAME.ogv $BASENAME.y4m  $BASENAME-$x-enc.err $BASENAME-$x-psnr.out
-    echo -$x $PIXELS $SIZE $PSNR $PSNRHVS $SSIM $FASTSSIM $CIEDE >> $BASENAME.out
-    #tail -1 $BASENAME.out
-done
+V=$(echo $QP| awk '{print $1*0.15873015873015}');
+$ENCODER_EXAMPLE -o $BASENAME.ogv -v $V -z 0 $FILE 2> $BASENAME-$QP-enc.err >/dev/null
+$DUMP_VIDEO $BASENAME.ogv -c -o $BASENAME.y4m 2>/dev/null
+SIZE=$(wc -c $BASENAME.ogv | awk '{ print $1 }')
+$DUMP_PSNR $FILE $BASENAME.y4m > $BASENAME-$QP-psnr.out 2> /dev/null
+FRAMES=$(cat $BASENAME-$QP-psnr.out | grep ^0 | wc -l)
+PIXELS=$(($WIDTH*$HEIGHT*$FRAMES))
+PSNR=$(cat $BASENAME-$QP-psnr.out | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
+PSNRHVS=$($DUMP_PSNRHVS $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
+SSIM=$($DUMP_SSIM $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
+FASTSSIM=$($DUMP_FASTSSIM -c $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\  -f $((4+$PLANE*2)))
+CIEDE=$($DUMP_CIEDE $FILE $BASENAME.y4m 2> /dev/null | grep Total | cut -d' ' -f2-)
+rm $BASENAME.ogv $BASENAME.y4m  $BASENAME-$QP-enc.err $BASENAME-$QP-psnr.out
+echo -$QP $PIXELS $SIZE $PSNR $PSNRHVS $SSIM $FASTSSIM $CIEDE >> $BASENAME.out
+#tail -1 $BASENAME.out