Commit | Line | Data |
---|---|---|
77f66963 SS |
1 | #!/bin/sh |
2 | # | |
3 | # automatic regression test for libavfilter | |
4 | # | |
5 | # | |
6 | #set -x | |
7 | ||
8 | set -e | |
9 | ||
10 | . $(dirname $0)/regression-funcs.sh | |
11 | ||
12 | eval do_$test=y | |
13 | ||
f4b1e21a MR |
14 | do_video_filter() { |
15 | label=$1 | |
16 | filters=$2 | |
17 | shift 2 | |
ea57502c | 18 | printf '%-20s' $label |
6291d7e4 | 19 | run_avconv $DEC_OPTS -f image2 -vcodec pgmyuv -i $raw_src \ |
ea57502c | 20 | $ENC_OPTS -vf "$filters" -vcodec rawvideo $* -f nut md5: |
f4b1e21a MR |
21 | } |
22 | ||
77f66963 | 23 | do_lavfi() { |
1400bd5a | 24 | vfilters="slicify=random,$2" |
77f66963 | 25 | |
e6e3069b | 26 | if [ $test = $1 ] ; then |
f4b1e21a | 27 | do_video_filter $test "$vfilters" |
77f66963 SS |
28 | fi |
29 | } | |
30 | ||
75b67a8a SS |
31 | do_lavfi "crop" "crop=iw-100:ih-100:100:100" |
32 | do_lavfi "crop_scale" "crop=iw-100:ih-100:100:100,scale=400:-1" | |
33 | do_lavfi "crop_scale_vflip" "null,null,crop=iw-200:ih-200:200:200,crop=iw-20:ih-20:20:20,scale=200:200,scale=250:250,vflip,vflip,null,scale=200:200,crop=iw-100:ih-100:100:100,vflip,scale=200:200,null,vflip,crop=iw-100:ih-100:100:100,null" | |
34 | do_lavfi "crop_vflip" "crop=iw-100:ih-100:100:100,vflip" | |
cec96e8d SS |
35 | do_lavfi "null" "null" |
36 | do_lavfi "scale200" "scale=200:200" | |
37 | do_lavfi "scale500" "scale=500:500" | |
38 | do_lavfi "vflip" "vflip" | |
75b67a8a | 39 | do_lavfi "vflip_crop" "vflip,crop=iw-100:ih-100:100:100" |
cec96e8d | 40 | do_lavfi "vflip_vflip" "vflip,vflip" |
77f66963 | 41 | |
73177b6c SS |
42 | do_lavfi_pixfmts(){ |
43 | test ${test%_[bl]e} = pixfmts_$1 || return 0 | |
44 | filter=$1 | |
45 | filter_args=$2 | |
e34d5db5 | 46 | |
43d2c6a5 | 47 | showfiltfmts="$target_exec $target_path/tools/lavfi-showfiltfmts" |
9c87c037 MR |
48 | exclude_fmts=${outfile}${1}_exclude_fmts |
49 | out_fmts=${outfile}${1}_out_fmts | |
8456d947 | 50 | |
7e7fc4e9 | 51 | # exclude pixel formats which are not supported as input |
6291d7e4 | 52 | $avconv -pix_fmts list 2>/dev/null | sed -ne '9,$p' | grep '^\..\.' | cut -d' ' -f2 | sort >$exclude_fmts |
42907c6a | 53 | $showfiltfmts scale | awk -F '[ \r]' '/^OUTPUT/{ print $3 }' | sort | comm -23 - $exclude_fmts >$out_fmts |
e34d5db5 | 54 | |
42907c6a | 55 | pix_fmts=$($showfiltfmts $filter | awk -F '[ \r]' '/^INPUT/{ print $3 }' | sort | comm -12 - $out_fmts) |
04307697 | 56 | for pix_fmt in $pix_fmts; do |
f4b1e21a | 57 | do_video_filter $pix_fmt "slicify=random,format=$pix_fmt,$filter=$filter_args" -pix_fmt $pix_fmt |
04307697 | 58 | done |
7e7fc4e9 MR |
59 | |
60 | rm $exclude_fmts $out_fmts | |
73177b6c SS |
61 | } |
62 | ||
63 | # all these filters have exactly one input and exactly one output | |
b5670209 | 64 | do_lavfi_pixfmts "copy" "" |
73177b6c | 65 | do_lavfi_pixfmts "crop" "100:100:100:100" |
a1e171df | 66 | do_lavfi_pixfmts "hflip" "" |
73177b6c SS |
67 | do_lavfi_pixfmts "null" "" |
68 | do_lavfi_pixfmts "pad" "500:400:20:20" | |
69 | do_lavfi_pixfmts "scale" "200:100" | |
70 | do_lavfi_pixfmts "vflip" "" | |
e34d5db5 | 71 | |
842f463c | 72 | if [ -n "$do_pixdesc" ]; then |
6291d7e4 | 73 | pix_fmts="$($avconv -pix_fmts list 2>/dev/null | sed -ne '9,$p' | grep '^IO' | cut -d' ' -f2 | sort)" |
ce2e4ae3 | 74 | for pix_fmt in $pix_fmts; do |
f4b1e21a | 75 | do_video_filter $pix_fmt "slicify=random,format=$pix_fmt,pixdesctest" -pix_fmt $pix_fmt |
ce2e4ae3 SS |
76 | done |
77 | fi | |
78 | ||
77f66963 SS |
79 | # TODO: add tests for |
80 | # direct rendering, | |
77f66963 | 81 | # chains with feedback loops |