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 | ||
14 | rm -f "$logfile" | |
15 | rm -f "$benchfile" | |
16 | ||
17 | do_lavfi() { | |
1400bd5a | 18 | vfilters="slicify=random,$2" |
77f66963 | 19 | |
e6e3069b MR |
20 | if [ $test = $1 ] ; then |
21 | do_video_encoding ${test}.nut "" "-vcodec rawvideo -vf $vfilters" | |
77f66963 SS |
22 | fi |
23 | } | |
24 | ||
cec96e8d SS |
25 | do_lavfi "crop" "crop=100:100" |
26 | do_lavfi "crop_scale" "crop=100:100,scale=400:-1" | |
27 | do_lavfi "crop_scale_vflip" "null,null,crop=200:200,crop=20:20,scale=200:200,scale=250:250,vflip,vflip,null,scale=200:200,crop=100:100,vflip,scale=200:200,null,vflip,crop=100:100,null" | |
28 | do_lavfi "crop_vflip" "crop=100:100,vflip" | |
29 | do_lavfi "null" "null" | |
30 | do_lavfi "scale200" "scale=200:200" | |
31 | do_lavfi "scale500" "scale=500:500" | |
32 | do_lavfi "vflip" "vflip" | |
33 | do_lavfi "vflip_crop" "vflip,crop=100:100" | |
34 | do_lavfi "vflip_vflip" "vflip,vflip" | |
77f66963 | 35 | |
73177b6c SS |
36 | do_lavfi_pixfmts(){ |
37 | test ${test%_[bl]e} = pixfmts_$1 || return 0 | |
38 | filter=$1 | |
39 | filter_args=$2 | |
e34d5db5 | 40 | |
43d2c6a5 | 41 | showfiltfmts="$target_exec $target_path/tools/lavfi-showfiltfmts" |
7e7fc4e9 MR |
42 | exclude_fmts=${outfile}exclude_fmts |
43 | out_fmts=${outfile}out_fmts | |
8456d947 | 44 | |
7e7fc4e9 MR |
45 | # exclude pixel formats which are not supported as input |
46 | $ffmpeg -pix_fmts list 2>/dev/null | sed -ne '9,$p' | grep '^\..\.' | cut -d' ' -f2 | sort >$exclude_fmts | |
47 | $showfiltfmts scale | awk '/^OUTPUT/{ print $3 }' | sort | comm -23 - $exclude_fmts >$out_fmts | |
e34d5db5 | 48 | |
7e7fc4e9 | 49 | pix_fmts=$($showfiltfmts $filter | awk '/^INPUT/{ print $3 }' | sort | comm -12 - $out_fmts) |
e34d5db5 | 50 | for pix_fmt in $pix_fmts; do |
73177b6c | 51 | output=${test}-${pix_fmt}.nut |
65e17eae | 52 | do_video_encoding $output "" \ |
73177b6c | 53 | "-vf slicify=random,format=$pix_fmt,$filter=$filter_args -vcodec rawvideo -pix_fmt $pix_fmt" |
79ec38d1 | 54 | rm ${outfile}${output} |
e34d5db5 | 55 | done |
7e7fc4e9 MR |
56 | |
57 | rm $exclude_fmts $out_fmts | |
73177b6c SS |
58 | } |
59 | ||
60 | # all these filters have exactly one input and exactly one output | |
61 | do_lavfi_pixfmts "crop" "100:100:100:100" | |
62 | do_lavfi_pixfmts "null" "" | |
63 | do_lavfi_pixfmts "pad" "500:400:20:20" | |
64 | do_lavfi_pixfmts "scale" "200:100" | |
65 | do_lavfi_pixfmts "vflip" "" | |
e34d5db5 | 66 | |
7c1bb914 | 67 | if [ -n "$do_pixdesc_be" ] || [ -n "$do_pixdesc_le" ]; then |
ce2e4ae3 | 68 | pix_fmts="$($ffmpeg -pix_fmts list 2>/dev/null | sed -ne '9,$p' | grep '^IO' | cut -d' ' -f2)" |
ce2e4ae3 | 69 | for pix_fmt in $pix_fmts; do |
8fae6e7c MR |
70 | output=lavfi_pixdesc-${pix_fmt}.nut |
71 | do_video_encoding $output "" \ | |
ce2e4ae3 | 72 | "-vf slicify=random,format=$pix_fmt,pixdesctest -vcodec rawvideo -pix_fmt $pix_fmt" |
8fae6e7c | 73 | rm ${outfile}${output} |
ce2e4ae3 SS |
74 | done |
75 | fi | |
76 | ||
77f66963 SS |
77 | # TODO: add tests for |
78 | # direct rendering, | |
77f66963 | 79 | # chains with feedback loops |