mpegvideoparse: don't announce incomplete source caps
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Wed, 1 May 2013 16:36:47 +0000 (17:36 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Wed, 1 May 2013 16:42:11 +0000 (17:42 +0100)
Don't send any source caps yet if we're still in
drop-buffers-until-we-get-a-sequence-header mode.

Fixes transmuxing of many MPEG-TS/PS streams into
formats which require things like width, height or
codec_data on the input caps.

Also fixes issues when using playbin with decoder
sinks that want width/height etc.

https://bugzilla.gnome.org/show_bug.cgi?id=695879

gst/videoparsers/gstmpegvideoparse.c

index 19c1221..375c4cf 100644 (file)
@@ -826,8 +826,6 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
   GstMpegvParse *mpvparse = GST_MPEGVIDEO_PARSE (parse);
   GstBuffer *buffer = frame->buffer;
 
-  gst_mpegv_parse_update_src_caps (mpvparse);
-
   if (G_UNLIKELY (mpvparse->pichdr.pic_type == GST_MPEG_VIDEO_PICTURE_TYPE_I))
     GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
   else
@@ -854,8 +852,10 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
   if (G_UNLIKELY (mpvparse->drop && !mpvparse->config)) {
     GST_DEBUG_OBJECT (mpvparse, "dropping frame as no config yet");
     return GST_BASE_PARSE_FLOW_DROPPED;
-  } else
-    return GST_FLOW_OK;
+  }
+
+  gst_mpegv_parse_update_src_caps (mpvparse);
+  return GST_FLOW_OK;
 }
 
 static GstFlowReturn