ab_compare_jpeg.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/bin/bash
  2. set -e
  3. if [ -z $DAALA_ROOT ]; then
  4. DAALA_ROOT=.
  5. fi
  6. if [ -z "$ENCODER_EXAMPLE" ]; then
  7. ENCODER_EXAMPLE=$DAALA_ROOT/examples/encoder_example
  8. fi
  9. if [ -z "$DUMP_VIDEO" ]; then
  10. DUMP_VIDEO=$DAALA_ROOT/examples/dump_video
  11. fi
  12. if [ -z "$YUVJPEG" ]; then
  13. YUVJPEG=$DAALA_ROOT/tools/yuvjpeg
  14. fi
  15. if [ -z "$JPEGYUV" ]; then
  16. JPEGYUV=$DAALA_ROOT/tools/jpegyuv
  17. fi
  18. if [ -z "$YUV2YUV4MPEG" ]; then
  19. YUV2YUV4MPEG=$DAALA_ROOT/tools/yuv2yuv4mpeg
  20. fi
  21. if [ -z "$Y4M2PNG" ]; then
  22. Y4M2PNG=$DAALA_ROOT/tools/y4m2png
  23. fi
  24. if [ ! -x "$ENCODER_EXAMPLE" ]; then
  25. echo "Executable not found ENCODER_EXAMPLE=$ENCODER_EXAMPLE"
  26. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  27. exit 1
  28. fi
  29. if [ ! -x "$DUMP_VIDEO" ]; then
  30. echo "Executable not found DUMP_VIDEO=$DUMP_VIDEO"
  31. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  32. exit 1
  33. fi
  34. if [ ! -x "$YUVJPEG" ]; then
  35. echo "Executable not found YUVJPEG=$YUVJPEG"
  36. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  37. exit 1
  38. fi
  39. if [ ! -x "$JPEGYUV" ]; then
  40. echo "Executable not found JPEGYUV=$JPEGYUV"
  41. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  42. exit 1
  43. fi
  44. if [ ! -x "$YUV2YUV4MPEG" ]; then
  45. echo "Executable not found YUV2YUV4MPEG=$YUV2YUV4MPEG"
  46. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  47. exit 1
  48. fi
  49. if [ ! -x "$Y4M2PNG" ]; then
  50. echo "Executable not found Y4M2PNG=$Y4M2PNG"
  51. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  52. exit 1
  53. fi
  54. if [ -z $V ]; then
  55. V=29
  56. fi
  57. for FILE in $@; do
  58. echo $FILE
  59. BASENAME=$(basename $FILE)
  60. $ENCODER_EXAMPLE -v $V $FILE -o $BASENAME-$V.ogv 2> /dev/null
  61. $DUMP_VIDEO -o $BASENAME-$V.ogv.y4m $BASENAME-$V.ogv 2> /dev/null
  62. $Y4M2PNG -o $BASENAME-$V.ogv.png $BASENAME-$V.ogv.y4m
  63. OGV_SIZE=$(stat -c %s $BASENAME-$V.ogv)
  64. tail -n+3 $FILE > $BASENAME-in.yuv
  65. WIDTH=$(head -1 $FILE | cut -d\ -f 2 | tr -d 'W')
  66. HEIGHT=$(head -1 $FILE | cut -d\ -f 3 | tr -d 'H')
  67. for i in $(seq 0 100); do
  68. JPEG_FILE=$BASENAME-$i.jpeg.tmp
  69. $YUVJPEG $i "$WIDTH"x$HEIGHT $BASENAME-in.yuv $JPEG_FILE
  70. JPEG_SIZE=$(stat -c %s $BASENAME-$i.jpeg.tmp)
  71. if (($JPEG_SIZE > $OGV_SIZE)); then
  72. if [[ -z $JPEG_LAST_SIZE ]]; then
  73. mv $JPEG_FILE $BASENAME-$i.jpeg
  74. else
  75. if (($JPEG_SIZE - $OGV_SIZE < $OGV_SIZE - $JPEG_LAST_SIZE)); then
  76. mv $JPEG_FILE $BASENAME-$i.jpeg
  77. else
  78. mv $JPEG_LAST_FILE $BASENAME-$i.jpeg
  79. fi
  80. fi
  81. $JPEGYUV $BASENAME-$i.jpeg $BASENAME-$i.jpeg.yuv
  82. $YUV2YUV4MPEG $BASENAME-$i.jpeg -w$WIDTH -h$HEIGHT -an0 -ad0 -c420mpeg2
  83. $Y4M2PNG -o $BASENAME-$i.jpeg.png $BASENAME-$i.jpeg.y4m
  84. rm $BASENAME-$i.jpeg.yuv $BASENAME-$i.jpeg.y4m
  85. break
  86. fi
  87. JPEG_LAST_SIZE=$JPEG_SIZE
  88. JPEG_LAST_FILE=$JPEG_FILE
  89. done
  90. rm $BASENAME-*.jpeg.tmp $BASENAME-in.yuv $BASENAME-$V.ogv.y4m
  91. done