summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-07-11 21:51:05 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-07-11 21:51:05 +0200
commit1b631078b1c249f9aea12e0be0d9b61b01b17cb0 (patch)
tree2176fec8dabcc522c736c963780f3833b32103d3
parenteddde1eec4e9038438532eb3a3f9bd0d3c1041c0 (diff)
videodecoder: Handle CAPS events immediately instead of delaying themdecodebin-setcaps
-rw-r--r--gst-libs/gst/video/gstvideodecoder.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
index 95577d1e2..dfff17ba9 100644
--- a/gst-libs/gst/video/gstvideodecoder.c
+++ b/gst-libs/gst/video/gstvideodecoder.c
@@ -337,7 +337,6 @@ struct _GstVideoDecoderPrivate
gboolean had_input_data;
gboolean needs_format;
- gboolean do_caps;
/* ... being tracked here;
* only available during parsing */
@@ -1053,8 +1052,10 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder,
}
case GST_EVENT_CAPS:
{
- ret = TRUE;
- decoder->priv->do_caps = TRUE;
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_video_decoder_setcaps (decoder, caps);
gst_event_unref (event);
event = NULL;
break;
@@ -2126,18 +2127,6 @@ gst_video_decoder_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
decoder = GST_VIDEO_DECODER (parent);
- if (G_UNLIKELY (decoder->priv->do_caps)) {
- GstCaps *caps = gst_pad_get_current_caps (decoder->sinkpad);
- if (caps) {
- if (!gst_video_decoder_setcaps (decoder, caps)) {
- gst_caps_unref (caps);
- goto not_negotiated;
- }
- gst_caps_unref (caps);
- }
- decoder->priv->do_caps = FALSE;
- }
-
if (G_UNLIKELY (!decoder->priv->input_state && decoder->priv->needs_format))
goto not_negotiated;