summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst')
-rw-r--r--gst/avi/gstavidemux.c13
-rw-r--r--gst/avi/gstavidemux.h1
2 files changed, 12 insertions, 2 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 04c5c8c9..2f4aebf7 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -497,6 +497,14 @@ gst_avi_demux_handle_src_query (GstPad *pad,
return res;
}
+static GstCaps *
+gst_avi_demux_src_getcaps (GstPad *pad)
+{
+ avi_stream_context *stream = gst_pad_get_element_private (pad);
+
+ return gst_caps_copy (stream->caps);
+}
+
static gint32
gst_avi_demux_sync_streams (GstAviDemux *avi,
guint64 time)
@@ -884,8 +892,6 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
/* set proper settings and add it */
pad = gst_pad_new_from_template (templ, padname);
g_free (padname);
- if (caps != NULL)
- gst_pad_try_set_caps (pad, caps);
gst_pad_set_formats_function (pad, gst_avi_demux_get_src_formats);
gst_pad_set_event_mask_function (pad, gst_avi_demux_get_event_mask);
@@ -893,8 +899,10 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
gst_pad_set_query_type_function (pad, gst_avi_demux_get_src_query_types);
gst_pad_set_query_function (pad, gst_avi_demux_handle_src_query);
gst_pad_set_convert_function (pad, gst_avi_demux_src_convert);
+ gst_pad_set_getcaps_function (pad, gst_avi_demux_src_getcaps);
stream = &avi->stream[avi->num_streams];
+ stream->caps = caps ? caps : gst_caps_new_empty ();
stream->pad = pad;
stream->strh = strh;
stream->num = avi->num_streams;
@@ -908,6 +916,7 @@ gst_avi_demux_add_stream (GstAviDemux *avi)
gst_pad_set_element_private (pad, stream);
avi->num_streams++;
+ /* auto-negotiates */
gst_element_add_pad (GST_ELEMENT (avi), pad);
return TRUE;
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index 15eec1f3..d94433ae 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -61,6 +61,7 @@ typedef struct {
/* pad, strh */
GstPad *pad;
+ GstCaps *caps;
gst_riff_strh *strh;
/* current position (byte, frame, time) */