1#!/bin/sh 2# 3# common regression functions for avconv 4# 5# 6 7test="${1#regtest-}" 8test_ref=$2 9raw_src_dir=$3 10target_exec=$4 11target_path=$5 12threads=${6:-1} 13 14datadir="./tests/data" 15target_datadir="${target_path}/${datadir}" 16 17this="$test.$test_ref" 18outfile="$datadir/$test_ref/" 19 20# various files 21avconv="$target_exec ${target_path}/avconv" 22tiny_psnr="tests/tiny_psnr" 23raw_src="${target_path}/$raw_src_dir/%02d.pgm" 24raw_dst="$datadir/$this.out.yuv" 25raw_ref="$datadir/$test_ref.ref.yuv" 26pcm_src="$target_datadir/asynth1.sw" 27pcm_dst="$datadir/$this.out.wav" 28pcm_ref="$datadir/$test_ref.ref.wav" 29crcfile="$datadir/$this.crc" 30target_crcfile="$target_datadir/$this.crc" 31 32cleanfiles="$raw_dst $pcm_dst $crcfile" 33trap 'rm -f -- $cleanfiles' EXIT 34 35mkdir -p "$datadir" 36mkdir -p "$outfile" 37 38[ "${V-0}" -gt 0 ] && echov=echov || echov=: 39 40echov(){ 41 echo "$@" >&3 42} 43 44. $(dirname $0)/md5.sh 45 46AVCONV_OPTS="-nostats -y" 47COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact" 48DEC_OPTS="$COMMON_OPTS -threads $threads" 49ENC_OPTS="$COMMON_OPTS -threads 1 -dct fastint" 50 51run_avconv() 52{ 53 $echov $avconv $AVCONV_OPTS $* 54 $avconv $AVCONV_OPTS $* 55} 56 57do_avconv() 58{ 59 f="$1" 60 shift 61 set -- $* ${target_path}/$f 62 run_avconv $* 63 do_md5sum $f 64 if [ $f = $raw_dst ] ; then 65 $tiny_psnr $f $raw_ref 66 elif [ $f = $pcm_dst ] ; then 67 $tiny_psnr $f $pcm_ref 2 68 else 69 wc -c $f 70 fi 71} 72 73do_avconv_nomd5() 74{ 75 f="$1" 76 shift 77 set -- $* ${target_path}/$f 78 run_avconv $* 79 if [ $f = $raw_dst ] ; then 80 $tiny_psnr $f $raw_ref 81 elif [ $f = $pcm_dst ] ; then 82 $tiny_psnr $f $pcm_ref 2 83 else 84 wc -c $f 85 fi 86} 87 88do_avconv_crc() 89{ 90 f="$1" 91 shift 92 run_avconv $* -f crc "$target_crcfile" 93 echo "$f $(cat $crcfile)" 94} 95 96do_video_decoding() 97{ 98 do_avconv $raw_dst $DEC_OPTS $1 -i $target_path/$file -f rawvideo $ENC_OPTS -vsync 0 $2 99} 100 101do_video_encoding() 102{ 103 file=${outfile}$1 104 do_avconv $file $DEC_OPTS -f image2 -vcodec pgmyuv -i $raw_src $ENC_OPTS $2 105} 106 107do_audio_encoding() 108{ 109 file=${outfile}$1 110 do_avconv $file $DEC_OPTS -ac 2 -ar 44100 -f s16le -i $pcm_src -ab 128k $ENC_OPTS $2 111} 112 113do_audio_decoding() 114{ 115 do_avconv $pcm_dst $DEC_OPTS -i $target_path/$file -sample_fmt s16 -f wav 116} 117