From: David S. <dsc...@us...> - 2003-12-09 09:28:23
|
CVS Root: /cvsroot/gstreamer Module: gst-plugins Changes by: dschleef Date: Tue Dec 09 2003 01:28:21 PST Branch: CAPS Log message: Convert to new caps Modified files: gst/matroska : matroska-demux.c gst/median : gstmedian.c gst/mixmatrix : mixmatrix.c gst/modplug : gstmodplug.cc gstmodplug.h gst/monoscope : gstmonoscope.c gst/mpeg1sys : gstmpeg1systemencode.c gst/mpeg1videoparse: gstmp1videoparse.c gst/mpegaudio : gstmpegaudio.c gst/mpegaudioparse: gstmpegaudioparse.c gst/mpegstream : gstmpegdemux.c gstmpegparse.c gstmpegparse.h gstrfc2250enc.c gst/oneton : gstoneton.c gst/overlay : gstoverlay.c gstoverlay.h gst/passthrough : gstpassthrough.c gst/playondemand: gstplayondemand.c gst/videotestsrc: gstvideotestsrc.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/matroska/matroska-demux.c.diff?r1=1.1.4.1&r2=1.1.4.2 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/median/gstmedian.c.diff?r1=1.17&r2=1.17.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mixmatrix/mixmatrix.c.diff?r1=1.20&r2=1.20.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/modplug/gstmodplug.cc.diff?r1=1.37&r2=1.37.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/modplug/gstmodplug.h.diff?r1=1.14&r2=1.14.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/monoscope/gstmonoscope.c.diff?r1=1.20&r2=1.20.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpeg1sys/gstmpeg1systemencode.c.diff?r1=1.15&r2=1.15.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpeg1videoparse/gstmp1videoparse.c.diff?r1=1.24&r2=1.24.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpegaudio/gstmpegaudio.c.diff?r1=1.19&r2=1.19.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpegaudioparse/gstmpegaudioparse.c.diff?r1=1.28&r2=1.28.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpegstream/gstmpegdemux.c.diff?r1=1.42&r2=1.42.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpegstream/gstmpegparse.c.diff?r1=1.45&r2=1.45.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpegstream/gstmpegparse.h.diff?r1=1.18&r2=1.18.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/mpegstream/gstrfc2250enc.c.diff?r1=1.14&r2=1.14.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/oneton/gstoneton.c.diff?r1=1.12&r2=1.12.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/overlay/gstoverlay.c.diff?r1=1.6&r2=1.6.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/overlay/gstoverlay.h.diff?r1=1.1&r2=1.1.8.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/passthrough/gstpassthrough.c.diff?r1=1.19&r2=1.19.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/playondemand/gstplayondemand.c.diff?r1=1.22&r2=1.22.4.1 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/videotestsrc/gstvideotestsrc.c.diff?r1=1.39.4.1&r2=1.39.4.2 ====Begin Diffs==== Index: matroska-demux.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/matroska/matroska-demux.c,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- matroska-demux.c 8 Dec 2003 10:08:15 -0000 1.1.4.1 +++ matroska-demux.c 9 Dec 2003 09:27:38 -0000 1.1.4.2 @@ -2140,74 +2140,50 @@ } if (caps != NULL) { - GstCaps2 *one; - GstPropsEntry *fps = NULL; - GstPropsEntry *width = NULL, *height = NULL; - GstPropsEntry *pixel_width = NULL, *pixel_height = NULL; + int i; + GstStructure *structure; - for (one = caps; one != NULL; one = one->next) { + for (i=0;i<gst_caps2_get_n_structures(caps);i++){ + structure = gst_caps2_get_nth_cap (caps, i); if (videocontext != NULL) { if (videocontext->pixel_width > 0 && videocontext->pixel_height > 0) { gint w = videocontext->pixel_width; gint h = videocontext->pixel_height; - width = gst_props_entry_new ("width", - G_TYPE_INT (w)); - height = gst_props_entry_new ("height", - G_TYPE_INT (h)); + gst_structure_set (structure, + "width", G_TYPE_INT, w, + "height", G_TYPE_INT, h, NULL); } if (videocontext->display_width > 0 && videocontext->display_height > 0) { gint w = 100 * videocontext->display_width / videocontext->pixel_width; gint h = 100 * videocontext->display_height / videocontext->pixel_height; - pixel_width = gst_props_entry_new ("pixel_width", - G_TYPE_INT (w)); - pixel_height = gst_props_entry_new ("pixel_height", - G_TYPE_INT (h)); + gst_structure_set (structure, + "pixel_width", G_TYPE_INT, w, + "pixel_height", G_TYPE_INT, h, + NULL); } if (context->default_duration > 0) { gfloat framerate = 1. * GST_SECOND / context->default_duration; - fps = gst_props_entry_new ("framerate", - G_TYPE_DOUBLE (framerate)); + gst_structure_set (structure, + "framerate", G_TYPE_DOUBLE, framerate, NULL); } else { /* sort of a hack to get most codecs to support, * even if the default_duration is missing */ - fps = gst_props_entry_new ("framerate", G_TYPE_DOUBLE (25.)); + gst_structure_set (structure, + "framerate", G_TYPE_DOUBLE, 25.0, NULL); } } else { - width = gst_props_entry_new ("width", - G_TYPE_INT_RANGE (16, 4096)); - height = gst_props_entry_new ("height", - G_TYPE_INT_RANGE (16, 4096)); - - pixel_width = gst_props_entry_new ("pixel_width", - G_TYPE_INT_RANGE (0, 255)); - pixel_height = gst_props_entry_new ("pixel_height", - G_TYPE_INT_RANGE (0, 255)); - - fps = gst_props_entry_new ("framerate", - G_TYPE_DOUBLE_RANGE (0, G_MAXFLOAT)); - } - - if (one->properties == NULL) { - one->properties = gst_props_empty_new (); - } - - if (width != NULL && height != NULL) { - gst_props_add_entry (one->properties, width); - gst_props_add_entry (one->properties, height); - } - - if (pixel_width != NULL && pixel_height != NULL) { - gst_props_add_entry (one->properties, pixel_width); - gst_props_add_entry (one->properties, pixel_height); - } - - if (fps != NULL) { - gst_props_add_entry (one->properties, fps); + gst_structure_set (structure, + "width", GST_TYPE_INT_RANGE, 16, 4096, + "height", GST_TYPE_INT_RANGE, 16, 4096, + "pixel_width", GST_TYPE_INT_RANGE, 0, 255, + "pixel_height", GST_TYPE_INT_RANGE, 0, 255, + "framerate", GST_TYPE_DOUBLE_RANGE, 0, G_MAXDOUBLE, + NULL); } } } @@ -2223,53 +2199,34 @@ switch (codec_id) { case GST_RIFF_WAVE_FORMAT_MPEGL3: /* mp3 */ - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src_mp3", - "audio/mpeg", - "layer", G_TYPE_INT (3)); + caps = gst_caps2_new_simple ("audio/mpeg", + "layer", G_TYPE_INT, 3, NULL); break; case GST_RIFF_WAVE_FORMAT_MPEGL12: /* mp1 or mp2 */ - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src_mp12", - "audio/mpeg", - "layer", G_TYPE_INT (2)); + caps = gst_caps2_new_simple ("audio/mpeg", + "layer", G_TYPE_INT, 2, NULL); break; case GST_RIFF_WAVE_FORMAT_PCM: /* PCM/wav */ { - GstPropsEntry *width = NULL, *depth = NULL, *signedness = NULL; - if (auds != NULL) { gint ba = GUINT16_FROM_LE (auds->blockalign); gint ch = GUINT16_FROM_LE (auds->channels); gint ws = GUINT16_FROM_LE (auds->size); - width = gst_props_entry_new ("width", - G_TYPE_INT (ba * 8 / ch)); - depth = gst_props_entry_new ("depth", - G_TYPE_INT (ws)); - signedness = gst_props_entry_new ("signed", - G_TYPE_BOOLEAN (ws != 8)); + caps = gst_caps2_new_simple ("audio/x-raw-int", + "endianness", G_TYPE_INT, G_LITTLE_ENDIAN, + "width", G_TYPE_INT, ba * 8 / ch, + "depth", G_TYPE_INT, ws, + "signed", G_TYPE_BOOLEAN, ws != 8, NULL); } else { - signedness = gst_props_entry_new ("signed", - GST_PROPS_LIST ( - G_TYPE_BOOLEAN (TRUE), - G_TYPE_BOOLEAN (FALSE))); - width = gst_props_entry_new ("width", - GST_PROPS_LIST ( - G_TYPE_INT (8), - G_TYPE_INT (16))); - depth = gst_props_entry_new ("depth", - GST_PROPS_LIST ( - G_TYPE_INT (8), - G_TYPE_INT (16))); + caps = gst_caps2_from_string ("audio/x-raw-int, " + "endianness = (int) LITTLE_ENDIAN, " + "signed = (int) { TRUE, FALSE }, " + "depth = (int) { 8, 16 }, " + "width = (int) { 8, 16 }"); } - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src_pcm", - "audio/x-raw-int", - "endianness", - G_TYPE_INT (G_LITTLE_ENDIAN)); - gst_props_add_entry (caps->properties, width); - gst_props_add_entry (caps->properties, depth); - gst_props_add_entry (caps->properties, signedness); } break; @@ -2278,9 +2235,7 @@ g_warning ("invalid depth (%d) of mulaw audio, overwriting.", auds->size); } - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src", - "audio/x-mulaw", - NULL); + caps = gst_caps2_new_simple ("audio/x-mulaw", NULL); break; case GST_RIFF_WAVE_FORMAT_ALAW: @@ -2288,9 +2243,7 @@ g_warning ("invalid depth (%d) of alaw audio, overwriting.", auds->size); } - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src", - "audio/x-alaw", - NULL); + caps = gst_caps2_new_simple ("audio/x-alaw", NULL); break; case GST_RIFF_WAVE_FORMAT_VORBIS1: /* ogg/vorbis mode 1 */ @@ -2299,20 +2252,17 @@ case GST_RIFF_WAVE_FORMAT_VORBIS1PLUS: /* ogg/vorbis mode 1+ */ case GST_RIFF_WAVE_FORMAT_VORBIS2PLUS: /* ogg/vorbis mode 2+ */ case GST_RIFF_WAVE_FORMAT_VORBIS3PLUS: /* ogg/vorbis mode 3+ */ - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src_vorbis", - "audio/x-vorbis", - NULL); + caps = gst_caps2_new_simple ("audio/x-vorbis", NULL); break; case GST_RIFF_WAVE_FORMAT_A52: - caps = gst_caps2_new_simple ("matroskademux_acm_audio_src_ac3", - "audio/x-ac3", - NULL); + caps = gst_caps2_new_simple ("audio/x-ac3", NULL); break; default: GST_WARNING ("matroskademux: unkown ACM audio format 0x%04x", codec_id); + return NULL; break; } @@ -2343,15 +2293,13 @@ else g_assert (0); - caps = gst_caps2_new_simple ("matroskademux_mpeg1-l1", - "audio/mpeg", - "mpegversion", G_TYPE_INT (1), - "systemstream", G_TYPE_BOOLEAN (FALSE), - "layer", G_TYPE_INT (layer)); + caps = gst_caps2_new_simple ("audio/mpeg", + "mpegversion", G_TYPE_INT, 1, + "systemstream", G_TYPE_BOOLEAN, FALSE, + "layer", G_TYPE_INT, layer, NULL); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE) || !strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_LE)) { gint endianness = -1; - GstPropsEntry *depth, *width, *sign; if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE)) endianness = G_BIG_ENDIAN; @@ -2361,57 +2309,33 @@ g_assert (0); if (context != NULL) { - width = gst_props_entry_new ("width", - G_TYPE_INT (audiocontext->bitdepth)); - depth = gst_props_entry_new ("depth", - G_TYPE_INT (audiocontext->bitdepth)); - sign = gst_props_entry_new ("signed", - G_TYPE_BOOLEAN (audiocontext->bitdepth == 8)); + caps = gst_caps2_new_simple ("audio/x-raw-int", + "width", G_TYPE_INT, audiocontext->bitdepth, + "depth", G_TYPE_INT, audiocontext->bitdepth, + "signed", G_TYPE_BOOLEAN, audiocontext->bitdepth == 8, NULL); } else { - width = gst_props_entry_new ("width", GST_PROPS_LIST ( - G_TYPE_INT (8), - G_TYPE_INT (16))); - depth = gst_props_entry_new ("depth", GST_PROPS_LIST ( - G_TYPE_INT (8), - G_TYPE_INT (16))); - sign = gst_props_entry_new ("signed", GST_PROPS_LIST ( - G_TYPE_BOOLEAN (TRUE), - G_TYPE_BOOLEAN (FALSE))); + caps = gst_caps2_from_string ("audio/x-raw-int, " + "signed = (int) { TRUE, FALSE }, " + "depth = (int) { 8, 16 }, " + "width = (int) { 8, 16 }"); } - - caps = gst_caps2_new_simple ("matroskademux_audio_raw", - "audio/x-raw-int", - "endianness", G_TYPE_INT (endianness)); - gst_props_add_entry (caps->properties, width); - gst_props_add_entry (caps->properties, depth); - gst_props_add_entry (caps->properties, sign); + gst_caps2_set_simple (caps, "endianness", G_TYPE_INT, endianness, NULL); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_PCM_FLOAT)) { - GstPropsEntry *width; - + caps = gst_caps2_new_simple ("audio/x-raw-float", + "endianness", G_TYPE_INT, G_BYTE_ORDER, + "buffer-frames", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL); if (audiocontext != NULL) { - width = gst_props_entry_new ("width", - G_TYPE_INT (audiocontext->bitdepth)); + gst_caps2_set_simple (caps, + "width", G_TYPE_INT, audiocontext->bitdepth, NULL); } else { - width = gst_props_entry_new ("width", GST_PROPS_LIST ( - G_TYPE_INT (32), - G_TYPE_INT (64))); + gst_caps2_set_simple (caps, + "width", GST_TYPE_INT_RANGE, 32, 64, NULL); } - - caps = gst_caps2_new_simple ("matroskademux_audio_float", - "audio/x-raw-float", - "endianness", G_TYPE_INT (G_BYTE_ORDER), - "buffer-frames", G_TYPE_INT_RANGE (1, G_MAXINT)); - - gst_props_add_entry (caps->properties, width); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_AC3) || !strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_DTS)) { - caps = gst_caps2_new_simple ("matroskademux_audio_ac3/dts", - "audio/x-ac3", - NULL); + caps = gst_caps2_new_simple ("audio/x-ac3", NULL); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_VORBIS)) { - caps = gst_caps2_new_simple ("matroskademux_audio_vorbis", - "audio/x-vorbis", - NULL); + caps = gst_caps2_new_simple ("audio/x-vorbis", NULL); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_ACM)) { gst_riff_strf_auds *auds = NULL; @@ -2443,42 +2367,34 @@ else g_assert (0); - caps = gst_caps2_new_simple ("matroska_demux_aac_mpeg2", - "audio/mpeg", - "mpegversion", G_TYPE_INT (mpegversion), - "systemstream", G_TYPE_BOOLEAN (FALSE)); + caps = gst_caps2_new_simple ("audio/mpeg", + "mpegversion", G_TYPE_INT, mpegversion, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); } else { GST_WARNING ("Unknown codec '%s', cannot build Caps", codec_id); + return NULL; } if (caps != NULL) { - GstCaps2 *one; - GstPropsEntry *chans = NULL, *rate = NULL; + GstStructure *structure; + int i; - for (one = caps; one != NULL; one = one->next) { + for (i=0; i<gst_caps2_get_n_structures(caps); i++){ + structure = gst_caps2_get_nth_cap (caps, i); if (audiocontext != NULL) { if (audiocontext->samplerate > 0 && audiocontext->channels > 0) { - chans = gst_props_entry_new ("channels", - G_TYPE_INT (audiocontext->channels)); - rate = gst_props_entry_new ("rate", - G_TYPE_INT (audiocontext->samplerate)); + gst_structure_set (structure, + "channels", G_TYPE_INT, audiocontext->channels, + "rate", G_TYPE_INT, audiocontext->samplerate, + NULL); } } else { - chans = gst_props_entry_new ("channels", - G_TYPE_INT_RANGE (1, 6)); - rate = gst_props_entry_new ("rate", - G_TYPE_INT_RANGE (4000, 96000)); - } - - if (caps->properties == NULL) { - caps->properties = gst_props_empty_new (); - } - - if (chans != NULL && rate != NULL) { - gst_props_add_entry (caps->properties, chans); - gst_props_add_entry (caps->properties, rate); + gst_structure_set (structure, + "channels", GST_TYPE_INT_RANGE, 1, 6, + "rate", GST_TYPE_INT_RANGE, 4000, 96000, + NULL); } } } @@ -2630,17 +2546,18 @@ return FALSE; /* video src template */ + videosrccaps = gst_caps2_new_empty (); for (i = 0; video_id[i] != NULL; i++) { temp = gst_matroska_demux_video_caps (NULL, video_id[i], NULL, 0); - videosrccaps = gst_caps_append (videosrccaps, temp); + gst_caps2_append (videosrccaps, temp); } for (i = 0; video_fourcc[i] != 0; i++) { temp = gst_matroska_demux_vfw_caps (video_fourcc[i], NULL); - videosrccaps = gst_caps_append (videosrccaps, temp); + gst_caps2_append (videosrccaps, temp); } for (i = 0; complex_id[i] != NULL; i++) { temp = gst_matroska_demux_complex_caps (NULL, video_id[i], NULL, 0); - videosrccaps = gst_caps_append (videosrccaps, temp); + gst_caps2_append (videosrccaps, temp); } videosrctempl = gst_pad_template_new ("video_%02d", GST_PAD_SRC, @@ -2650,11 +2567,11 @@ /* audio src template */ for (i = 0; audio_id[i] != NULL; i++) { temp = gst_matroska_demux_audio_caps (NULL, audio_id[i], NULL, 0); - audiosrccaps = gst_caps_append (audiosrccaps, temp); + gst_caps2_append (audiosrccaps, temp); } for (i = 0; audio_tag[i] != 0; i++) { temp = gst_matroskademux_acm_caps (audio_tag[i], NULL); - audiosrccaps = gst_caps_append (audiosrccaps, temp); + gst_caps2_append (audiosrccaps, temp); } audiosrctempl = gst_pad_template_new ("audio_%02d", GST_PAD_SRC, @@ -2664,7 +2581,7 @@ /* subtitle src template */ for (i = 0; subtitle_id[i] != NULL; i++) { temp = gst_matroska_demux_subtitle_caps (NULL, subtitle_id[i], NULL, 0); - subtitlesrccaps = gst_caps_append (subtitlesrccaps, temp); + gst_caps2_append (subtitlesrccaps, temp); } subtitlesrctempl = gst_pad_template_new ("subtitle_%02d", GST_PAD_SRC, Index: gstmedian.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/median/gstmedian.c,v retrieving revision 1.17 retrieving revision 1.17.4.1 diff -u -d -r1.17 -r1.17.4.1 --- gstmedian.c 16 Nov 2003 22:02:00 -0000 1.17 +++ gstmedian.c 9 Dec 2003 09:27:39 -0000 1.17.4.1 @@ -32,31 +32,21 @@ "Wim Taymans <wim...@ch...>" }; -GST_PAD_TEMPLATE_FACTORY (median_src_factory, +static GstStaticPadTemplate median_src_factory = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - gst_caps_new ( - "median_src", - "video/x-raw-yuv", - GST_VIDEO_YUV_PAD_TEMPLATE_PROPS ( - GST_PROPS_FOURCC (GST_STR_FOURCC ("I420")) - ) - ) -) + GST_STATIC_CAPS (GST_VIDEO_YUV_PAD_TEMPLATE_CAPS ("I420")) +); -GST_PAD_TEMPLATE_FACTORY (median_sink_factory, +static GstStaticPadTemplate median_sink_factory = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - gst_caps_new ( - "median_src", - "video/x-raw-yuv", - GST_VIDEO_YUV_PAD_TEMPLATE_PROPS ( - GST_PROPS_FOURCC (GST_STR_FOURCC ("I420")) - ) - ) -) + GST_STATIC_CAPS (GST_VIDEO_YUV_PAD_TEMPLATE_CAPS ("I420")) +); /* Median signals and args */ @@ -115,9 +105,9 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (median_sink_factory)); + gst_static_pad_template_get (&median_sink_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (median_src_factory)); + gst_static_pad_template_get (&median_src_factory)); gst_element_class_set_details (element_class, &median_details); } @@ -147,32 +137,32 @@ } static gboolean -gst_median_sinkconnect (GstPad *pad, GstCaps *caps) +gst_median_sinkconnect (GstPad *pad, const GstCaps2 *caps) { GstMedian *filter; + GstStructure *structure; filter = GST_MEDIAN (gst_pad_get_parent (pad)); - if (!GST_CAPS_IS_FIXED (caps)) - return GST_PAD_LINK_DELAYED; + structure = gst_caps2_get_nth_cap (caps, 0); - gst_caps_get_int (caps, "width", &filter->width); - gst_caps_get_int (caps, "height", &filter->height); + gst_structure_get_int (structure, "width", &filter->width); + gst_structure_get_int (structure, "height", &filter->height); /* forward to the next plugin */ - return gst_pad_try_set_caps(filter->srcpad, gst_caps_copy_1(caps)); + return gst_pad_try_set_caps(filter->srcpad, caps); } void gst_median_init (GstMedian *median) { median->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (median_sink_factory), "sink"); + gst_static_pad_template_get (&median_sink_factory), "sink"); gst_pad_set_link_function (median->sinkpad, gst_median_sinkconnect); gst_pad_set_chain_function (median->sinkpad, gst_median_chain); gst_element_add_pad (GST_ELEMENT (median), median->sinkpad); median->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (median_src_factory), "src"); + gst_static_pad_template_get (&median_src_factory), "src"); gst_element_add_pad (GST_ELEMENT (median), median->srcpad); median->filtersize = 5; Index: mixmatrix.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/mixmatrix/mixmatrix.c,v retrieving revision 1.20 retrieving revision 1.20.4.1 diff -u -d -r1.20 -r1.20.4.1 --- mixmatrix.c 16 Nov 2003 22:02:01 -0000 1.20 +++ mixmatrix.c 9 Dec 2003 09:27:39 -0000 1.20.4.1 @@ -43,7 +43,7 @@ struct _GstMixMatrix { GstElement element; - GstCaps *caps; + GstCaps2 *caps; gint samplerate; gint grpsize; @@ -88,27 +88,23 @@ ARG_MATRIXPTR, }; -GST_PAD_TEMPLATE_FACTORY (mixmatrix_sink_factory, +#if 0 +static GstStaticPadTemplate mixmatrix_sink_factory = +GST_STATIC_PAD_TEMPLATE ( "sink%d", GST_PAD_SINK, GST_PAD_REQUEST, - gst_caps_new ( - "float_src", - "audio/x-raw-float", - GST_AUDIO_FLOAT_STANDARD_PAD_TEMPLATE_PROPS - ) + GST_STATIC_CAPS ( GST_AUDIO_FLOAT_STANDARD_PAD_TEMPLATE_CAPS ) ); -GST_PAD_TEMPLATE_FACTORY (mixmatrix_src_factory, +static GstStaticPadTemplate mixmatrix_src_factory = +GST_STATIC_PAD_TEMPLATE ( "src%d", GST_PAD_SRC, GST_PAD_REQUEST, - gst_caps_new ( - "float_sink", - "audio/x-raw-float", - GST_AUDIO_FLOAT_STANDARD_PAD_TEMPLATE_PROPS - ) + GST_STATIC_CAPS ( GST_AUDIO_FLOAT_STANDARD_PAD_TEMPLATE_CAPS ) ); +#endif static void gst_mixmatrix_class_init (GstMixMatrixClass *klass); static void gst_mixmatrix_base_init (GstMixMatrixClass *klass); @@ -118,7 +114,7 @@ static void gst_mixmatrix_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static GstPad * gst_mixmatrix_request_new_pad (GstElement *element, GstPadTemplate *temp, const gchar *name); -static GstPadLinkReturn gst_mixmatrix_connect (GstPad *pad, GstCaps *caps); +static GstPadLinkReturn gst_mixmatrix_connect (GstPad *pad, const GstCaps2 *caps); static void gst_mixmatrix_loop (GstElement *element); @@ -324,24 +320,22 @@ */ static GstPadLinkReturn -gst_mixmatrix_connect (GstPad *pad, GstCaps *caps) +gst_mixmatrix_connect (GstPad *pad, const GstCaps2 *caps) { GstMixMatrix *mix = GST_MIXMATRIX(GST_PAD_PARENT(pad)); gint i; - if (!GST_CAPS_IS_FIXED(caps) || GST_PAD_IS_SRC (pad)) { - return GST_PAD_LINK_DELAYED; - } - for (i=0;i<mix->srcpadalloc;i++) { if (mix->srcpads[i]) { - if (GST_PAD_CAPS(mix->srcpads[i]) == NULL) - if (gst_pad_try_set_caps(mix->srcpads[i], gst_caps_ref (caps)) <= 0) + if (GST_PAD_CAPS(mix->srcpads[i]) == NULL) { + if (gst_pad_try_set_caps(mix->srcpads[i], caps) <= 0) { return GST_PAD_LINK_REFUSED; + } + } } } - mix->caps = caps; + mix->caps = gst_caps2_copy(caps); return GST_PAD_LINK_OK; } @@ -508,9 +502,6 @@ { if (!gst_library_load ("gstbytestream")) return FALSE; - - sinktempl = mixmatrix_sink_factory (); - srctempl = mixmatrix_src_factory (); return gst_element_register (plugin, "mixmatrix", GST_RANK_NONE, GST_TYPE_MIXMATRIX); Index: gstmodplug.cc =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/modplug/gstmodplug.cc,v retrieving revision 1.37 retrieving revision 1.37.4.1 diff -u -d -r1.37 -r1.37.4.1 --- gstmodplug.cc 16 Nov 2003 22:02:02 -0000 1.37 +++ gstmodplug.cc 9 Dec 2003 09:27:39 -0000 1.37.4.1 @@ -66,32 +66,24 @@ ARG_SURROUND, ARG_SURROUND_DEPTH, ARG_SURROUND_DELAY, - ARG_OVERSAMP, - ARG_METADATA, - ARG_STREAMINFO + ARG_OVERSAMP }; -GST_PAD_TEMPLATE_FACTORY (modplug_src_template_factory, +static GstStaticPadTemplate modplug_src_template_factory = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - gst_caps_new ( - "modplug_src", - "audio/x-raw-int", - GST_AUDIO_INT_PAD_TEMPLATE_PROPS - ) -) + GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS) +); -GST_PAD_TEMPLATE_FACTORY (modplug_sink_template_factory, +static GstStaticPadTemplate modplug_sink_template_factory = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "modplug_sink", - "audio/x-mod", - NULL - ) -) + GST_STATIC_CAPS ("audio/x-mod") +); enum { MODPLUG_STATE_NEED_TUNE = 1, @@ -111,7 +103,7 @@ GValue *value, GParamSpec *pspec ); static GstPadLinkReturn - gst_modplug_srclink (GstPad *pad, GstCaps *caps); + gst_modplug_srclink (GstPad *pad, const GstCaps2 *caps); static void gst_modplug_loop (GstElement *element); static void gst_modplug_setup (GstModPlug *modplug); static const GstFormat * @@ -156,9 +148,9 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (modplug_sink_template_factory)); + gst_static_pad_template_get (&modplug_sink_template_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (modplug_src_template_factory)); + gst_static_pad_template_get (&modplug_src_template_factory)); gst_element_class_set_details (element_class, &modplug_details); } @@ -221,14 +213,6 @@ g_param_spec_boolean("noise_reduction", "noise_reduction", "noise_reduction", TRUE, (GParamFlags)G_PARAM_READWRITE )); - g_object_class_install_property (gobject_class, ARG_METADATA, - g_param_spec_boxed ("metadata", "Metadata", "Metadata", - GST_TYPE_CAPS, G_PARAM_READABLE)); - - g_object_class_install_property (gobject_class, ARG_STREAMINFO, - g_param_spec_boxed ("streaminfo", "Streaminfo", "Streaminfo", - GST_TYPE_CAPS, G_PARAM_READABLE)); - gobject_class->set_property = gst_modplug_set_property; gobject_class->get_property = gst_modplug_get_property; @@ -238,10 +222,10 @@ static void gst_modplug_init (GstModPlug *modplug) { - modplug->sinkpad = gst_pad_new_from_template (GST_PAD_TEMPLATE_GET (modplug_sink_template_factory), "sink"); + modplug->sinkpad = gst_pad_new_from_template (gst_static_pad_template_get (&modplug_sink_template_factory), "sink"); gst_element_add_pad (GST_ELEMENT(modplug), modplug->sinkpad); - modplug->srcpad = gst_pad_new_from_template (GST_PAD_TEMPLATE_GET (modplug_src_template_factory), "src"); + modplug->srcpad = gst_pad_new_from_template (gst_static_pad_template_get (&modplug_src_template_factory), "src"); gst_element_add_pad (GST_ELEMENT(modplug), modplug->srcpad); gst_pad_set_link_function (modplug->srcpad, gst_modplug_srclink); @@ -395,20 +379,18 @@ return res; } -static GstCaps* +#if 0 +static GstCaps2* gst_modplug_get_streaminfo (GstModPlug *modplug) { - GstCaps *caps; - GstProps *props; - GstPropsEntry *entry; + GstCaps2 *caps; props = gst_props_empty_new (); - entry = gst_props_entry_new ("Patterns", GST_PROPS_INT ((gint)modplug->mSoundFile->GetNumPatterns())); + entry = gst_props_entry_new ("Patterns", G_TYPE_INT ((gint)modplug->mSoundFile->GetNumPatterns())); gst_props_add_entry (props, (GstPropsEntry *) entry); - caps = gst_caps_new ("mad_streaminfo", "application/x-gst-streaminfo", - props); + caps = gst_caps2_new_simple ("application/x-gst-streaminfo", NULL); return caps; } @@ -434,15 +416,15 @@ props = gst_props_empty_new (); title = modplug->mSoundFile->GetTitle(); - entry = gst_props_entry_new ("Title", GST_PROPS_STRING (title)); + entry = gst_props_entry_new ("Title", G_TYPE_STRING (title)); gst_props_add_entry (props, entry); - modplug->metadata = gst_caps_new ("modplug_metadata", - "application/x-gst-metadata", - props); + modplug->metadata = gst_caps2_new_simple ("application/x-gst-metadata", + NULL); g_object_notify (G_OBJECT (modplug), "metadata"); } +#endif static GstPadLinkReturn @@ -464,17 +446,14 @@ } if ((ret = gst_pad_try_set_caps (modplug->srcpad, - GST_CAPS_NEW ( - "modplug_src", - "audio/x-raw-int", - "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "signed", GST_PROPS_BOOLEAN (sign), - "width", GST_PROPS_INT (modplug->bitsPerSample), - "depth", GST_PROPS_INT (modplug->bitsPerSample), - "rate", GST_PROPS_INT (modplug->frequency), - "channels", GST_PROPS_INT (modplug->channel), - NULL) - )) <= 0) { + gst_caps2_new_simple ("audio/x-raw-int", + "endianness", G_TYPE_INT, G_BYTE_ORDER, + "signed", G_TYPE_BOOLEAN, sign, + "width", G_TYPE_INT, modplug->bitsPerSample, + "depth", G_TYPE_INT, modplug->bitsPerSample, + "rate", G_TYPE_INT, modplug->frequency, + "channels", G_TYPE_INT, modplug->channel, + NULL))) <= 0) { return ret; } @@ -485,23 +464,20 @@ static GstPadLinkReturn -gst_modplug_srclink (GstPad *pad, GstCaps *caps) +gst_modplug_srclink (GstPad *pad, const GstCaps2 *caps) { GstModPlug *modplug; + GstStructure *structure; + gint depth; modplug = GST_MODPLUG (gst_pad_get_parent (pad)); - if (gst_caps_has_property_typed (caps, "depth", GST_PROPS_INT_TYPE)) { - gint depth; - gst_caps_get_int (caps, "depth", &depth); - modplug->_16bit = (depth == 16); - } - if (gst_caps_has_property_typed (caps, "channels", GST_PROPS_INT_TYPE)) { - gst_caps_get_int (caps, "channels", &modplug->channel); - } - if (gst_caps_has_property_typed (caps, "rate", GST_PROPS_INT_TYPE)) { - gst_caps_get_int (caps, "rate", &modplug->frequency); - } + structure = gst_caps2_get_nth_cap (caps, 0); + + gst_structure_get_int (structure, "depth", &depth); + modplug->_16bit = (depth == 16); + gst_structure_get_int (structure, "channels", &modplug->channel); + gst_structure_get_int (structure, "rate", &modplug->frequency); return modplug_negotiate(modplug); } @@ -611,8 +587,8 @@ modplug->audiobuffer = (guchar *) g_malloc (modplug->length); - gst_modplug_update_metadata (modplug); - gst_modplug_update_info (modplug); + //gst_modplug_update_metadata (modplug); + //gst_modplug_update_info (modplug); modplug->state = MODPLUG_STATE_PLAY_TUNE; } @@ -691,8 +667,6 @@ modplug->bs = gst_bytestream_new (modplug->sinkpad); modplug->song_size = 0; modplug->state = MODPLUG_STATE_NEED_TUNE; - modplug->metadata = NULL; - modplug->streaminfo = NULL; break; case GST_STATE_PAUSED_TO_PLAYING: break; @@ -709,7 +683,6 @@ if (modplug->audiobuffer) g_free (modplug->audiobuffer); modplug->buffer_in = NULL; modplug->audiobuffer = NULL; - gst_caps_unref (modplug->streaminfo); modplug->state = MODPLUG_STATE_NEED_TUNE; break; case GST_STATE_READY_TO_NULL: @@ -809,12 +782,6 @@ break; case ARG_NOISE_REDUCTION: g_value_set_boolean (value, modplug->noise_reduction); - break; - case ARG_METADATA: - g_value_set_boxed (value, modplug->metadata); - break; - case ARG_STREAMINFO: - g_value_set_boxed (value, modplug->streaminfo); break; default: break; Index: gstmodplug.h =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/modplug/gstmodplug.h,v retrieving revision 1.14 retrieving revision 1.14.4.1 diff -u -d -r1.14 -r1.14.4.1 --- gstmodplug.h 7 Nov 2003 12:46:20 -0000 1.14 +++ gstmodplug.h 9 Dec 2003 09:27:40 -0000 1.14.4.1 @@ -44,8 +44,6 @@ GstElement element; GstPad *sinkpad, *srcpad; guint8 *buffer_in; - GstCaps *metadata; - GstCaps *streaminfo; GstByteStream *bs; const gchar *songname; Index: gstmonoscope.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/monoscope/gstmonoscope.c,v retrieving revision 1.20 retrieving revision 1.20.4.1 diff -u -d -r1.20 -r1.20.4.1 --- gstmonoscope.c 7 Nov 2003 12:46:21 -0000 1.20 +++ gstmonoscope.c 9 Dec 2003 09:27:40 -0000 1.20.4.1 @@ -23,6 +23,7 @@ #include <gst/gst.h> #include <gst/video/video.h> +#include <gst/audio/audio.h> #include "monoscope.h" #define GST_TYPE_MONOSCOPE (gst_monoscope_get_type()) @@ -46,7 +47,7 @@ gint16 datain[512]; /* video state */ - gfloat fps; + gdouble fps; gint width; gint height; gboolean first_buffer; @@ -81,41 +82,21 @@ /* FILL ME */ }; -GST_PAD_TEMPLATE_FACTORY (src_template, +static GstStaticPadTemplate src_template = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "monoscopesrc", - "video/x-raw-rgb", - "bpp", GST_PROPS_INT (32), - "depth", GST_PROPS_INT (32), - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), - "red_mask", GST_PROPS_INT (R_MASK_32), - "green_mask", GST_PROPS_INT (G_MASK_32), - "blue_mask", GST_PROPS_INT (B_MASK_32), - "width", GST_PROPS_INT_RANGE (16, 4096), - "height", GST_PROPS_INT_RANGE (16, 4096), - "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT) - ) -) + GST_STATIC_CAPS (GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32) +); -GST_PAD_TEMPLATE_FACTORY (sink_template, - "sink", /* the name of the pads */ - GST_PAD_SINK, /* type of the pad */ - GST_PAD_ALWAYS, /* ALWAYS/SOMETIMES */ - GST_CAPS_NEW ( - "monoscopesink", /* the name of the caps */ - "audio/x-raw-int", /* the mime type of the caps */ - /* Properties follow: */ - "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "signed", GST_PROPS_BOOLEAN (TRUE), - "width", GST_PROPS_INT (16), - "depth", GST_PROPS_INT (16), - "rate", GST_PROPS_INT_RANGE (8000, 96000), - "channels", GST_PROPS_INT (1) - ) -) +static GstStaticPadTemplate sink_template = +GST_STATIC_PAD_TEMPLATE ( + "sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS (GST_AUDIO_INT_STANDARD_PAD_TEMPLATE_CAPS) +); static void gst_monoscope_class_init (GstMonoscopeClass *klass); @@ -125,9 +106,9 @@ static void gst_monoscope_chain (GstPad *pad, GstData *_data); static GstPadLinkReturn - gst_monoscope_sinkconnect (GstPad *pad, GstCaps *caps); + gst_monoscope_sinkconnect (GstPad *pad, const GstCaps2 *caps); static GstPadLinkReturn - gst_monoscope_srcconnect (GstPad *pad, GstCaps *caps); + gst_monoscope_srcconnect (GstPad *pad, const GstCaps2 *caps); static GstElementClass *parent_class = NULL; @@ -159,9 +140,9 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (src_template)); + gst_static_pad_template_get (&src_template)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (sink_template)); + gst_static_pad_template_get (&sink_template)); gst_element_class_set_details (element_class, &gst_monoscope_details); } @@ -182,9 +163,9 @@ { /* create the sink and src pads */ monoscope->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (sink_template ), "sink"); + gst_static_pad_template_get (&sink_template ), "sink"); monoscope->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (src_template ), "src"); + gst_static_pad_template_get (&src_template ), "src"); gst_element_add_pad (GST_ELEMENT (monoscope), monoscope->sinkpad); gst_element_add_pad (GST_ELEMENT (monoscope), monoscope->srcpad); @@ -203,55 +184,45 @@ } static GstPadLinkReturn -gst_monoscope_sinkconnect (GstPad *pad, GstCaps *caps) +gst_monoscope_sinkconnect (GstPad *pad, const GstCaps2 *caps) { GstMonoscope *monoscope; monoscope = GST_MONOSCOPE (gst_pad_get_parent (pad)); - if (!GST_CAPS_IS_FIXED (caps)) { - return GST_PAD_LINK_DELAYED; - } - return GST_PAD_LINK_OK; } static GstPadLinkReturn gst_monoscope_negotiate (GstMonoscope *monoscope) { - GstCaps *caps; + GstCaps2 *caps; - caps = GST_CAPS_NEW ( - "monoscopesrc", - "video/x-raw-rgb", - "bpp", GST_PROPS_INT (32), - "depth", GST_PROPS_INT (32), - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), - "red_mask", GST_PROPS_INT (R_MASK_32), - "green_mask", GST_PROPS_INT (G_MASK_32), - "blue_mask", GST_PROPS_INT (B_MASK_32), - "width", GST_PROPS_INT (monoscope->width), - "height", GST_PROPS_INT (monoscope->height), - "framerate", GST_PROPS_FLOAT (monoscope->fps) - ); + caps = gst_caps2_new_simple ("video/x-raw-rgb", + "bpp", G_TYPE_INT, 32, + "depth", G_TYPE_INT, 32, + "endianness", G_TYPE_INT, G_BIG_ENDIAN, + "red_mask", G_TYPE_INT, R_MASK_32, + "green_mask", G_TYPE_INT, G_MASK_32, + "blue_mask", G_TYPE_INT, B_MASK_32, + "width", G_TYPE_INT, monoscope->width, + "height", G_TYPE_INT, monoscope->height, + "framerate", G_TYPE_DOUBLE, monoscope->fps, NULL); return gst_pad_try_set_caps (monoscope->srcpad, caps); } static GstPadLinkReturn -gst_monoscope_srcconnect (GstPad *pad, GstCaps *caps) +gst_monoscope_srcconnect (GstPad *pad, const GstCaps2 *caps) { GstPadLinkReturn ret; GstMonoscope *monoscope = GST_MONOSCOPE (gst_pad_get_parent (pad)); + GstStructure *structure; - if (gst_caps_has_property_typed (caps, "width", GST_PROPS_INT_TYPE)) { - gst_caps_get_int (caps, "width", &monoscope->width); - } - if (gst_caps_has_property_typed (caps, "height", GST_PROPS_INT_TYPE)) { - gst_caps_get_int (caps, "height", &monoscope->height); - } - if (gst_caps_has_property_typed (caps, "framerate", GST_PROPS_FLOAT_TYPE)) { - gst_caps_get_float (caps, "framerate", &monoscope->fps); - } + structure = gst_caps2_get_nth_cap (caps, 0); + + gst_structure_get_int (structure, "width", &monoscope->width); + gst_structure_get_int (structure, "height", &monoscope->height); + gst_structure_get_double (structure, "framerate", &monoscope->fps); if ((ret = gst_monoscope_negotiate (monoscope)) <= 0) return ret; Index: gstmpeg1systemencode.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/mpeg1sys/gstmpeg1systemencode.c,v retrieving revision 1.15 retrieving revision 1.15.4.1 diff -u -d -r1.15 -r1.15.4.1 --- gstmpeg1systemencode.c 2 Nov 2003 20:53:30 -0000 1.15 +++ gstmpeg1systemencode.c 9 Dec 2003 09:27:40 -0000 1.15.4.1 @@ -49,39 +49,31 @@ /* FILL ME */ }; -GST_PAD_TEMPLATE_FACTORY (src_factory, +static GstStaticPadTemplate src_factory = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "src_video", - "video/mpeg", - "systemstream", GST_PROPS_BOOLEAN (TRUE) - ) -) -GST_PAD_TEMPLATE_FACTORY (video_sink_factory, + GST_STATIC_CAPS ("video/mpeg, " + "systemstream = (boolean) TRUE") +); +static GstStaticPadTemplate video_sink_factory = +GST_STATIC_PAD_TEMPLATE ( "video_%d", GST_PAD_SINK, GST_PAD_REQUEST, - GST_CAPS_NEW ( - "sink_video", - "video/mpeg", - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (FALSE) - /* we don't care about width/height/framerate */ - ) -) + GST_STATIC_CAPS ("video/mpeg, " + "mpegversion = (int) 1, " + "systemstream = (boolean) FALSE") +); -GST_PAD_TEMPLATE_FACTORY (audio_sink_factory, +static GstStaticPadTemplate audio_sink_factory = +GST_STATIC_PAD_TEMPLATE ( "audio_%d", GST_PAD_SINK, GST_PAD_REQUEST, - GST_CAPS_NEW ( - "sink_audio", - "audio/mpeg", - NULL /* well, "don't care" */ - ) -) + GST_STATIC_CAPS ("audio/mpeg") +); static void gst_system_encode_class_init (GstMPEG1SystemEncodeClass *klass); static void gst_system_encode_base_init (GstMPEG1SystemEncodeClass *klass); @@ -128,11 +120,11 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (src_factory)); + gst_static_pad_template_get (&src_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (audio_sink_factory)); + gst_static_pad_template_get (&audio_sink_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (video_sink_factory)); + gst_static_pad_template_get (&video_sink_factory)); gst_element_class_set_details (element_class, &system_encode_details); } @@ -157,7 +149,7 @@ gst_system_encode_init (GstMPEG1SystemEncode *system_encode) { system_encode->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (src_factory), "src"); + gst_static_pad_template_get (&src_factory), "src"); gst_element_add_pad (GST_ELEMENT (system_encode), system_encode->srcpad); system_encode->video_buffer = mpeg1mux_buffer_new (BUFFER_TYPE_VIDEO, 0xE0); @@ -195,7 +187,7 @@ } system_encode = GST_SYSTEM_ENCODE (element); - if (templ == GST_PAD_TEMPLATE_GET (audio_sink_factory)) { + if (templ == gst_static_pad_template_get (&audio_sink_factory)) { name = g_strdup_printf ("audio_%02d", system_encode->num_audio_pads); g_print ("%s\n", name); newpad = gst_pad_new_from_template (templ, name); @@ -205,7 +197,7 @@ system_encode->num_audio_pads++; system_encode->which_streams |= STREAMS_AUDIO; } - else if (templ == GST_PAD_TEMPLATE_GET (video_sink_factory)) { + else if (templ == gst_static_pad_template_get (&video_sink_factory)) { name = g_strdup_printf ("video_%02d", system_encode->num_video_pads); g_print ("%s\n", name); newpad = gst_pad_new_from_template (templ, name); Index: gstmp1videoparse.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/mpeg1videoparse/gstmp1videoparse.c,v retrieving revision 1.24 retrieving revision 1.24.4.1 diff -u -d -r1.24 -r1.24.4.1 --- gstmp1videoparse.c 16 Nov 2003 22:02:03 -0000 1.24 +++ gstmp1videoparse.c 9 Dec 2003 09:27:40 -0000 1.24.4.1 @@ -43,32 +43,30 @@ "Wim Taymans <wim...@ch...>" ); -GST_PAD_TEMPLATE_FACTORY (src_factory, +static GstStaticPadTemplate src_factory = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "mp1videoparse_src", - "video/mpeg", - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (FALSE), - "width", GST_PROPS_INT_RANGE (16, 4096), - "height", GST_PROPS_INT_RANGE (16, 4096), - "pixel_width", GST_PROPS_INT_RANGE (1, 255), - "pixel_height", GST_PROPS_INT_RANGE (1, 255), - "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT) + GST_STATIC_CAPS ("video/mpeg, " + "mpegversion = (int) 1, " + "systemstream = (boolean) false, " + "width = (int) [ 16, 4096 ], " + "height = (int) [ 16, 4096 ], " + "pixel_width = (int) [ 1, 255 ], " + "pixel_height = (int) [ 1, 255 ], " + "framerate = (double) [ 0, MAX ]" ) ); -GST_PAD_TEMPLATE_FACTORY (sink_factory, +static GstStaticPadTemplate sink_factory = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "mp1videoparse_sink", - "video/mpeg", - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (FALSE) + GST_STATIC_CAPS ("video/mpeg, " + "mpegversion = (int) 1, " + "systemstream = (boolean) false" ) ); @@ -124,9 +122,9 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (src_factory)); + gst_static_pad_template_get (&src_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (sink_factory)); + gst_static_pad_template_get (&sink_factory)); gst_element_class_set_details (element_class, &mpeg1videoparse_details); } @@ -146,12 +144,12 @@ gst_mp1videoparse_init (Mp1VideoParse *mp1videoparse) { mp1videoparse->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (sink_factory), "sink"); + gst_static_pad_template_get (&sink_factory), "sink"); gst_element_add_pad(GST_ELEMENT(mp1videoparse),mp1videoparse->sinkpad); gst_pad_set_chain_function(mp1videoparse->sinkpad,gst_mp1videoparse_chain); mp1videoparse->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (src_factory), "src"); + gst_static_pad_template_get (&src_factory), "src"); gst_element_add_pad(GST_ELEMENT(mp1videoparse),mp1videoparse->srcpad); mp1videoparse->partialbuf = NULL; @@ -189,7 +187,7 @@ fps_table[fps_idx] != mp1videoparse->fps || width != mp1videoparse->width || height != mp1videoparse->height) { - GstCaps *caps; + GstCaps2 *caps; gint p_w, p_h; mp1videoparse->asr = asr_table[asr_idx]; @@ -200,17 +198,16 @@ p_w = (asr_table[asr_idx] < 1.0) ? (100 / asr_table[asr_idx]) : 1; p_h = (asr_table[asr_idx] > 1.0) ? (100 * asr_table[asr_idx]) : 1; - caps = GST_CAPS_NEW ("mp1videoparse_src", - "video/mpeg", - "systemstream", GST_PROPS_BOOLEAN (FALSE), - "mpegversion", GST_PROPS_INT (1), - "width", GST_PROPS_INT (width), - "height", GST_PROPS_INT (height), - "framerate", GST_PROPS_FLOAT (fps_table[fps_idx]), - "pixel_width", GST_PROPS_INT (p_w), - "pixel_height", GST_PROPS_INT (p_h)); + caps = gst_caps2_new_simple ("video/mpeg", + "systemstream", G_TYPE_BOOLEAN, FALSE, + "mpegversion", G_TYPE_INT, 1, + "width", G_TYPE_INT, width, + "height", G_TYPE_INT, height, + "framerate", G_TYPE_DOUBLE, fps_table[fps_idx], + "pixel_width", G_TYPE_INT, p_w, + "pixel_height", G_TYPE_INT, p_h, NULL); - gst_caps_debug (caps, "New mpeg1videoparse caps"); + GST_DEBUG_CAPS ("New mpeg1videoparse caps", caps); if (gst_pad_try_set_caps (mp1videoparse->srcpad, caps) <= 0) { gst_element_error (GST_ELEMENT (mp1videoparse), Index: gstmpegaudio.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/mpegaudio/gstmpegaudio.c,v retrieving revision 1.19 retrieving revision 1.19.4.1 diff -u -d -r1.19 -r1.19.4.1 --- gstmpegaudio.c 16 Nov 2003 22:02:04 -0000 1.19 +++ gstmpegaudio.c 9 Dec 2003 09:27:41 -0000 1.19.4.1 @@ -49,41 +49,32 @@ /* FILL ME */ }; -GST_PAD_TEMPLATE_FACTORY (mpegaudio_sink_templ, +static GstStaticPadTemplate mpegaudio_sink_templ = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "mpegaudio_sink_caps", - "audio/x-raw-int", - "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "signed", GST_PROPS_BOOLEAN (TRUE), - "width", GST_PROPS_INT (16), - "depth", GST_PROPS_INT (16), - "rate", GST_PROPS_LIST ( - GST_PROPS_INT (32000), - GST_PROPS_INT (44100), - GST_PROPS_INT (48000) - ), - "channels", GST_PROPS_LIST ( - GST_PROPS_INT (1), - GST_PROPS_INT (2) - ) + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (boolean) true, " + "width = (int) 16, " + "depth = (int) 16, " + "rate = (int) { 32000, 44100, 48000 }, " + "channels = (int) [ 1, 2 ]" ) -) +); -GST_PAD_TEMPLATE_FACTORY (mpegaudio_src_templ, +static GstStaticPadTemplate mpegaudio_src_templ = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "mpegaudio_src_caps", - "audio/mpeg", - "layer", GST_PROPS_INT_RANGE (1, 2), - "channels", GST_PROPS_INT_RANGE (1, 2), - "rate", GST_PROPS_INT_RANGE (8000, 96000) + GST_STATIC_CAPS ("audio/mpeg, " + "layer = (int) [ 1, 2 ], " + "channels = (int) [ 1, 2 ], " + "rate = [ 8000, 96000 ]" ) -) +); /********** Define useful types for non-programmatic interfaces **********/ #define GST_TYPE_MPEGAUDIO_MODE (gst_mpegaudio_mode_get_type()) @@ -144,9 +135,9 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (mpegaudio_sink_templ)); + gst_static_pad_template_get (&mpegaudio_sink_templ)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (mpegaudio_src_templ)); + gst_static_pad_template_get (&mpegaudio_src_templ)); gst_element_class_set_details (element_class, &gst_mpegaudio_details); } @@ -183,18 +174,18 @@ } static GstPadLinkReturn -gst_mpegaudio_sinkconnect (GstPad *pad, GstCaps *caps) +gst_mpegaudio_sinkconnect (GstPad *pad, const GstCaps2 *caps) { GstMpegAudio *mpegaudio; gint frequency, channels; + GstStructure *structure; mpegaudio = GST_MPEGAUDIO (gst_pad_get_parent (pad)); - if (!GST_CAPS_IS_FIXED (caps)) - return GST_PAD_LINK_DELAYED; + structure = gst_caps2_get_nth_cap (caps, 0); - gst_caps_get_int (caps, "rate", &frequency); - gst_caps_get_int (caps, "channels", &channels); + gst_structure_get_int (structure, "rate", &frequency); + gst_structure_get_int (structure, "channels", &channels); mpegaudio->encoder->frequency = frequency; if (channels == 1) @@ -202,11 +193,10 @@ mpegaudio_sync_parms (mpegaudio->encoder); - caps = GST_CAPS_NEW ("mpegaudio_src", - "audio/mpeg", - "layer", GST_PROPS_INT (mpegaudio->encoder->info.lay), - "channels", GST_PROPS_INT (channels), - "rate", GST_PROPS_INT (frequency)); + caps = gst_caps2_new_simple ("audio/mpeg", + "layer", G_TYPE_INT, mpegaudio->encoder->info.lay, + "channels", G_TYPE_INT, channels, + "rate", G_TYPE_INT, frequency, NULL); return gst_pad_try_set_caps (mpegaudio->srcpad, caps); } @@ -216,13 +206,13 @@ { /* create the sink and src pads */ mpegaudio->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (mpegaudio_sink_templ), "sink"); + gst_static_pad_template_get (&mpegaudio_sink_templ), "sink"); gst_element_add_pad (GST_ELEMENT (mpegaudio), mpegaudio->sinkpad); gst_pad_set_chain_function (mpegaudio->sinkpad, gst_mpegaudio_chain); gst_pad_set_link_function (mpegaudio->sinkpad, gst_mpegaudio_sinkconnect); mpegaudio->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (mpegaudio_src_templ), "src"); + gst_static_pad_template_get (&mpegaudio_src_templ), "src"); gst_element_add_pad (GST_ELEMENT (mpegaudio), mpegaudio->srcpad); /* initialize the mpegaudio encoder state */ Index: gstmpegaudioparse.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/mpegaudioparse/gstmpegaudioparse.c,v retrieving revision 1.28 retrieving revision 1.28.4.1 diff -u -d -r1.28 -r1.28.4.1 --- gstmpegaudioparse.c 16 Nov 2003 22:02:04 -0000 1.28 +++ gstmpegaudioparse.c 9 Dec 2003 09:27:41 -0000 1.28.4.1 @@ -32,40 +32,27 @@ "Erik Walthinsen <om...@cs...>" }; -static GstPadTemplate* -mp3_src_factory (void) -{ - return - gst_pad_template_new ( - "src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - gst_caps_new ( - "mp3parse_src", - "audio/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "layer", GST_PROPS_INT_RANGE (1, 3), - "rate", GST_PROPS_INT_RANGE (8000, 48000), - "channels", GST_PROPS_INT_RANGE (1, 2), - NULL)), - NULL); -} +#if 0 +static GstStaticPadTemplate mp3_src_template = +GST_STATIC_PAD_TEMPLATE ( + "src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/mpeg, " + "mpegversion = (int) 1, " + "layer = (int) [ 1, 3 ], " + "rate = (int) [ 8000, 48000], " + "channels = (int) [ 1, 2 ]") +); -static GstPadTemplate* -mp3_sink_factory (void) -{ - return - gst_pad_template_new ( - "sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - gst_caps_new ( - "mp3parse_sink", - "audio/mpeg", - NULL), - NULL); -}; +static GstStaticPadTemplate mp3_sink_template = +GST_STATIC_PAD_TEMPLATE ( + "sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/mpeg") +); +#endif /* GstMPEGAudioParse signals and args */ enum { @@ -235,24 +222,22 @@ #define GST_MP3_TYPEFIND_MIN_HEADERS 3 #define GST_MP3_TYPEFIND_MIN_DATA (1440 * (GST_MP3_TYPEFIND_MIN_HEADERS + 1) - 1 + 3) -static GstCaps * +static GstCaps2 * mp3_caps_create (guint layer, guint channels, guint bitrate, guint samplerate) { - GstCaps *new; + GstCaps2 *new; g_assert (layer); g_assert (samplerate); g_assert (bitrate); g_assert (channels); - new = GST_CAPS_NEW ("mp3_type_find", - "audio/mpeg", - "mpegversion", GST_PROPS_INT (1), - "layer", GST_PROPS_INT (layer), - /*"bitrate", GST_PROPS_INT (bitrate),*/ - "rate", GST_PROPS_INT (samplerate), - "channels", GST_PROPS_INT (channels)); + new = gst_caps2_new_simple ("audio/mpeg", + "mpegversion", G_TYPE_INT, 1, + "layer", G_TYPE_INT, layer, + "rate", G_TYPE_INT, samplerate, + "channels", G_TYPE_INT, channels, NULL); return new; } @@ -475,7 +460,7 @@ rate != parse->rate || layer != parse->layer || bitrate != parse->bit_rate) { - GstCaps *caps = mp3_caps_create (layer, channels, bitrate, rate); + GstCaps2 *caps = mp3_caps_create (layer, channels, bitrate, rate); if (gst_pad_try_set_caps(parse->srcpad, caps) <= 0) { gst_element_error (GST_ELEMENT (parse), @@ -585,9 +570,6 @@ static gboolean plugin_init (GstPlugin *plugin) { - sink_temp = mp3_sink_factory (); - src_temp = mp3_src_factory (); - return gst_element_register (plugin, "mp3parse", GST_RANK_NONE, GST_TYPE_MP3PARSE); } Index: gstmpegdemux.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/mpegstream/gstmpegdemux.c,v retrieving revision 1.42 retrieving revision 1.42.4.1 diff -u -d -r1.42 -r1.42.4.1 --- gstmpegdemux.c 2 Nov 2003 21:22:09 -0000 1.42 +++ gstmpegdemux.c 9 Dec 2003 09:27:41 -0000 1.42.4.1 @@ -48,106 +48,74 @@ /* FILL ME */ }; -GST_PAD_TEMPLATE_FACTORY (sink_factory, +static GstStaticPadTemplate sink_factory = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "mpeg_demux_sink", - "video/mpeg", - "mpegversion", GST_PROPS_INT_RANGE (1, 2), - "systemstream", GST_PROPS_BOOLEAN (TRUE) + GST_STATIC_CAPS ("video/mpeg, " + "mpegversion = (int) [ 1, 2], " + "systemstream = (boolean) TRUE" ) ); -GST_PAD_TEMPLATE_FACTORY (audio_factory, +static GstStaticPadTemplate audio_factory = +GST_STATIC_PAD_TEMPLATE ( "audio_%02d", GST_PAD_SRC, GST_PAD_SOMETIMES, - GST_CAPS_NEW ( - "mpeg_demux_audio", - "audio/mpeg", - NULL - ) + GST_STATIC_CAPS ( "audio/mpeg" ) ); -GST_PAD_TEMPLATE_FACTORY (video_src_factory, +static GstStaticPadTemplate video_src_factory = +GST_STATIC_PAD_TEMPLATE ( "video_%02d", GST_PAD_SRC, GST_PAD_SOMETIMES, - GST_CAPS_NEW ( - "mpeg_demux_video_mpeg1", - "video/mpeg", - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (FALSE) - ), - GST_CAPS_NEW ( - "mpeg_demux_video_mpeg2", - "video/mpeg", - "mpegversion", GST_PROPS_INT (2), - "systemstream", GST_PROPS_BOOLEAN (FALSE) + GST_STATIC_CAPS ( + "video/mpeg, " + "mpegversion = (int) { 1, 2 }, " + "systemstream = (boolean) FALSE" ) ); - -GST_PAD_TEMPLATE_FACTORY (private1_factory, +static GstStaticPadTemplate private1_factory = +GST_STATIC_PAD_TEMPLATE ( "private_stream_1_%02d", GST_PAD_SRC, GST_PAD_SOMETIMES, - GST_CAPS_NEW ( - "mpeg_demux_private1", - "audio/x-ac3", - NULL - ) + GST_STATIC_CAPS ("audio/x-ac3") ); -GST_PAD_TEMPLATE_FACTORY (private2_factory, +static GstStaticPadTemplate private2_factory = +GST_STATIC_PAD_TEMPLATE ( "private_stream_2", GST_PAD_SRC, GST_PAD_SOMETIMES, - GST_CAPS_NEW ( - "mpeg_demux_private_2", - "unknown/unknown", - NULL - ) + GST_STATIC_CAPS2_ANY ); -GST_PAD_TEMPLATE_FACTORY (pcm_factory, +static GstStaticPadTemplate pcm_factory = +GST_STATIC_PAD_TEMPLATE ( "pcm_stream_%02d", GST_PAD_SRC, GST_PAD_SOMETIMES, - GST_CAPS_NEW ( - "mpeg_demux_pcm", - "audio/x-raw-int", - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), - "signed", GST_PROPS_BOOLEAN (TRUE), - "width", GST_PROPS_LIST ( - GST_PROPS_INT (16), - GST_PROPS_INT (20), - GST_PROPS_INT (24) - ), - "depth", GST_PROPS_LIST ( - GST_PROPS_INT (16), - GST_PROPS_INT (20), - GST_PROPS_INT (24) - ), - "rate", GST_PROPS_LIST ( - GST_PROPS_INT (48000), - GST_PROPS_INT (96000) - ), - "channels", GST_PROPS_INT_RANGE (1, 8) + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BIG_ENDIAN, " + "signed = (boolean) TRUE, " + "width = (int) { 16, 20, 24 }, " + "depth = (int) { 16, 20, 24 }, " + "rate = (int) { 48000, 96000 }, " + "channels = (int) [ 1, 8 ]" ) ); -GST_PAD_TEMPLATE_FACTORY (subtitle_factory, +static GstStaticPadTemplate subtitle_factory = +GST_STATIC_PAD_TEMPLATE ( "subtitle_stream_%d", GST_PAD_SRC, GST_PAD_SOMETIMES, - GST_CAPS_NEW ( - "mpeg_demux_subtitle", - "unknown/unknown", - NULL - ) + GST_STATIC_CAPS2_ANY ); static void gst_mpeg_demux_class_init (GstMPEGDemuxClass *klass); @@ -205,19 +173,19 @@ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (sink_factory)); + gst_static_pad_template_get (&sink_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (video_src_factory)); + gst_static_pad_template_get (&video_src_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (private1_factory)); + gst_static_pad_template_get (&private1_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (private2_factory)); + gst_static_pad_template_get (&private2_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (pcm_factory)); + gst_static_pad_template_get (&pcm_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (subtitle_factory)); + gst_static_pad_template_get (&subtitle_factory)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (audio_factory)); + gst_static_pad_template_get (&audio_factory)); gst_element_class_set_details (element_class, &mpeg_demux_details); } @@ -254,7 +222,7 @@ gst_element_remove_pad (GST_ELEMENT (mpeg_parse), mpeg_parse->sinkpad); mpeg_par... [truncated message content] |