rd_collect_x264.sh 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/bash
  2. set -e
  3. if [ -z $RD_COLLECT_SUB ]; then
  4. echo "Please use: $(dirname $0)/rd_collect.sh x264 *.y4m"
  5. exit 1
  6. fi
  7. FILE=$1
  8. BASENAME=$(basename $FILE)-$CODEC
  9. rm $BASENAME.out 2> /dev/null || true
  10. echo $BASENAME
  11. WIDTH=$(head -1 $FILE | cut -d\ -f 2 | tr -d 'W')
  12. HEIGHT=$(head -1 $FILE | cut -d\ -f 3 | tr -d 'H')
  13. RANGE=$(seq 1 51)
  14. QSTR="--preset placebo --min-keyint 256 --keyint 256 --no-scenecut --crf=\$x"
  15. for x in $RANGE; do
  16. $X264 --dump-yuv $BASENAME.yuv $(echo $QSTR | sed 's/\$x/'$x'/g') -o $BASENAME.x264 $FILE 2> $BASENAME-$x-enc.out > /dev/null
  17. $YUV2YUV4MPEG $BASENAME -w$WIDTH -h$HEIGHT -an0 -ad0 -c420mpeg2
  18. SIZE=$(stat -c %s $BASENAME.x264)
  19. $DUMP_PSNR $FILE $BASENAME.y4m > $BASENAME-$x-psnr.out 2> /dev/null
  20. FRAMES=$(cat $BASENAME-$x-psnr.out | grep ^0 | wc -l)
  21. PIXELS=$(($WIDTH*$HEIGHT*$FRAMES))
  22. PSNR=$(cat $BASENAME-$x-psnr.out | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
  23. PSNRHVS=$($DUMP_PSNRHVS $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
  24. SSIM=$($DUMP_SSIM $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
  25. FASTSSIM=$($DUMP_FASTSSIM -c $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
  26. rm $BASENAME.x264 $BASENAME.y4m $BASENAME.yuv $BASENAME-$x-enc.out $BASENAME-$x-psnr.out
  27. echo $x $PIXELS $SIZE $PSNR $PSNRHVS $SSIM $FASTSSIM >> $BASENAME.out
  28. #tail -1 $BASENAME.out
  29. done