[FFmpeg-devel] [PATCH 7/7] tests: add coverage for libavfilter's format negotiation

Nicolas George george at nsup.org
Tue Aug 2 19:54:21 EEST 2022


Added coverage for the video part of pick_format().

Signed-off-by: Nicolas George <george at 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

diff --git a/tests/Makefile b/tests/Makefile
index d9c509a415..c4e01a26e9 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -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
diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 4008bcbc16..53dcbb563b 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -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(){
     :
 }
diff --git a/tests/fate/libavfilter.mak b/tests/fate/libavfilter.mak
new file mode 100644
index 0000000000..b7d3786942
--- /dev/null
+++ b/tests/fate/libavfilter.mak
@@ -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)
diff --git a/tests/ref/fate/libavfilter-negotiation-alpha b/tests/ref/fate/libavfilter-negotiation-alpha
new file mode 100644
index 0000000000..00175f65cb
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-alpha
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-rgb b/tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-rgb
new file mode 100644
index 0000000000..38d4670ac4
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-rgb
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-yuv b/tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-yuv
new file mode 100644
index 0000000000..fecb493f88
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-alpha-over-chroma-yuv
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-avoid-subsample b/tests/ref/fate/libavfilter-negotiation-avoid-subsample
new file mode 100644
index 0000000000..eafb6f04b2
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-avoid-subsample
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-chroma-rgb b/tests/ref/fate/libavfilter-negotiation-chroma-rgb
new file mode 100644
index 0000000000..f317cc85cd
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-chroma-rgb
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-chroma-yuv b/tests/ref/fate/libavfilter-negotiation-chroma-yuv
new file mode 100644
index 0000000000..ff3e54aa84
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-chroma-yuv
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-chroma-yuv420 b/tests/ref/fate/libavfilter-negotiation-chroma-yuv420
new file mode 100644
index 0000000000..f93f15d1b1
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-chroma-yuv420
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-chroma1-over-depth1 b/tests/ref/fate/libavfilter-negotiation-chroma1-over-depth1
new file mode 100644
index 0000000000..01e3e0df56
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-chroma1-over-depth1
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-chroma2-over-colorspace8 b/tests/ref/fate/libavfilter-negotiation-chroma2-over-colorspace8
new file mode 100644
index 0000000000..9c78d1cf94
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-chroma2-over-colorspace8
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-colorspace-rgb-yuv b/tests/ref/fate/libavfilter-negotiation-colorspace-rgb-yuv
new file mode 100644
index 0000000000..8e69fb572a
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-colorspace-rgb-yuv
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-colorspace-yuv-rgb b/tests/ref/fate/libavfilter-negotiation-colorspace-yuv-rgb
new file mode 100644
index 0000000000..00a4b25599
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-colorspace-yuv-rgb
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-colorspace8-over-alpha b/tests/ref/fate/libavfilter-negotiation-colorspace8-over-alpha
new file mode 100644
index 0000000000..7376f40526
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-colorspace8-over-alpha
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-depth-rgb b/tests/ref/fate/libavfilter-negotiation-depth-rgb
new file mode 100644
index 0000000000..aa8c9a3a5c
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-depth-rgb
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-depth-yuv b/tests/ref/fate/libavfilter-negotiation-depth-yuv
new file mode 100644
index 0000000000..b4570fbd22
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-depth-yuv
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-depth1-over-depth2 b/tests/ref/fate/libavfilter-negotiation-depth1-over-depth2
new file mode 100644
index 0000000000..dc6aff0817
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-depth1-over-depth2
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-depth2-over-alpha b/tests/ref/fate/libavfilter-negotiation-depth2-over-alpha
new file mode 100644
index 0000000000..96867239f8
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-depth2-over-alpha
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-palette-rgb b/tests/ref/fate/libavfilter-negotiation-palette-rgb
new file mode 100644
index 0000000000..f317cc85cd
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-palette-rgb
@@ -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]
+
diff --git a/tests/ref/fate/libavfilter-negotiation-palette-yuv b/tests/ref/fate/libavfilter-negotiation-palette-yuv
new file mode 100644
index 0000000000..ff3e54aa84
--- /dev/null
+++ b/tests/ref/fate/libavfilter-negotiation-palette-yuv
@@ -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]
+
-- 
2.35.1



More information about the ffmpeg-devel mailing list