-diff -urN a/libavfilter/formats.c b/libavfilter/formats.c
---- a/libavfilter/formats.c 2019-12-02 08:48:03.073361317 -0700
-+++ b/libavfilter/formats.c 2019-12-02 08:52:32.155270978 -0700
-@@ -107,11 +107,13 @@
+--- a/libavfilter/formats.c
++++ b/libavfilter/formats.c
+@@ -110,11 +110,13 @@
possibly causing a lossy conversion elsewhere in the graph.
To avoid that, pretend that there are no common formats to force the
insertion of a conversion filter. */
- if (type == AVMEDIA_TYPE_VIDEO)
-- for (i = 0; i < a->nb_formats; i++)
+ if (type == AVMEDIA_TYPE_VIDEO) {
-+ for (i = 0; i < a->nb_formats; i++) {
-+ const AVPixFmtDescriptor *adesc = av_pix_fmt_desc_get(a->formats[i]);
+ for (i = 0; i < a->nb_formats; i++) {
+ const AVPixFmtDescriptor *const adesc = av_pix_fmt_desc_get(a->formats[i]);
+ if( !adesc ) continue;
for (j = 0; j < b->nb_formats; j++) {
-- const AVPixFmtDescriptor *adesc = av_pix_fmt_desc_get(a->formats[i]);
const AVPixFmtDescriptor *bdesc = av_pix_fmt_desc_get(b->formats[j]);
+ if( !bdesc ) continue;
alpha2 |= adesc->flags & bdesc->flags & AV_PIX_FMT_FLAG_ALPHA;
chroma2|= adesc->nb_components > 1 && bdesc->nb_components > 1;
if (a->formats[i] == b->formats[j]) {
-@@ -119,6 +121,8 @@
- chroma1|= adesc->nb_components > 1;
+@@ -123,6 +125,7 @@
}
}
-+ }
+ }
+ }
// If chroma or alpha can be lost through merging then do not merge