diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2002-01-13 22:27:25 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2002-01-13 22:27:25 +0000 |
commit | 97454065ce4921877100d0f829d4638438424dfe (patch) | |
tree | b7fba2905e195b55f136e65332777fb96fee3d65 /gst/avi | |
parent | 1ea946d2d26998d7056d233548d88b57322ffdcf (diff) |
Bring the plugins in sync with the new core capsnego system.
Original commit message from CVS:
Bring the plugins in sync with the new core capsnego system.
Added some features, enhancements...
Diffstat (limited to 'gst/avi')
-rw-r--r-- | gst/avi/audiocodecs.c | 22 | ||||
-rw-r--r-- | gst/avi/gstavidecoder.c | 4 | ||||
-rw-r--r-- | gst/avi/gstavidemux.c | 32 | ||||
-rw-r--r-- | gst/avi/gstavimux.c | 9 | ||||
-rw-r--r-- | gst/avi/gstavitypes.c | 15 |
5 files changed, 42 insertions, 40 deletions
diff --git a/gst/avi/audiocodecs.c b/gst/avi/audiocodecs.c index 9415055c..3414ab7f 100644 --- a/gst/avi/audiocodecs.c +++ b/gst/avi/audiocodecs.c @@ -50,19 +50,19 @@ GstPad *gst_avi_decoder_get_audio_srcpad(GstAviDecoder *avi_decoder, guint pad_n switch (strf->format) { case GST_RIFF_WAVE_FORMAT_PCM: newpad = gst_pad_new("audio_00", GST_PAD_SRC); - gst_pad_set_caps (newpad, gst_caps_new ( + gst_pad_try_set_caps (newpad, + GST_CAPS_NEW ( "avidecoder_caps", "audio/raw", - gst_props_new ( - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), - "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "signed", GST_PROPS_BOOLEAN (TRUE), - "width", GST_PROPS_INT ((gint)strf->size), - "depth", GST_PROPS_INT ((gint)strf->size), - "rate", GST_PROPS_INT ((gint)strf->rate), - "channels", GST_PROPS_INT ((gint)strf->channels), - NULL))); + "format", GST_PROPS_STRING ("int"), + "law", GST_PROPS_INT (0), + "endianness", GST_PROPS_INT (G_BYTE_ORDER), + "signed", GST_PROPS_BOOLEAN (TRUE), + "width", GST_PROPS_INT ((gint)strf->size), + "depth", GST_PROPS_INT ((gint)strf->size), + "rate", GST_PROPS_INT ((gint)strf->rate), + "channels", GST_PROPS_INT ((gint)strf->channels) + )); avi_decoder->audio_pad[pad_nr] = newpad; return newpad; diff --git a/gst/avi/gstavidecoder.c b/gst/avi/gstavidecoder.c index 85024139..b91473e6 100644 --- a/gst/avi/gstavidecoder.c +++ b/gst/avi/gstavidecoder.c @@ -245,10 +245,6 @@ gst_avi_decoder_new_pad (GstElement *element, GstPad *pad, GstAviDecoder *avi_de } if (!new_element && (media_type == AVI_TYPE_VIDEO)) { - gst_pad_disconnect (pad, gst_element_get_pad (type, "sink")); - - new_element = gst_elementfactory_make ("windec", "decoder"); - padname = "src"; } else if (!new_element && (media_type == AVI_TYPE_AUDIO)) { diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 6c5888ed..1be29e1b 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -300,10 +300,10 @@ gst_avi_demux_strf_vids (GstAviDemux *avi_demux) GST_PADTEMPLATE_GET (src_video_templ), g_strdup_printf ("video_%02d", avi_demux->num_video_pads)); - gst_pad_set_caps (srcpad, gst_caps_new ( + gst_pad_try_set_caps (srcpad, + GST_CAPS_NEW ( "avidec_video_src", "video/avi", - gst_props_new ( "format", GST_PROPS_STRING ("strf_vids"), "size", GST_PROPS_INT (GUINT32_FROM_LE (strf->size)), "width", GST_PROPS_INT (GUINT32_FROM_LE (strf->width)), @@ -315,8 +315,8 @@ gst_avi_demux_strf_vids (GstAviDemux *avi_demux) "xpels_meter", GST_PROPS_INT (GUINT32_FROM_LE (strf->xpels_meter)), "ypels_meter", GST_PROPS_INT (GUINT32_FROM_LE (strf->ypels_meter)), "num_colors", GST_PROPS_INT (GUINT32_FROM_LE (strf->num_colors)), - "imp_colors", GST_PROPS_INT (GUINT32_FROM_LE (strf->imp_colors)), - NULL))); + "imp_colors", GST_PROPS_INT (GUINT32_FROM_LE (strf->imp_colors)) + )); avi_demux->video_pad[avi_demux->num_video_pads++] = srcpad; gst_element_add_pad (GST_ELEMENT (avi_demux), srcpad); @@ -343,18 +343,18 @@ gst_avi_demux_strf_auds (GstAviDemux *avi_demux) GST_PADTEMPLATE_GET (src_audio_templ), g_strdup_printf ("audio_%02d", avi_demux->num_audio_pads)); - gst_pad_set_caps (srcpad, gst_caps_new ( + gst_pad_try_set_caps (srcpad, + GST_CAPS_NEW ( "avidec_audio_src", "video/avi", - gst_props_new ( "format", GST_PROPS_STRING ("strf_auds"), "fmt", GST_PROPS_INT (GUINT16_FROM_LE (strf->format)), "channels", GST_PROPS_INT (GUINT16_FROM_LE (strf->channels)), "rate", GST_PROPS_INT (GUINT32_FROM_LE (strf->rate)), "av_bps", GST_PROPS_INT (GUINT32_FROM_LE (strf->av_bps)), "blockalign", GST_PROPS_INT (GUINT16_FROM_LE (strf->blockalign)), - "size", GST_PROPS_INT (GUINT16_FROM_LE (strf->size)), - NULL))); + "size", GST_PROPS_INT (GUINT16_FROM_LE (strf->size)) + )); avi_demux->audio_pad[avi_demux->num_audio_pads++] = srcpad; gst_element_add_pad (GST_ELEMENT (avi_demux), srcpad); @@ -383,10 +383,10 @@ gst_avi_demux_strf_iavs (GstAviDemux *avi_demux) GST_PADTEMPLATE_GET (src_video_templ), g_strdup_printf ("video_%02d", avi_demux->num_video_pads)); - gst_pad_set_caps (srcpad, gst_caps_new ( + gst_pad_try_set_caps (srcpad, + GST_CAPS_NEW ( "avidec_iav_src", "video/avi", - gst_props_new ( "format", GST_PROPS_STRING ("strf_iavs"), "DVAAuxSrc", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVAAuxSrc)), "DVAAuxCtl", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVAAuxCtl)), @@ -395,8 +395,8 @@ gst_avi_demux_strf_iavs (GstAviDemux *avi_demux) "DVVAuxSrc", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVVAuxSrc)), "DVVAuxCtl", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVVAuxCtl)), "DVReserved1", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVReserved1)), - "DVReserved2", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVReserved2)), - NULL))); + "DVReserved2", GST_PROPS_INT (GUINT32_FROM_LE (strf->DVReserved2)) + )); avi_demux->video_pad[avi_demux->num_video_pads++] = srcpad; gst_element_add_pad (GST_ELEMENT (avi_demux), srcpad); @@ -460,14 +460,14 @@ gst_avidemux_forall_pads (GstAviDemux *avi_demux, GFunc func, gpointer user_data for(i=0; i<GST_AVI_DEMUX_MAX_AUDIO_PADS; i++) { pad = avi_demux->audio_pad[i]; - if (pad && GST_PAD_CONNECTED (pad)) { + if (pad && GST_PAD_IS_CONNECTED (pad)) { (*func) (pad, user_data); } } for(i=0; i<GST_AVI_DEMUX_MAX_VIDEO_PADS; i++) { pad = avi_demux->video_pad[i]; - if (pad && GST_PAD_CONNECTED (pad)) { + if (pad && GST_PAD_IS_CONNECTED (pad)) { (*func) (pad, user_data); } } @@ -595,7 +595,7 @@ gst_avidemux_process_chunk (GstAviDemux *avi_demux, guint64 filepos, GST_DEBUG (0,"gst_avi_demux_chain: tag found %08x size %08x\n", chunkid, *chunksize); - if (GST_PAD_CONNECTED (avi_demux->video_pad[0])) { + if (GST_PAD_IS_CONNECTED (avi_demux->video_pad[0])) { GstBuffer *buf; if (*chunksize) { @@ -626,7 +626,7 @@ gst_avidemux_process_chunk (GstAviDemux *avi_demux, guint64 filepos, GST_DEBUG (0,"gst_avi_demux_chain: tag found %08x size %08x\n", chunkid, *chunksize); - if (GST_PAD_CONNECTED (avi_demux->audio_pad[0])) { + if (GST_PAD_IS_CONNECTED (avi_demux->audio_pad[0])) { GstBuffer *buf; if (*chunksize) { diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c index c7e81019..540e2a7b 100644 --- a/gst/avi/gstavimux.c +++ b/gst/avi/gstavimux.c @@ -152,8 +152,8 @@ gst_avimux_init (GstAviMux *avimux) avimux->aviheader = g_malloc0 (sizeof (gst_riff_avih)); } -static void -gst_avimux_newcaps (GstPad *pad, GstCaps *caps) +static GstPadConnectReturn +gst_avimux_sinkconnect (GstPad *pad, GstCaps *caps) { GstAviMux *avimux; const gchar* format = gst_caps_get_string (caps, "format"); @@ -161,7 +161,7 @@ gst_avimux_newcaps (GstPad *pad, GstCaps *caps) avimux = GST_AVIMUX (gst_pad_get_parent (pad)); - GST_DEBUG (0, "avimux: newcaps triggered on %s (%d), %s\n", gst_pad_get_name (pad), + GST_DEBUG (0, "avimux: sinkconnect triggered on %s (%d), %s\n", gst_pad_get_name (pad), padnum, format); if (!strncmp (format, "strf_vids", 9)) { @@ -184,6 +184,7 @@ gst_avimux_newcaps (GstPad *pad, GstCaps *caps) else if (!strncmp (format, "strf_auds", 9)) { } + return GST_PAD_CONNECT_OK; } static GstPad* @@ -228,7 +229,7 @@ gst_avimux_request_new_pad (GstElement *element, } gst_pad_set_chain_function (newpad, gst_avimux_chain); - gst_pad_set_newcaps_function (newpad, gst_avimux_newcaps); + gst_pad_set_connect_function (newpad, gst_avimux_sinkconnect); gst_element_add_pad (element, newpad); return newpad; diff --git a/gst/avi/gstavitypes.c b/gst/avi/gstavitypes.c index b43f2a0c..e0862130 100644 --- a/gst/avi/gstavitypes.c +++ b/gst/avi/gstavitypes.c @@ -170,8 +170,8 @@ gst_avi_types_class_init (GstAviTypesClass *klass) gobject_class->get_property = gst_avi_types_get_property; } -static void -gst_avi_types_newcaps (GstPad *pad, GstCaps *caps) +static GstPadConnectReturn +gst_avi_types_sinkconnect (GstPad *pad, GstCaps *caps) { GstAviTypes *avi_types; const gchar *format; @@ -196,6 +196,9 @@ gst_avi_types_newcaps (GstPad *pad, GstCaps *caps) "format", GST_PROPS_STRING ("NTSC"), NULL)); default: + /* else we simply don't convert, and hope there is a native decoder + * available */ + newcaps = caps; break; } } @@ -243,9 +246,11 @@ gst_avi_types_newcaps (GstPad *pad, GstCaps *caps) } if (newcaps) { - gst_pad_set_caps (avi_types->srcpad, newcaps); + gst_pad_try_set_caps (avi_types->srcpad, newcaps); avi_types->type_found = TRUE; + return GST_PAD_CONNECT_OK; } + return GST_PAD_CONNECT_REFUSED; } static void @@ -254,7 +259,7 @@ gst_avi_types_init (GstAviTypes *avi_types) avi_types->sinkpad = gst_pad_new_from_template ( GST_PADTEMPLATE_GET (sink_templ), "sink"); gst_element_add_pad (GST_ELEMENT (avi_types), avi_types->sinkpad); - gst_pad_set_newcaps_function (avi_types->sinkpad, gst_avi_types_newcaps); + gst_pad_set_connect_function (avi_types->sinkpad, gst_avi_types_sinkconnect); gst_pad_set_chain_function (avi_types->sinkpad, gst_avi_types_chain); avi_types->srcpad = gst_pad_new_from_template ( @@ -271,7 +276,7 @@ gst_avi_types_chain (GstPad *pad, GstBuffer *buffer) avi_types = GST_AVI_TYPES (gst_pad_get_parent (pad)); - if (GST_PAD_CONNECTED (avi_types->srcpad)) + if (GST_PAD_IS_CONNECTED (avi_types->srcpad)) gst_pad_push (avi_types->srcpad, buffer); else gst_buffer_unref (buffer); |