regression-funcs.sh 2.2 KB
Newer Older
1 2
#!/bin/sh
#
3
# common regression functions for avconv
4 5 6 7 8 9
#
#

test="${1#regtest-}"
test_ref=$2
raw_src_dir=$3
10 11
target_exec=$4
target_path=$5
12
threads=${6:-1}
13 14 15 16 17

datadir="./tests/data"
target_datadir="${target_path}/${datadir}"

this="$test.$test_ref"
18
outfile="$datadir/$test_ref/"
19 20

# various files
21
avconv="$target_exec ${target_path}/avconv"
22 23 24 25 26 27 28 29 30 31
tiny_psnr="tests/tiny_psnr"
raw_src="${target_path}/$raw_src_dir/%02d.pgm"
raw_dst="$datadir/$this.out.yuv"
raw_ref="$datadir/$test_ref.ref.yuv"
pcm_src="$target_datadir/asynth1.sw"
pcm_dst="$datadir/$this.out.wav"
pcm_ref="$datadir/$test_ref.ref.wav"
crcfile="$datadir/$this.crc"
target_crcfile="$target_datadir/$this.crc"

32
cleanfiles="$raw_dst $pcm_dst $crcfile"
33 34
trap 'rm -f -- $cleanfiles' EXIT

35
mkdir -p "$datadir"
36
mkdir -p "$outfile"
37 38

[ "${V-0}" -gt 0 ] && echov=echov || echov=:
39

40 41 42 43
echov(){
    echo "$@" >&3
}

44
. $(dirname $0)/md5.sh
45

46
AVCONV_OPTS="-v 0 -y"
47 48
COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact"
DEC_OPTS="$COMMON_OPTS -threads $threads"
49
ENC_OPTS="$COMMON_OPTS -threads 1 -dct fastint"
50

51
run_avconv()
52
{
53 54
    $echov $avconv $AVCONV_OPTS $*
    $avconv $AVCONV_OPTS $*
55 56
}

57
do_avconv()
58 59 60 61
{
    f="$1"
    shift
    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 71 72
    fi
}

73
do_avconv_nomd5()
74 75 76 77
{
    f="$1"
    shift
    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 86 87
    fi
}

88
do_avconv_crc()
89 90 91
{
    f="$1"
    shift
92
    run_avconv $* -f crc "$target_crcfile"
93
    echo "$f $(cat $crcfile)"
94 95 96 97
}

do_video_decoding()
{
98
    do_avconv $raw_dst $DEC_OPTS $1 -i $target_path/$file -f rawvideo $ENC_OPTS -vsync 0 $2
99 100 101 102 103
}

do_video_encoding()
{
    file=${outfile}$1
104
    do_avconv $file $DEC_OPTS -f image2 -vcodec pgmyuv -i $raw_src $ENC_OPTS $2
105 106 107 108 109
}

do_audio_encoding()
{
    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 113 114
}

do_audio_decoding()
{
115
    do_avconv $pcm_dst $DEC_OPTS -i $target_path/$file -sample_fmt s16 -f wav
116
}