@@ -202,6 +202,7 @@ include $(SRC_PATH)/tests/fate/imf.mak
include $(SRC_PATH)/tests/fate/indeo.mak
include $(SRC_PATH)/tests/fate/libavcodec.mak
include $(SRC_PATH)/tests/fate/libavdevice.mak
+include $(SRC_PATH)/tests/fate/libavfilter.mak
include $(SRC_PATH)/tests/fate/libavformat.mak
include $(SRC_PATH)/tests/fate/libavutil.mak
include $(SRC_PATH)/tests/fate/libswresample.mak
@@ -571,6 +571,10 @@ venc_data(){
run tools/venc_data_dump${EXECSUF} ${file} ${stream} ${frames} ${threads} ${thread_type}
}
+lavfi_dump(){
+ run ffmpeg${PROGSUF}${EXECSUF} -lavfi_dump -lavfi "$@" -f null -
+}
+
null(){
:
}
new file mode 100644
@@ -0,0 +1,86 @@
+NEGO_PIXFMT = lavfi_dump testsrc2=d=0,format=$(1),scale,format=$(2)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : losing alpha
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-alpha
+fate-libavfilter-negotiation-alpha: CMD = $(call NEGO_PIXFMT,rgba,yuv444p/yuva444p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : subsampling
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-avoid-subsample
+fate-libavfilter-negotiation-avoid-subsample: CMD = $(call NEGO_PIXFMT,yuv444p,yuv420p10le/yuva444p10le)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : losing depth (yuv)
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-depth-yuv
+fate-libavfilter-negotiation-depth-yuv: CMD = $(call NEGO_PIXFMT,yuv444p10le,yuv444p9le/yuva444p12le)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : losing depth (rgb)
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-depth-rgb
+fate-libavfilter-negotiation-depth-rgb: CMD = $(call NEGO_PIXFMT,rgb24,rgb555le/rgb48le)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : changing colorspace (yuv → rgb)
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-colorspace-yuv-rgb
+fate-libavfilter-negotiation-colorspace-yuv-rgb: CMD = $(call NEGO_PIXFMT,yuv444p,rgb24/yuv444p9)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : changing colorspace (rgb → yuv)
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-colorspace-rgb-yuv
+fate-libavfilter-negotiation-colorspace-rgb-yuv: CMD = $(call NEGO_PIXFMT,rgb24,yuv444p/rgb0)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : losing chroma (yuv)
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-chroma-yuv
+fate-libavfilter-negotiation-chroma-yuv: CMD = $(call NEGO_PIXFMT,yuv444p,gray8/rgb24)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : losing chroma (rgb)
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-chroma-rgb
+fate-libavfilter-negotiation-chroma-rgb: CMD = $(call NEGO_PIXFMT,rgb24,gray8/yuv444p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : avoid palette (yuv)
+# FIXME yuv → pal8 always loses depth
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-palette-yuv
+fate-libavfilter-negotiation-palette-yuv: CMD = $(call NEGO_PIXFMT,yuv444p,pal8/rgb24)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : avoid palette (rgb)
+# FIXME rgb → pal8 always loses depth
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-palette-rgb
+fate-libavfilter-negotiation-palette-rgb: CMD = $(call NEGO_PIXFMT,rgb24,pal8/yuv444p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : yuv420 exception
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-chroma-yuv420
+fate-libavfilter-negotiation-chroma-yuv420: CMD = $(call NEGO_PIXFMT,yuv444p,yuv422p/yuv420p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : chroma subsampling -1 > depth -1
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-chroma1-over-depth1
+fate-libavfilter-negotiation-chroma1-over-depth1: CMD = $(call NEGO_PIXFMT,yuv444p10le,yuv444p9le/yuv440p10le)
+
+# FIXME depth -1 > chroma subsampling -2 → impossible to test without triggering the exception for 420
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : depth -1 > depth -2
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-depth1-over-depth2
+fate-libavfilter-negotiation-depth1-over-depth2: CMD = $(call NEGO_PIXFMT,yuv444p10le,yuv444p/yuv444p9le)
+
+# FIXME chroma subsampling -2 > depth -2 → impossible to test without triggering the exception for 420
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : chroma subsampling -2 > colorspace 8
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-chroma2-over-colorspace8
+fate-libavfilter-negotiation-chroma2-over-colorspace8: CMD = $(call NEGO_PIXFMT,yuv444p,rgb24/yuv411p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : depth -2 > lose alpha
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-depth2-over-alpha
+fate-libavfilter-negotiation-depth2-over-alpha: CMD = $(call NEGO_PIXFMT,yuva444p10le,yuv444p10le/yuva444p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : colorspace 8 > lose alpha
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-colorspace8-over-alpha
+fate-libavfilter-negotiation-colorspace8-over-alpha: CMD = $(call NEGO_PIXFMT,yuva444p,yuv444p/rgba)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : lose alpha > lose chroma
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-alpha-over-chroma-yuv
+fate-libavfilter-negotiation-alpha-over-chroma-yuv: CMD = $(call NEGO_PIXFMT,yuva444p,gray8a/yuv444p)
+
+# avfiltergraph.c : pick_format() → pixdesc.c : get_pix_fmt_score() : lose alpha > lose chroma
+FATE_LIBAVFILTER_NEGOTIATION_VIDEO += fate-libavfilter-negotiation-alpha-over-chroma-rgb
+fate-libavfilter-negotiation-alpha-over-chroma-rgb: CMD = $(call NEGO_PIXFMT,rgba,gray8a/rgb24)
+
+FATE_LIBAVFILTER_NEGOTIATION-$(call ALLYES, TESTSRC2_FILTER FORMAT_FILTER SCALE_FILTER) += $(FATE_LIBAVFILTER_NEGOTIATION_VIDEO)
+FATE_LIBAVFILTER-yes += $(FATE_LIBAVFILTER_NEGOTIATION-yes)
+
+fate-libavfilter: $(FATE_LIBAVFILTER-yes)
+fate-libavfilter-negotiation: $(FATE_LIBAVFILTER_NEGOTIATION-yes)
+FATE_FFMPEG += $(FATE_LIBAVFILTER-yes)
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 rgba]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 rgba]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 rgba]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 rgba]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuva444p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuva444p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuva444p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuva444p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 rgba]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 rgba]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 rgba]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 rgba]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 rgb24]
+ out 0: default → out_0_0.0:default [320x240 1:1 rgb24]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 rgb24]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuva444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuva444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuva444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuva444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv444p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv444p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuva444p10le]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuva444p10le]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuva444p10le]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuva444p10le]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv444p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv444p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 rgb24]
+ out 0: default → out_0_0.0:default [320x240 1:1 rgb24]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 rgb24]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv420p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv420p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv420p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv420p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p10le]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p10le]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p10le]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p10le]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv440p10le]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv440p10le]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv440p10le]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv440p10le]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv411p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv411p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv411p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv411p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 rgb0]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 rgb0]
+ out 0: default → out_0_0.0:default [320x240 1:1 rgb0]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 rgb0]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv444p9le]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv444p9le]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv444p9le]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv444p9le]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuva444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuva444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuva444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuva444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 rgba]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 rgba]
+ out 0: default → out_0_0.0:default [320x240 1:1 rgba]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 rgba]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 rgb48le]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 rgb48le]
+ out 0: default → out_0_0.0:default [320x240 1:1 rgb48le]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 rgb48le]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p10le]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p10le]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p10le]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p10le]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuva444p12le]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuva444p12le]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuva444p12le]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuva444p12le]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p10le]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p10le]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p10le]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p10le]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv444p9le]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv444p9le]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv444p9le]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv444p9le]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuva444p10le]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuva444p10le]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuva444p10le]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuva444p10le]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuva444p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuva444p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuva444p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuva444p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 rgb24]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+ out 0: default → out_0_0.0:default [320x240 1:1 yuv444p]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 yuv444p]
+
new file mode 100644
@@ -0,0 +1,20 @@
+Dump of complex filter graph #0:
+
+Filter: Parsed_testsrc2_0 (testsrc2)
+ out 0: default → Parsed_format_1.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_format_1 (format)
+ in 0: default ← Parsed_testsrc2_0.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_scale_2.0:default [320x240 1:1 yuv444p]
+
+Filter: Parsed_scale_2 (scale)
+ in 0: default ← Parsed_format_1.0:default [320x240 1:1 yuv444p]
+ out 0: default → Parsed_format_3.0:default [320x240 1:1 rgb24]
+
+Filter: Parsed_format_3 (format)
+ in 0: default ← Parsed_scale_2.0:default [320x240 1:1 rgb24]
+ out 0: default → out_0_0.0:default [320x240 1:1 rgb24]
+
+Filter: out_0_0 (buffersink)
+ in 0: default ← Parsed_format_3.0:default [320x240 1:1 rgb24]
+
Added coverage for the video part of pick_format(). Signed-off-by: Nicolas George <george@nsup.org> --- Only video for now, I would like to push before working on audio. Audio is easier because there are fewer formats. But audio is also harder because I need to test cases where format incompatibilities detected in two places for different aspects. Once I have good coverage, I can reorganise the negotiation process without risking breaking cases that were previously fixed. Note: the tests are very fast, since they only init the graph and do not filter anything. tests/Makefile | 1 + tests/fate-run.sh | 4 + tests/fate/libavfilter.mak | 86 +++++++++++++++++++ tests/ref/fate/libavfilter-negotiation-alpha | 20 +++++ ...avfilter-negotiation-alpha-over-chroma-rgb | 20 +++++ ...avfilter-negotiation-alpha-over-chroma-yuv | 20 +++++ .../libavfilter-negotiation-avoid-subsample | 20 +++++ .../fate/libavfilter-negotiation-chroma-rgb | 20 +++++ .../fate/libavfilter-negotiation-chroma-yuv | 20 +++++ .../libavfilter-negotiation-chroma-yuv420 | 20 +++++ ...ibavfilter-negotiation-chroma1-over-depth1 | 20 +++++ ...ilter-negotiation-chroma2-over-colorspace8 | 20 +++++ ...libavfilter-negotiation-colorspace-rgb-yuv | 20 +++++ ...libavfilter-negotiation-colorspace-yuv-rgb | 20 +++++ ...vfilter-negotiation-colorspace8-over-alpha | 20 +++++ .../fate/libavfilter-negotiation-depth-rgb | 20 +++++ .../fate/libavfilter-negotiation-depth-yuv | 20 +++++ ...libavfilter-negotiation-depth1-over-depth2 | 20 +++++ .../libavfilter-negotiation-depth2-over-alpha | 20 +++++ .../fate/libavfilter-negotiation-palette-rgb | 20 +++++ .../fate/libavfilter-negotiation-palette-yuv | 20 +++++ 21 files changed, 451 insertions(+) create mode 100644 tests/fate/libavfilter.mak create mode 100644 tests/ref/fate/libavfilter-negotiation-alpha create mode 100644 tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-rgb create mode 100644 tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-yuv create mode 100644 tests/ref/fate/libavfilter-negotiation-avoid-subsample create mode 100644 tests/ref/fate/libavfilter-negotiation-chroma-rgb create mode 100644 tests/ref/fate/libavfilter-negotiation-chroma-yuv create mode 100644 tests/ref/fate/libavfilter-negotiation-chroma-yuv420 create mode 100644 tests/ref/fate/libavfilter-negotiation-chroma1-over-depth1 create mode 100644 tests/ref/fate/libavfilter-negotiation-chroma2-over-colorspace8 create mode 100644 tests/ref/fate/libavfilter-negotiation-colorspace-rgb-yuv create mode 100644 tests/ref/fate/libavfilter-negotiation-colorspace-yuv-rgb create mode 100644 tests/ref/fate/libavfilter-negotiation-colorspace8-over-alpha create mode 100644 tests/ref/fate/libavfilter-negotiation-depth-rgb create mode 100644 tests/ref/fate/libavfilter-negotiation-depth-yuv create mode 100644 tests/ref/fate/libavfilter-negotiation-depth1-over-depth2 create mode 100644 tests/ref/fate/libavfilter-negotiation-depth2-over-alpha create mode 100644 tests/ref/fate/libavfilter-negotiation-palette-rgb create mode 100644 tests/ref/fate/libavfilter-negotiation-palette-yuv