Add QP parallelization to rd_collect for rav1e.
authorJustin Nickelsburg <nickelsburg99@gmail.com>
Thu, 30 May 2019 15:29:52 +0000 (11:29 -0400)
committerNathan E. Egge <negge@dgql.org>
Thu, 30 May 2019 17:47:21 +0000 (13:47 -0400)
Signed-off-by: Nathan E. Egge <negge@dgql.org>
tools/rd_collect.sh
tools/rd_collect_rav1e.sh

index 90d2a2c..7ba24b1 100755 (executable)
@@ -305,6 +305,10 @@ case $CODEC in
       exit 1
     fi
 
+    if [ -z "$QPS" ]; then
+      QPS="80 128 172 220 252"
+    fi
+
     export RD_COLLECT_SUB=$(dirname $0)/rd_collect_rav1e.sh
     ;;
   svt-av1)
@@ -438,4 +442,12 @@ if [ -z "$CORES" ]; then
   #echo "CORES not set, using $CORES"
 fi
 
-find -L "$@" -type f -name "*.y4m" -print0 | xargs -0 -n1 -P$CORES $RD_COLLECT_SUB
+case $CODEC in
+  rav1e)
+    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)-*.out | sort -n > $(basename $f)-$CODEC.out && rm $(basename $f)-$CODEC-*.out; done
+    ;;
+  *)
+    find -L "$@" -type f -name "*.y4m" -print0 | xargs -0 -n1 -P$CORES $RD_COLLECT_SUB
+esac
index e27acee..3534fd3 100755 (executable)
@@ -7,29 +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')
 
-RANGE="80 128 172 220 252"
 QSTR="--quantizer \$x --threads 1"
 
-for x in $RANGE; do
-  $RAV1E $EXTRA_OPTS -r $BASENAME.y4m $(echo $QSTR | sed 's/\$x/'$x'/g') -o $BASENAME.ivf $FILE 2> $BASENAME-$x-enc.out > /dev/null
-  SIZE=$(wc -c $BASENAME.ivf | 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.ivf $BASENAME.y4m $BASENAME-$x-enc.out $BASENAME-$x-psnr.out
-  echo $x $PIXELS $SIZE $PSNR $PSNRHVS $SSIM $FASTSSIM $CIEDE >> $BASENAME.out
-  #tail -1 $BASENAME.out
-done
+$RAV1E $EXTRA_OPTS -r $BASENAME.y4m $(echo $QSTR | sed 's/\$x/'$QP'/g') -o $BASENAME.ivf $FILE 2> $BASENAME-enc.out > /dev/null
+SIZE=$(wc -c $BASENAME.ivf | awk '{ print $1 }')
+$DUMP_PSNR $FILE $BASENAME.y4m > $BASENAME-psnr.out 2> /dev/null
+FRAMES=$(cat $BASENAME-psnr.out | grep ^0 | wc -l)
+PIXELS=$(($WIDTH*$HEIGHT*$FRAMES))
+PSNR=$(cat $BASENAME-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.ivf $BASENAME.y4m $BASENAME-enc.out $BASENAME-psnr.out
+echo $QP $PIXELS $SIZE $PSNR $PSNRHVS $SSIM $FASTSSIM $CIEDE >> $BASENAME.out
+#tail -1 $BASENAME.out