h264decoder: Disallow multiple slice group as we don't support FMO
authorSeungha Yang <seungha@centricular.com>
Fri, 22 May 2020 17:33:24 +0000 (02:33 +0900)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 22 May 2020 19:07:33 +0000 (19:07 +0000)
Even though it might be supported by accelerator, baseclass is not
ready to support it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1291>

gst-libs/gst/codecs/gsth264decoder.c

index f5c1609..e3d8dd0 100644 (file)
@@ -438,17 +438,28 @@ gst_h264_decoder_parse_pps (GstH264Decoder * self, GstH264NalUnit * nalu)
   GstH264DecoderPrivate *priv = self->priv;
   GstH264PPS pps;
   GstH264ParserResult pres;
+  gboolean ret = TRUE;
 
-  pres = gst_h264_parser_parse_pps (priv->parser, nalu, &pps);
+  pres = gst_h264_parse_pps (priv->parser, nalu, &pps);
   if (pres != GST_H264_PARSER_OK) {
     GST_WARNING_OBJECT (self, "Failed to parse PPS, result %d", pres);
     return FALSE;
   }
 
   GST_LOG_OBJECT (self, "PPS parsed");
+
+  if (pps.num_slice_groups_minus1 > 0) {
+    GST_FIXME_OBJECT (self, "FMO is not supported");
+    ret = FALSE;
+  } else if (gst_h264_parser_update_pps (priv->parser, &pps)
+      != GST_H264_PARSER_OK) {
+    GST_WARNING_OBJECT (self, "Failed to update PPS");
+    ret = FALSE;
+  }
+
   gst_h264_pps_clear (&pps);
 
-  return TRUE;
+  return ret;
 }
 
 static gboolean