From 6c1b114eed9ec1bf3ffea9a63294e927e29cc2b8 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Fri, 2 Jan 2004 07:09:23 +0000 Subject: [PATCH] Convert elements to use gst_pad_use_explicit_caps() where appropriate. Original commit message from CVS: Convert elements to use gst_pad_use_explicit_caps() where appropriate. --- ChangeLog | 52 +++++++++++++++++++++++++++++++++++++ ext/esd/esdmon.c | 4 +-- ext/flac/gstflacdec.c | 3 ++- ext/gdk_pixbuf/gstgdkpixbuf.c | 3 ++- ext/jpeg/gstjpegdec.c | 12 ++++++--- ext/mikmod/gstmikmod.c | 3 ++- ext/speex/gstspeexdec.c | 3 ++- gst/auparse/gstauparse.c | 4 +-- gst/matroska/matroska-demux.c | 9 +++---- gst/qtdemux/qtdemux.c | 60 +++---------------------------------------- gst/wavparse/gstwavparse.c | 8 +++--- 11 files changed, 82 insertions(+), 79 deletions(-) diff --git a/ChangeLog b/ChangeLog index 156f7af..fa19572 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,55 @@ +2004-01-01 David Schleef + + Convert elements to use gst_pad_use_explicit_caps() where + appropriate: + * ext/a52dec/gsta52dec.c: (gst_a52dec_init), (gst_a52dec_reneg): + * ext/audiofile/gstafparse.c: (gst_afparse_init), + (gst_afparse_open_file): + * ext/audiofile/gstafsrc.c: (gst_afsrc_init), + (gst_afsrc_open_file): + * ext/esd/esdmon.c: (gst_esdmon_init), (gst_esdmon_get): + * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_init), + (gst_ffmpegdec_chain): + * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop): + * ext/flac/gstflacdec.c: (gst_flacdec_init), (gst_flacdec_write): + * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_init), + (gst_gdk_pixbuf_chain): + * ext/jpeg/gstjpegdec.c: (gst_jpegdec_init), (gst_jpegdec_link), + (gst_jpegdec_chain): + * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_chain): + * ext/mikmod/gstmikmod.c: (gst_mikmod_init), + (gst_mikmod_negotiate): + * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init), + (gst_mpeg2dec_negotiate_format): + * ext/mpeg2enc/gstmpeg2enc.cc: + * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push): + * ext/speex/gstspeexdec.c: (gst_speexdec_init), + (gst_speexdec_sinkconnect): + * ext/swfdec/gstswfdec.c: (gst_swfdec_loop), (gst_swfdec_init): + * ext/vorbis/vorbisfile.c: (gst_vorbisfile_init), + (gst_vorbisfile_new_link): + * gst/ac3parse/gstac3parse.c: (gst_ac3parse_init), + (gst_ac3parse_chain): + * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_audio_stream), + (gst_asf_demux_setup_pad): + * gst/auparse/gstauparse.c: (gst_auparse_init), + (gst_auparse_chain): + * gst/id3/gstid3types.c: (gst_id3types_loop): + * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream): + * gst/mpeg1videoparse/gstmp1videoparse.c: (gst_mp1videoparse_init), + (mp1videoparse_parse_seq): + * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_init), + (bpf_from_header): + * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead), + (gst_mpeg_demux_parse_pes), (gst_mpeg_demux_lpcm_set_caps): + * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init), + (gst_mpeg_parse_send_data): + * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header), + (gst_qtdemux_add_stream): + * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream): + * gst/wavparse/gstwavparse.c: (gst_wavparse_init), + (gst_wavparse_parse_fmt): + 2004-01-01 Ronald Bultje * configure.ac: diff --git a/ext/esd/esdmon.c b/ext/esd/esdmon.c index e2a91ed..394220e 100644 --- a/ext/esd/esdmon.c +++ b/ext/esd/esdmon.c @@ -200,6 +200,7 @@ gst_esdmon_init(GTypeInstance *instance, gpointer g_class) gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (esdmon), "src"), "src"); gst_pad_set_get_function(esdmon->srcpad, gst_esdmon_get); + gst_pad_use_explicit_caps (esdmon->srcpad); gst_element_add_pad(GST_ELEMENT(esdmon), esdmon->srcpad); esdmon->fd = -1; @@ -256,8 +257,7 @@ gst_esdmon_get (GstPad *pad) if (!GST_PAD_CAPS (pad)) { gint sign = (esdmon->depth == 8 ? FALSE : TRUE); /* set caps on src pad */ - /* FIXME: do this dynamically */ - if (gst_pad_try_set_caps (esdmon->srcpad, + if (gst_pad_set_explicit_caps (esdmon->srcpad, gst_caps_new_simple ("audio/x-raw-int", "endianness", G_TYPE_INT, G_BYTE_ORDER, "signed", G_TYPE_BOOLEAN, sign, diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index 62b39bb..5b893d6 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -190,6 +190,7 @@ gst_flacdec_init (FlacDec *flacdec) gst_pad_set_query_function (flacdec->srcpad, gst_flacdec_src_query); gst_pad_set_event_mask_function (flacdec->srcpad, gst_flacdec_get_src_event_masks); gst_pad_set_event_function (flacdec->srcpad, gst_flacdec_src_event); + gst_pad_use_explicit_caps (flacdec->srcpad); flacdec->decoder = FLAC__seekable_stream_decoder_new (); flacdec->total_samples = 0; @@ -473,7 +474,7 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder, } if (!GST_PAD_CAPS (flacdec->srcpad)) { - gst_pad_try_set_caps (flacdec->srcpad, + gst_pad_set_explicit_caps (flacdec->srcpad, gst_caps_new_simple ("audio/x-raw-int", "endianness", G_TYPE_INT, G_BYTE_ORDER, "signed", G_TYPE_BOOLEAN, TRUE, diff --git a/ext/gdk_pixbuf/gstgdkpixbuf.c b/ext/gdk_pixbuf/gstgdkpixbuf.c index 1034de6..f85a7bf 100644 --- a/ext/gdk_pixbuf/gstgdkpixbuf.c +++ b/ext/gdk_pixbuf/gstgdkpixbuf.c @@ -228,6 +228,7 @@ gst_gdk_pixbuf_init (GstGdkPixbuf *filter) gst_pad_set_getcaps_function (filter->sinkpad, gst_gdk_pixbuf_sink_getcaps); filter->srcpad = gst_pad_new_from_template ( gst_static_pad_template_get( &gst_gdk_pixbuf_src_template), "src"); + gst_pad_use_explicit_caps (filter->srcpad); gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad); gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad); @@ -278,7 +279,7 @@ gst_gdk_pixbuf_chain (GstPad *pad, GstData *_data) "height", G_TYPE_INT, filter->height, "framerate", G_TYPE_DOUBLE, 0., NULL); - gst_pad_try_set_caps(filter->srcpad, caps); + gst_pad_set_explicit_caps (filter->srcpad, caps); } outbuf = gst_buffer_new(); diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c index 9c9af75..1598f00 100644 --- a/ext/jpeg/gstjpegdec.c +++ b/ext/jpeg/gstjpegdec.c @@ -167,6 +167,7 @@ gst_jpegdec_init (GstJpegDec *jpegdec) gst_pad_set_chain_function(jpegdec->sinkpad,gst_jpegdec_chain); gst_pad_set_link_function(jpegdec->sinkpad, gst_jpegdec_link); jpegdec->srcpad = gst_pad_new_from_template (jpegdec_src_template, "src"); + gst_pad_use_explicit_caps (jpegdec->srcpad); gst_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->srcpad); /* initialize the jpegdec decoder state */ @@ -201,6 +202,7 @@ gst_jpegdec_link (GstPad *pad, const GstCaps *caps) { GstJpegDec *jpegdec = GST_JPEGDEC (gst_pad_get_parent (pad)); GstStructure *structure; + GstCaps *srccaps; structure = gst_caps_get_structure (caps, 0); @@ -208,14 +210,18 @@ gst_jpegdec_link (GstPad *pad, const GstCaps *caps) gst_structure_get_int (structure, "width", &jpegdec->width); gst_structure_get_int (structure, "height", &jpegdec->height); - caps = gst_caps_new_simple ("video/x-raw-yuv", + srccaps = gst_caps_new_simple ("video/x-raw-yuv", "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I','4','2','0'), "width", G_TYPE_INT, jpegdec->width, "height", G_TYPE_INT, jpegdec->height, "framerate", G_TYPE_DOUBLE, jpegdec->fps, NULL); - return gst_pad_try_set_caps (jpegdec->srcpad, caps); + /* at this point, we're pretty sure that this will be the output + * format, so we'll set it. */ + gst_pad_set_explicit_caps (jpegdec->srcpad, srccaps); + + return GST_PAD_LINK_OK; } /* shamelessly ripped from jpegutils.c in mjpegtools */ @@ -404,7 +410,7 @@ gst_jpegdec_chain (GstPad *pad, GstData *_data) jpegdec->line[2] = g_realloc(jpegdec->line[2], height*sizeof(char*)); jpegdec->height = height; - gst_pad_try_set_caps (jpegdec->srcpad, + gst_pad_set_explicit_caps (jpegdec->srcpad, gst_caps_new_simple ("video/x-raw-yuv", "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I','4','2','0'), "width", G_TYPE_INT, width, diff --git a/ext/mikmod/gstmikmod.c b/ext/mikmod/gstmikmod.c index d624f49..7720fbe 100644 --- a/ext/mikmod/gstmikmod.c +++ b/ext/mikmod/gstmikmod.c @@ -188,6 +188,7 @@ gst_mikmod_init (GstMikMod *filter) gst_static_pad_template_get (&mikmod_sink_factory),"sink"); filter->srcpad = gst_pad_new_from_template( gst_static_pad_template_get (&mikmod_src_factory),"src"); + gst_pad_use_explicit_caps (filter->srcpad); gst_element_add_pad(GST_ELEMENT(filter),filter->sinkpad); gst_element_add_pad(GST_ELEMENT(filter),filter->srcpad); @@ -226,7 +227,7 @@ gst_mikmod_negotiate (GstMikMod *mikmod) sign = FALSE; } - return gst_pad_try_set_caps (mikmod->srcpad, + return gst_pad_set_explicit_caps (mikmod->srcpad, gst_caps_new_simple ( "audio/x-raw-int", "endianness", G_TYPE_INT, G_BYTE_ORDER, "signed", G_TYPE_BOOLEAN, sign, diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c index 5e249a7..a5ab788 100644 --- a/ext/speex/gstspeexdec.c +++ b/ext/speex/gstspeexdec.c @@ -138,6 +138,7 @@ gst_speexdec_init (GstSpeexDec *speexdec) gst_pad_set_link_function (speexdec->sinkpad, gst_speexdec_sinkconnect); speexdec->srcpad = gst_pad_new_from_template (speexdec_src_template, "src"); + gst_pad_use_explicit_caps (speexdec->srcpad); gst_element_add_pad (GST_ELEMENT (speexdec), speexdec->srcpad); } @@ -154,7 +155,7 @@ gst_speexdec_sinkconnect (GstPad *pad, const GstCaps *caps) structure = gst_caps_get_structure (caps, 0); gst_structure_get_int (structure, "rate", &rate); - if (gst_pad_try_set_caps (speexdec->srcpad, + if (gst_pad_set_explicit_caps (speexdec->srcpad, gst_caps_new_simple ("audio/x-raw-int", "endianness", G_TYPE_INT, G_BYTE_ORDER, "signed", G_TYPE_BOOLEAN, TRUE, diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c index d4f5064..570a2b6 100644 --- a/gst/auparse/gstauparse.c +++ b/gst/auparse/gstauparse.c @@ -135,6 +135,7 @@ gst_auparse_init (GstAuParse *auparse) auparse->srcpad = gst_pad_new_from_template ( gst_static_pad_template_get (&gst_auparse_src_template), "src"); gst_element_add_pad (GST_ELEMENT (auparse), auparse->srcpad); + gst_pad_use_explicit_caps (auparse->srcpad); auparse->offset = 0; auparse->size = 0; @@ -251,9 +252,8 @@ gst_auparse_chain (GstPad *pad, GstData *_data) "signed", G_TYPE_BOOLEAN, sign, NULL); } - if (gst_pad_try_set_caps (auparse->srcpad, tempcaps) <= 0) { + if (!gst_pad_set_explicit_caps (auparse->srcpad, tempcaps)) { gst_buffer_unref (buf); - gst_element_error (GST_ELEMENT (auparse), "could not set audio caps"); return; } diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 0d222fe..d376445 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -868,12 +868,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux) /* the pad in here */ context->pad = gst_pad_new_from_template (templ, padname); - if (caps != NULL) { - if (gst_pad_try_set_caps (context->pad, caps) <= 0) { - GST_WARNING ("Failed to set caps on next element for %s", - padname); - } - } g_free (padname); /* set some functions */ @@ -887,9 +881,12 @@ gst_matroska_demux_add_stream (GstMatroskaDemux *demux) gst_matroska_demux_get_src_query_types); gst_pad_set_query_function (context->pad, gst_matroska_demux_handle_src_query); + gst_pad_use_explicit_caps (context->pad); gst_element_add_pad (GST_ELEMENT (demux), context->pad); + gst_pad_set_explicit_caps (context->pad, caps); + /* tadaah! */ return TRUE; } diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 659c968..4361dd2 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -504,7 +504,7 @@ static void gst_qtdemux_loop_header (GstElement *element) gst_caps_set_simple (stream->caps, "framerate", G_TYPE_DOUBLE, fps, NULL); stream->fps = fps; - gst_pad_try_set_caps(stream->pad, stream->caps); + gst_pad_set_explicit_caps(stream->pad, stream->caps); } } @@ -522,52 +522,6 @@ static void gst_qtdemux_loop_header (GstElement *element) } -static GstCaps *gst_qtdemux_src_getcaps(GstPad *pad) -{ - GstQTDemux *qtdemux; - QtDemuxStream *stream; - - GST_DEBUG ("gst_qtdemux_src_getcaps"); - - qtdemux = GST_QTDEMUX(gst_pad_get_parent(pad)); - - g_return_val_if_fail(GST_IS_QTDEMUX(qtdemux), NULL); - - stream = GST_PAD_ELEMENT_PRIVATE (pad); - return gst_caps_copy(stream->caps); -} - -#if 0 -/* This function doesn't do anything useful, but might be useful later */ -static GstPadLinkReturn -gst_qtdemux_src_link(GstPad *pad, GstCaps *caps) -{ - GstQTDemux *qtdemux; - QtDemuxStream *stream; - int i; - - GST_DEBUG ("gst_qtdemux_src_link"); - - qtdemux = GST_QTDEMUX(gst_pad_get_parent(pad)); - - GST_DEBUG ("looking for pad %p in qtdemux %p", pad, qtdemux); - g_return_val_if_fail(GST_IS_QTDEMUX(qtdemux), GST_PAD_LINK_REFUSED); - - GST_DEBUG ("n_streams is %d", qtdemux->n_streams); - for(i=0;in_streams;i++){ - stream = qtdemux->streams[i]; - GST_DEBUG ("pad[%d] is %p", i, stream->pad); - if(stream->pad == pad){ - return GST_PAD_LINK_OK; - } - } - - GST_DEBUG ("Couldn't find stream cooresponding to pad\n"); - - return GST_PAD_LINK_REFUSED; -} -#endif - void gst_qtdemux_add_stream(GstQTDemux *qtdemux, QtDemuxStream *stream) { if(stream->subtype == GST_MAKE_FOURCC('v','i','d','e')){ @@ -594,10 +548,7 @@ void gst_qtdemux_add_stream(GstQTDemux *qtdemux, QtDemuxStream *stream) qtdemux->n_audio_streams++; } - gst_pad_set_getcaps_function(stream->pad, gst_qtdemux_src_getcaps); -#ifdef unused - gst_pad_set_link_function(stream->pad, gst_qtdemux_src_link); -#endif + gst_pad_use_explicit_caps (stream->pad); GST_PAD_ELEMENT_PRIVATE(stream->pad) = stream; qtdemux->streams[qtdemux->n_streams] = stream; @@ -607,12 +558,7 @@ void gst_qtdemux_add_stream(GstQTDemux *qtdemux, QtDemuxStream *stream) GST_DEBUG ("adding pad %p to qtdemux %p", stream->pad, qtdemux); gst_element_add_pad(GST_ELEMENT (qtdemux), stream->pad); - /* Note: we need to have everything set up before calling try_set_caps */ - if(stream->caps){ - GST_DEBUG_CAPS ("setting caps",stream->caps); - - gst_pad_try_set_caps(stream->pad, stream->caps); - } + gst_pad_set_explicit_caps(stream->pad, stream->caps); } diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index e1b93a1..406c214 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -202,6 +202,7 @@ gst_wavparse_init (GstWavParse *wavparse) gst_pad_set_query_function (wavparse->srcpad, gst_wavparse_pad_query); gst_pad_set_event_function (wavparse->srcpad, gst_wavparse_srcpad_event); gst_pad_set_event_mask_function (wavparse->srcpad, gst_wavparse_get_event_masks); + gst_pad_use_explicit_caps (wavparse->srcpad); gst_element_set_loop_function (GST_ELEMENT (wavparse), gst_wavparse_loop); @@ -656,11 +657,8 @@ gst_wavparse_parse_fmt (GstWavParse *wavparse) return; } - if (gst_pad_try_set_caps (wavparse->srcpad, caps) <= 0) { - gst_element_error (GST_ELEMENT (wavparse), "Could not set caps"); - return; - } - + gst_pad_set_explicit_caps (wavparse->srcpad, caps); + GST_DEBUG ("frequency %d, channels %d", wavparse->rate, wavparse->channels); } -- 2.7.4