vp9dec: Add warnings for unsupported frame formats
authorJan Schmidt <jan@centricular.com>
Wed, 5 Apr 2017 05:55:20 +0000 (15:55 +1000)
committerJan Schmidt <jan@centricular.com>
Wed, 5 Apr 2017 06:09:53 +0000 (16:09 +1000)
At least output an element warning on the bus when we
encounter a frame format GStreamer doesn't currently support.

ext/vpx/gstvp9dec.c

index cbd750b..066952e 100644 (file)
@@ -148,6 +148,37 @@ gst_vp9_dec_get_valid_format (GstVPXDec * dec, vpx_image_t * img,
       *fmt = GST_VIDEO_FORMAT_Y444;
       return TRUE;
 
+    case VPX_IMG_FMT_I440:
+      /* Planar, half height, full width U/V */
+      GST_FIXME_OBJECT (dec, "Please add a 4:4:0 planar frame format");
+      GST_ELEMENT_WARNING (dec, STREAM, NOT_IMPLEMENTED,
+          (NULL), ("Unsupported frame format - 4:4:0 planar"));
+      return FALSE;
+    case VPX_IMG_FMT_I42016:
+      /* VPX_IMG_FMT_I420 | VPX_IMG_FMT_HIGHBITDEPTH */
+      GST_FIXME_OBJECT (dec, "Please add 16-bit I420 format");
+      GST_ELEMENT_WARNING (dec, STREAM, NOT_IMPLEMENTED,
+          (NULL), ("Unsupported frame format - 16-bit 4:2:0 planar"));
+      return FALSE;
+    case VPX_IMG_FMT_I42216:
+      /* VPX_IMG_FMT_I422 | VPX_IMG_FMT_HIGHBITDEPTH */
+      GST_FIXME_OBJECT (dec, "Please add 16-bit Y42B format");
+      GST_ELEMENT_WARNING (dec, STREAM, NOT_IMPLEMENTED,
+          (NULL), ("Unsupported frame format - 16-bit 4:2:2 planar"));
+      return FALSE;
+    case VPX_IMG_FMT_I44416:
+      /* VPX_IMG_FMT_I444 | VPX_IMG_FMT_HIGHBITDEPTH */
+      GST_FIXME_OBJECT (dec, "Please add 16-bit Y444 format");
+      GST_ELEMENT_WARNING (dec, STREAM, NOT_IMPLEMENTED,
+          (NULL), ("Unsupported frame format - 16-bit 4:4:4 planar"));
+      return FALSE;
+    case VPX_IMG_FMT_I44016:
+      /* VPX_IMG_FMT_I440 | VPX_IMG_FMT_HIGHBITDEPTH */
+      GST_FIXME_OBJECT (dec, "Please add 16-bit 4:4:0 planar frame format");
+      GST_ELEMENT_WARNING (dec, STREAM, NOT_IMPLEMENTED,
+          (NULL), ("Unsupported frame format - 16-bit 4:4:0 planar"));
+      return FALSE;
+
     default:
       return FALSE;
   }