ab_compare_libvpx.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. set -e
  3. # TODO - add a test for this
  4. export CODEC=$1
  5. shift
  6. if [ -z $DAALA_ROOT ]; then
  7. DAALA_ROOT=.
  8. fi
  9. if [ -z $LIBVPX_ROOT ] || [ ! -d $LIBVPX_ROOT ]; then
  10. echo "Please set LIBVPX_ROOT to the location of your libvpx git clone"
  11. exit 1
  12. fi
  13. if [ -z "$ENCODER_EXAMPLE" ]; then
  14. ENCODER_EXAMPLE=$DAALA_ROOT/examples/encoder_example
  15. fi
  16. if [ -z "$DUMP_VIDEO" ]; then
  17. DUMP_VIDEO=$DAALA_ROOT/examples/dump_video
  18. fi
  19. if [ -z "$Y4M2PNG" ]; then
  20. Y4M2PNG=$DAALA_ROOT/tools/y4m2png
  21. fi
  22. if [ -z "$VPXENC" ]; then
  23. export VPXENC=$LIBVPX_ROOT/vpxenc
  24. fi
  25. if [ -z "$VPXDEC" ]; then
  26. export VPXDEC=$LIBVPX_ROOT/vpxdec
  27. fi
  28. if [ ! -x "$ENCODER_EXAMPLE" ]; then
  29. echo "Executable not found ENCODER_EXAMPLE=$ENCODER_EXAMPLE"
  30. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  31. exit 1
  32. fi
  33. if [ ! -x "$DUMP_VIDEO" ]; then
  34. echo "Executable not found DUMP_VIDEO=$DUMP_VIDEO"
  35. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  36. exit 1
  37. fi
  38. if [ ! -x "$Y4M2PNG" ]; then
  39. echo "Executable not found Y4M2PNG=$Y4M2PNG"
  40. echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
  41. exit 1
  42. fi
  43. if [ ! -x "$VPXENC" ]; then
  44. echo "Executable not found VPXENC=$VPXENC"
  45. echo "Do you have the right LIBVPX_ROOT=$LIBVPX_ROOT"
  46. exit 1
  47. fi
  48. if [ ! -x "$VPXDEC" ]; then
  49. echo "Executable not found VPXDEC=$VPXDEC"
  50. echo "Do you have the right LIBVPX_ROOT=$LIBVPX_ROOT"
  51. exit 1
  52. fi
  53. if [ -z $V ]; then
  54. V=29
  55. fi
  56. for FILE in $@; do
  57. echo $FILE
  58. BASENAME=$(basename $FILE)
  59. $ENCODER_EXAMPLE -v $V $FILE -o $BASENAME-$V.ogv 2> /dev/null
  60. $DUMP_VIDEO -o $BASENAME-$V.ogv.y4m $BASENAME-$V.ogv 2> /dev/null
  61. $Y4M2PNG -o $BASENAME-$V.ogv.png $BASENAME-$V.ogv.y4m
  62. OGV_SIZE=$(stat -c %s $BASENAME-$V.ogv)
  63. for i in {63..3}; do
  64. VPX_FILE=$BASENAME-$i.$CODEC.tmp
  65. $VPXENC --codec=$CODEC --good --cpu-used=0 -y --min-q=$i --max-q=$i -o $VPX_FILE $FILE 2> /dev/null
  66. VPX_SIZE=$(stat -c %s $VPX_FILE)
  67. if (($VPX_SIZE > $OGV_SIZE)); then
  68. if [[ -z $VPX_LAST_SIZE ]]; then
  69. mv $VPX_FILE $BASENAME-$i.$CODEC
  70. else
  71. if (($VPX_SIZE - $OGV_SIZE < $OGV_SIZE - $VPX_LAST_SIZE)); then
  72. mv $VPX_FILE $BASENAME-$i.$CODEC
  73. else
  74. mv $VPX_LAST_FILE $BASENAME-$i.$CODEC
  75. fi
  76. fi
  77. $VPXDEC --codec=$CODEC -o $BASENAME-$i.$CODEC.y4m $BASENAME-$i.$CODEC
  78. $Y4M2PNG -o $BASENAME-$i.$CODEC.png $BASENAME-$i.$CODEC.y4m
  79. rm $BASENAME-$i.$CODEC.y4m
  80. break
  81. fi
  82. VPX_LAST_SIZE=$VPX_SIZE
  83. VPX_LAST_FILE=$VPX_FILE
  84. done
  85. rm $BASENAME-*.$CODEC.tmp $BASENAME-$V.ogv.y4m
  86. done