--- 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)
+    if (type == AVMEDIA_TYPE_VIDEO) {
         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 *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]) {
@@ -123,6 +125,7 @@
                 }
             }
         }
+    }
 
     // If chroma or alpha can be lost through merging then do not merge
     if (alpha2 > alpha1 || chroma2 > chroma1)
