diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2003-07-06 20:49:52 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2003-07-06 20:49:52 +0000 |
commit | 292fec2a0bd1f221a46ad69c5100995d04c01057 (patch) | |
tree | 658db299e0e03b2454ff840730569d79539e67c4 /ext | |
parent | a8183e9a3fa87cf4247c7df16207f440ea4069c0 (diff) |
New mimetypes gone into effect today - this commit changes all old mimetypes over to the new mimetypes spec as descri...
Original commit message from CVS:
New mimetypes gone into effect today - this commit changes all old mimetypes over to the new mimetypes spec as described in the previous commit's document. Note: some plugins will break, some pipelines will break, expect HEAD to be broken or at least not 100% working for a few days, but don't forget to report bugs
Diffstat (limited to 'ext')
-rw-r--r-- | ext/aalib/gstaasink.c | 8 | ||||
-rw-r--r-- | ext/dv/gstdvdec.c | 85 | ||||
-rw-r--r-- | ext/esd/esdmon.c | 46 | ||||
-rw-r--r-- | ext/esd/esdsink.c | 46 | ||||
-rw-r--r-- | ext/flac/gstflac.c | 17 | ||||
-rw-r--r-- | ext/flac/gstflacdec.c | 4 | ||||
-rw-r--r-- | ext/flac/gstflacenc.c | 12 | ||||
-rw-r--r-- | ext/gdk_pixbuf/gstgdkpixbuf.c | 7 | ||||
-rw-r--r-- | ext/gdk_pixbuf/gstgdkpixbuf.h | 22 | ||||
-rw-r--r-- | ext/jpeg/gstjpeg.c | 20 | ||||
-rw-r--r-- | ext/jpeg/gstjpegdec.c | 38 | ||||
-rw-r--r-- | ext/jpeg/gstjpegdec.h | 1 | ||||
-rw-r--r-- | ext/jpeg/gstjpegenc.c | 26 | ||||
-rw-r--r-- | ext/jpeg/gstjpegenc.h | 1 | ||||
-rw-r--r-- | ext/ladspa/gstladspa.c | 18 | ||||
-rw-r--r-- | ext/libpng/gstpng.c | 23 | ||||
-rw-r--r-- | ext/libpng/gstpngenc.c | 8 | ||||
-rw-r--r-- | ext/mikmod/gstmikmod.c | 164 | ||||
-rw-r--r-- | ext/shout2/gstshout2.c | 13 | ||||
-rw-r--r-- | ext/speex/gstspeex.c | 7 | ||||
-rw-r--r-- | ext/speex/gstspeexdec.c | 4 | ||||
-rw-r--r-- | ext/speex/gstspeexenc.c | 6 |
22 files changed, 332 insertions, 244 deletions
diff --git a/ext/aalib/gstaasink.c b/ext/aalib/gstaasink.c index 6a9fbd5f..537cfd54 100644 --- a/ext/aalib/gstaasink.c +++ b/ext/aalib/gstaasink.c @@ -26,6 +26,7 @@ #include <sys/time.h> #include "gstaasink.h" +#include <gst/video/video.h> /* elementfactory information */ static GstElementDetails gst_aasink_details = { @@ -65,10 +66,11 @@ GST_PAD_TEMPLATE_FACTORY (sink_template, "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( + gst_caps_new ( "aasink_caps", - "video/raw", - "format", GST_PROPS_FOURCC (GST_STR_FOURCC ("I420")) + "video/x-raw-yuv", + GST_VIDEO_YUV_PAD_TEMPLATE_PROPS ( + GST_PROPS_FOURCC (GST_STR_FOURCC ("I420"))) ) ) diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c index da53e4d2..569a9d13 100644 --- a/ext/dv/gstdvdec.c +++ b/ext/dv/gstdvdec.c @@ -37,7 +37,7 @@ */ static GstElementDetails dvdec_details = { "DV (smpte314) decoder plugin", - "Codec/Video/Decoder/DV", + "Codec/Video/Decoder", "LGPL", "Uses libdv to decode DV video (libdv.sourceforge.net)", VERSION, @@ -77,11 +77,8 @@ GST_PAD_TEMPLATE_FACTORY (sink_temp, GST_PAD_ALWAYS, GST_CAPS_NEW ( "dv_dec_sink", - "video/dv", - "format", GST_PROPS_LIST ( - GST_PROPS_STRING ("PAL"), - GST_PROPS_STRING ("NTSC") - ) + "video/x-dv", + "systemstream", GST_PROPS_BOOLEAN (TRUE) ) ) @@ -92,36 +89,55 @@ GST_PAD_TEMPLATE_FACTORY (video_src_temp, GST_PAD_ALWAYS, GST_CAPS_NEW ( "dv_dec_src", - "video/raw", + "video/x-raw-yuv", "format", GST_PROPS_FOURCC (GST_MAKE_FOURCC ('Y','U','Y','2')), "width", GST_PROPS_INT (720), - "height", GST_PROPS_INT_RANGE (NTSC_HEIGHT, PAL_HEIGHT) + "height", GST_PROPS_LIST ( + GST_PROPS_INT (NTSC_HEIGHT), + GST_PROPS_INT (PAL_HEIGHT) + ), + "framerate", GST_PROPS_LIST ( + GST_PROPS_FLOAT (25.), + GST_PROPS_FLOAT (30/1.001) + ) ), GST_CAPS_NEW ( "dv_dec_src", - "video/raw", - "format", GST_PROPS_FOURCC(GST_MAKE_FOURCC('R','G','B',' ')), + "video/x-raw-rgb", "bpp", GST_PROPS_INT(32), "depth", GST_PROPS_INT(32), - "endianness", GST_PROPS_INT (G_LITTLE_ENDIAN), - "red_mask", GST_PROPS_INT(0x00ff0000), + "endianness", GST_PROPS_INT (G_BIG_ENDIAN), + "red_mask", GST_PROPS_INT(0x000000ff), "green_mask", GST_PROPS_INT(0x0000ff00), - "blue_mask", GST_PROPS_INT(0x000000ff), + "blue_mask", GST_PROPS_INT(0x00ff00), "width", GST_PROPS_INT (720), - "height", GST_PROPS_INT_RANGE (NTSC_HEIGHT, PAL_HEIGHT) + "height", GST_PROPS_LIST ( + GST_PROPS_INT (NTSC_HEIGHT), + GST_PROPS_INT (PAL_HEIGHT) + ), + "framerate", GST_PROPS_LIST ( + GST_PROPS_FLOAT (25.), + GST_PROPS_FLOAT (30/1.001) + ) ), GST_CAPS_NEW ( "dv_dec_src", - "video/raw", - "format", GST_PROPS_FOURCC(GST_MAKE_FOURCC('R','G','B',' ')), + "video/x-raw-rgb", "bpp", GST_PROPS_INT(24), "depth", GST_PROPS_INT(24), - "endianness", GST_PROPS_INT (G_LITTLE_ENDIAN), + "endianness", GST_PROPS_INT (G_BIG_ENDIAN), "red_mask", GST_PROPS_INT(0x0000ff), "green_mask", GST_PROPS_INT(0x00ff00), "blue_mask", GST_PROPS_INT(0xff0000), "width", GST_PROPS_INT (720), - "height", GST_PROPS_INT_RANGE (NTSC_HEIGHT, PAL_HEIGHT) + "height", GST_PROPS_LIST ( + GST_PROPS_INT (NTSC_HEIGHT), + GST_PROPS_INT (PAL_HEIGHT) + ), + "framerate", GST_PROPS_LIST ( + GST_PROPS_FLOAT (25.), + GST_PROPS_FLOAT (30/1.001) + ) ) ) @@ -131,9 +147,7 @@ GST_PAD_TEMPLATE_FACTORY ( audio_src_temp, GST_PAD_ALWAYS, GST_CAPS_NEW ( "arts_sample", - "audio/raw", - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), + "audio/x-raw-int", "depth", GST_PROPS_INT (16), "width", GST_PROPS_INT (16), "signed", GST_PROPS_BOOLEAN (TRUE), @@ -160,15 +174,15 @@ dv_type_find (GstBuffer *buf, gpointer private) format = "NTSC"; new = GST_CAPS_NEW ("dv_type_find", - "video/dv", - "format", GST_PROPS_STRING (format) + "video/x-dv", + "systemstream", GST_PROPS_BOOLEAN (TRUE) ); } return new; } static GstTypeDefinition dv_definition = { - "dv_video/dv", "video/dv", ".dv", dv_type_find + "dv_video/dv", "video/x-dv", ".dv", dv_type_find }; #define GST_TYPE_DVDEC_QUALITY (gst_dvdec_quality_get_type()) @@ -690,6 +704,7 @@ gst_dvdec_loop (GstElement *element) guint32 length, got_bytes; GstFormat format; guint64 ts; + gfloat fps; dvdec = GST_DVDEC (element); @@ -704,6 +719,7 @@ gst_dvdec_loop (GstElement *element) dvdec->PAL = dv_system_50_fields (dvdec->decoder); dvdec->framerate = (dvdec->PAL ? 2500 : 2997); + fps = (dvdec->PAL ? 25. : 30/1.001); dvdec->height = height = (dvdec->PAL ? PAL_HEIGHT : NTSC_HEIGHT); length = (dvdec->PAL ? PAL_BUFFER : NTSC_BUFFER); @@ -728,12 +744,18 @@ gst_dvdec_loop (GstElement *element) allowed = gst_pad_get_allowed_caps (dvdec->videosrcpad); /* try to fix our height */ - trylist = gst_caps_intersect (allowed, - GST_CAPS_NEW ( + trylist = gst_caps_intersect (allowed, gst_caps_append ( + GST_CAPS_NEW ( "dvdec_negotiate", - "video/raw", - "height", GST_PROPS_INT (height) - )); + "video/x-raw-yuv", + "height", GST_PROPS_INT (height), + "framerate", GST_PROPS_FLOAT (fps) + ), GST_CAPS_NEW ( + "dvdec_negotiate", + "video/x-raw-rgb", + "height", GST_PROPS_INT (height), + "framerate", GST_PROPS_FLOAT (fps) + ))); /* prepare for looping */ trylist = gst_caps_normalize (trylist); @@ -792,10 +814,8 @@ gst_dvdec_loop (GstElement *element) gst_pad_try_set_caps (dvdec->audiosrcpad, GST_CAPS_NEW ( "dvdec_audio_caps", - "audio/raw", - "format", GST_PROPS_STRING ("int"), + "audio/x-raw-int", "rate", GST_PROPS_INT (dvdec->decoder->audio->frequency), - "law", GST_PROPS_INT (0), "depth", GST_PROPS_INT (16), "width", GST_PROPS_INT (16), "signed", GST_PROPS_BOOLEAN (TRUE), @@ -1012,4 +1032,3 @@ GstPluginDesc plugin_desc = { "dvdec", plugin_init }; - diff --git a/ext/esd/esdmon.c b/ext/esd/esdmon.c index 569942db..851ffd8c 100644 --- a/ext/esd/esdmon.c +++ b/ext/esd/esdmon.c @@ -103,30 +103,27 @@ GST_PAD_TEMPLATE_FACTORY (src_factory, GST_PAD_SRC, /* type of the pad */ GST_PAD_ALWAYS, /* ALWAYS/SOMETIMES */ GST_CAPS_NEW ( - "esdmon_src8", /* the name of the caps */ - "audio/raw", /* the mime type of the caps */ + "esdmon_src", /* the name of the caps */ + "audio/x-raw-int", /* the mime type of the caps */ /* Properties follow: */ - "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 (8), - "depth", GST_PROPS_INT (8), + "signed", GST_PROPS_LIST ( + GST_PROPS_BOOLEAN (TRUE), + GST_PROPS_BOOLEAN (FALSE) + ), + "width", GST_PROPS_LIST ( + GST_PROPS_INT (8), + GST_PROPS_INT (16) + ), + "depth", GST_PROPS_LIST ( + GST_PROPS_INT (8), + GST_PROPS_INT (16) + ), "rate", GST_PROPS_INT_RANGE (8000, 96000), - "channels", GST_PROPS_LIST (GST_PROPS_INT (1), GST_PROPS_INT (2)) - ), - GST_CAPS_NEW ( - "esdmon_src16", /* the name of the caps */ - "audio/raw", /* the mime type of the caps */ - /* Properties follow: */ - "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 (16), - "depth", GST_PROPS_INT (16), - "rate", GST_PROPS_INT_RANGE (8000, 96000), - "channels", GST_PROPS_LIST (GST_PROPS_INT (1), GST_PROPS_INT (2)) + "channels", GST_PROPS_LIST ( + GST_PROPS_INT (1), + GST_PROPS_INT (2) + ) ) ); @@ -298,15 +295,14 @@ gst_esdmon_get (GstPad *pad) return NULL; } if (!GST_PAD_CAPS (pad)) { + gint sign = (esdmon->depth == 8 ? FALSE : TRUE); /* set caps on src pad */ if (gst_pad_try_set_caps (esdmon->srcpad, GST_CAPS_NEW ( "oss_src", - "audio/raw", - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), /*FIXME */ + "audio/x-raw-int", "endianness", GST_PROPS_INT (G_BYTE_ORDER), /*FIXME */ - "signed", GST_PROPS_BOOLEAN (TRUE), /*FIXME */ + "signed", GST_PROPS_BOOLEAN (sign), /*FIXME */ "width", GST_PROPS_INT (esdmon->depth), "depth", GST_PROPS_INT (esdmon->depth), "rate", GST_PROPS_INT (esdmon->frequency), diff --git a/ext/esd/esdsink.c b/ext/esd/esdsink.c index 120a2a5f..54cb2833 100644 --- a/ext/esd/esdsink.c +++ b/ext/esd/esdsink.c @@ -55,29 +55,27 @@ GST_PAD_TEMPLATE_FACTORY (sink_factory, GST_PAD_SINK, /* type of the pad */ GST_PAD_ALWAYS, /* ALWAYS/SOMETIMES */ GST_CAPS_NEW ( - "esdsink_sink8", /* the name of the caps */ - "audio/raw", /* the mime type of the caps */ + "esdsink_sink", /* the name of the caps */ + "audio/x-raw-int", /* the mime type of the caps */ /* Properties follow: */ - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "width", GST_PROPS_INT (8), - "depth", GST_PROPS_INT (8), + "signed", GST_PROPS_LIST ( + GST_PROPS_BOOLEAN (TRUE), + GST_PROPS_BOOLEAN (FALSE) + ), + "width", GST_PROPS_LIST ( + GST_PROPS_INT (8), + GST_PROPS_INT (16) + ), + "depth", GST_PROPS_LIST ( + GST_PROPS_INT (8), + GST_PROPS_INT (16) + ), "rate", GST_PROPS_INT_RANGE (8000, 96000), - "channels", GST_PROPS_LIST (GST_PROPS_INT (1), GST_PROPS_INT (2)) - ), - GST_CAPS_NEW ( - "esdsink_sink16", /* the name of the caps */ - "audio/raw", /* the mime type of the caps */ - /* Properties follow: */ - "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 (16), - "depth", GST_PROPS_INT (16), - "rate", GST_PROPS_INT_RANGE (8000, 96000), - "channels", GST_PROPS_LIST (GST_PROPS_INT (1), GST_PROPS_INT (2)) + "channels", GST_PROPS_LIST ( + GST_PROPS_INT (1), + GST_PROPS_INT (2) + ) ) ); @@ -173,6 +171,7 @@ static GstPadLinkReturn gst_esdsink_sinkconnect (GstPad *pad, GstCaps *caps) { GstEsdsink *esdsink; + gboolean sign; esdsink = GST_ESDSINK (gst_pad_get_parent (pad)); @@ -180,9 +179,16 @@ gst_esdsink_sinkconnect (GstPad *pad, GstCaps *caps) return GST_PAD_LINK_DELAYED; gst_caps_get_int (caps, "depth", &esdsink->depth); + gst_caps_get_int (caps, "signed", &sign); gst_caps_get_int (caps, "channels", &esdsink->channels); gst_caps_get_int (caps, "rate", &esdsink->frequency); + /* only u8/s16 */ + if ((sign == FALSE && esdsink->depth != 8) || + (sign == TRUE && esdsink->depth != 16)) { + return GST_PAD_LINK_REFUSED; + } + gst_esdsink_close_audio (esdsink); if (gst_esdsink_open_audio (esdsink)) { esdsink->negotiated = TRUE; diff --git a/ext/flac/gstflac.c b/ext/flac/gstflac.c index e955c2cc..af10d794 100644 --- a/ext/flac/gstflac.c +++ b/ext/flac/gstflac.c @@ -37,8 +37,11 @@ flac_caps_factory (void) return gst_caps_new ( "flac_flac", - "application/x-flac", - NULL); + "audio/x-flac", + /*gst_props_new ( + "rate", GST_PROPS_INT_RANGE (11025, 48000), + "channels", GST_PROPS_INT_RANGE (1, 2), + NULL)*/ NULL); } static GstCaps* @@ -47,10 +50,8 @@ raw_caps_factory (void) return gst_caps_new ( "flac_raw", - "audio/raw", + "audio/x-raw-int", 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 (16), @@ -61,8 +62,8 @@ raw_caps_factory (void) } static GstTypeDefinition flacdefinition = { - "flac_application/x-flac", - "application/x-flac", + "flac_audio/x-flac", + "audio/x-flac", ".flac", flac_type_find, }; @@ -75,7 +76,7 @@ flac_type_find (GstBuffer *buf, gpointer private) if (head != 0x664C6143) return NULL; - return gst_caps_new ("flac_type_find", "application/x-flac", NULL); + return gst_caps_new ("flac_type_find", "audio/x-flac", NULL); } diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index b439f044..c11be9f6 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -460,9 +460,7 @@ gst_flacdec_write (const FLAC__SeekableStreamDecoder *decoder, gst_pad_try_set_caps (flacdec->srcpad, GST_CAPS_NEW ( "flac_caps", - "audio/raw", - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), + "audio/x-raw-int", "endianness", GST_PROPS_INT (G_BYTE_ORDER), "signed", GST_PROPS_BOOLEAN (TRUE), "width", GST_PROPS_INT (depth), diff --git a/ext/flac/gstflacenc.c b/ext/flac/gstflacenc.c index aa1a0195..ef9e5386 100644 --- a/ext/flac/gstflacenc.c +++ b/ext/flac/gstflacenc.c @@ -325,6 +325,7 @@ gst_flacenc_dispose (GObject *object) static GstPadLinkReturn gst_flacenc_sinkconnect (GstPad *pad, GstCaps *caps) { + GstPadLinkReturn ret; FlacEnc *flacenc; flacenc = GST_FLACENC (gst_pad_get_parent (pad)); @@ -336,6 +337,15 @@ gst_flacenc_sinkconnect (GstPad *pad, GstCaps *caps) gst_caps_get_int (caps, "depth", &flacenc->depth); gst_caps_get_int (caps, "rate", &flacenc->sample_rate); + caps = GST_CAPS_NEW ("flacenc_srccaps", + "audio/x-flac", + "channels", GST_PROPS_INT (flacenc->channels), + "rate", GST_PROPS_INT (flacenc->sample_rate)); + ret = gst_pad_try_set_caps (flacenc->srcpad, caps); + if (ret <= 0) { + return ret; + } + FLAC__seekable_stream_encoder_set_bits_per_sample (flacenc->encoder, flacenc->depth); FLAC__seekable_stream_encoder_set_sample_rate (flacenc->encoder, @@ -345,7 +355,7 @@ gst_flacenc_sinkconnect (GstPad *pad, GstCaps *caps) flacenc->negotiated = TRUE; - return GST_PAD_LINK_OK; + return ret; } static gboolean diff --git a/ext/gdk_pixbuf/gstgdkpixbuf.c b/ext/gdk_pixbuf/gstgdkpixbuf.c index 667d5704..e9e12897 100644 --- a/ext/gdk_pixbuf/gstgdkpixbuf.c +++ b/ext/gdk_pixbuf/gstgdkpixbuf.c @@ -81,10 +81,12 @@ GST_PAD_TEMPLATE_FACTORY (gst_gdk_pixbuf_src_factory, GST_PAD_ALWAYS, GST_CAPS_NEW( "gdk_pixbuf_src", - "video/raw", - "format", GST_PROPS_FOURCC(GST_MAKE_FOURCC('R','G','B',' ')), + "video/x-raw-rgb", "width", GST_PROPS_INT_RANGE(1,INT_MAX), "height", GST_PROPS_INT_RANGE(1,INT_MAX), + /* well, it's needed for connectivity but this + * doesn't really make sense... */ + "framerate", GST_PROPS_FLOAT_RANGE(0, G_MAXFLOAT), "bpp", GST_PROPS_INT(32), "depth", GST_PROPS_INT(24), "endianness", GST_PROPS_INT(G_BIG_ENDIAN), @@ -268,6 +270,7 @@ gst_gdk_pixbuf_chain (GstPad *pad, GstBuffer *buf) caps = gst_pad_get_caps(filter->srcpad); gst_caps_set(caps, "width", GST_PROPS_INT(filter->width)); gst_caps_set(caps, "height", GST_PROPS_INT(filter->height)); + gst_caps_set(caps, "framerate", GST_PROPS_FLOAT(0.)); gst_pad_try_set_caps(filter->srcpad, caps); } diff --git a/ext/gdk_pixbuf/gstgdkpixbuf.h b/ext/gdk_pixbuf/gstgdkpixbuf.h index 8c6486ca..6cfcdbc5 100644 --- a/ext/gdk_pixbuf/gstgdkpixbuf.h +++ b/ext/gdk_pixbuf/gstgdkpixbuf.h @@ -1,5 +1,23 @@ -/* - * gstplugin.h: sample header file for plug-in +/* + * gstgdkpixbuf.h + * GStreamer + * Copyright (C) 1999-2001 Erik Walthinsen <omega@cse.ogi.edu> + * Copyright (C) 2003 David A. Schleef <ds@schleef.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. */ #ifndef __GST_GDK_PIXBUF_H__ diff --git a/ext/jpeg/gstjpeg.c b/ext/jpeg/gstjpeg.c index 96c3b584..48cfaaf5 100644 --- a/ext/jpeg/gstjpeg.c +++ b/ext/jpeg/gstjpeg.c @@ -20,6 +20,7 @@ #include "gstjpegdec.h" #include "gstjpegenc.h" +#include <gst/video/video.h> /* elementfactory information */ extern GstElementDetails gst_jpegdec_details; @@ -34,8 +35,12 @@ jpeg_caps_factory (void) return gst_caps_new ( "jpeg_jpeg", - "video/jpeg", - NULL); + "video/x-jpeg", + gst_props_new ( + "width", GST_PROPS_INT_RANGE (16, 4096), + "height", GST_PROPS_INT_RANGE (16, 4096), + "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT), + NULL)); } static GstCaps* @@ -44,14 +49,9 @@ raw_caps_factory (void) return gst_caps_new ( "jpeg_raw", - "video/raw", - gst_props_new ( - "format", GST_PROPS_LIST ( - GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')) - ), - "width", GST_PROPS_INT_RANGE (16, 4096), - "height", GST_PROPS_INT_RANGE (16, 4096), - NULL)); + "video/x-raw-yuv", + GST_VIDEO_YUV_PAD_TEMPLATE_PROPS ( + GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')))); } static gboolean diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c index 0e499043..a8ee30cd 100644 --- a/ext/jpeg/gstjpegdec.c +++ b/ext/jpeg/gstjpegdec.c @@ -54,6 +54,8 @@ static void gst_jpegdec_class_init (GstJpegDec *klass); static void gst_jpegdec_init (GstJpegDec *jpegdec); static void gst_jpegdec_chain (GstPad *pad, GstBuffer *buf); +static GstPadLinkReturn + gst_jpegdec_link (GstPad *pad, GstCaps *caps); static GstElementClass *parent_class = NULL; /*static guint gst_jpegdec_signals[LAST_SIGNAL] = { 0 }; */ @@ -127,6 +129,7 @@ gst_jpegdec_init (GstJpegDec *jpegdec) jpegdec->sinkpad = gst_pad_new_from_template (jpegdec_sink_template, "sink"); gst_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->sinkpad); 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_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->srcpad); @@ -157,6 +160,31 @@ gst_jpegdec_init (GstJpegDec *jpegdec) } +static GstPadLinkReturn +gst_jpegdec_link (GstPad *pad, GstCaps *caps) +{ + GstJpegDec *jpegdec = GST_JPEGDEC (gst_pad_get_parent (pad)); + + if (!GST_CAPS_IS_FIXED (caps)) + return GST_PAD_LINK_DELAYED; + + gst_caps_get (caps, + "framerate", &jpegdec->fps, + "width", &jpegdec->width, + "height", &jpegdec->height, + NULL); + + caps = GST_CAPS_NEW ("jpegdec_srccaps", + "video/x-raw-yuv", + "format", GST_PROPS_FOURCC ( + GST_MAKE_FOURCC ('I','4','2','0')), + "width", GST_PROPS_INT (jpegdec->width), + "height", GST_PROPS_INT (jpegdec->height), + "framerate", GST_PROPS_FLOAT (jpegdec->fps)); + + return gst_pad_try_set_caps (jpegdec->srcpad, caps); +} + /* shamelessly ripped from jpegutils.c in mjpegtools */ static void add_huff_table (j_decompress_ptr dinfo, JHUFF_TBL **htblptr, @@ -345,10 +373,12 @@ gst_jpegdec_chain (GstPad *pad, GstBuffer *buf) gst_pad_try_set_caps (jpegdec->srcpad, GST_CAPS_NEW ( "jpegdec_caps", - "video/raw", - "format", GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')), - "width", GST_PROPS_INT (width), - "height", GST_PROPS_INT (height) + "video/x-raw-yuv", + "format", GST_PROPS_FOURCC ( + GST_MAKE_FOURCC ('I','4','2','0')), + "width", GST_PROPS_INT (width), + "height", GST_PROPS_INT (height), + "framerate", GST_PROPS_FLOAT (jpegdec->fps) )); } diff --git a/ext/jpeg/gstjpegdec.h b/ext/jpeg/gstjpegdec.h index c497f8e5..9607b01b 100644 --- a/ext/jpeg/gstjpegdec.h +++ b/ext/jpeg/gstjpegdec.h @@ -64,6 +64,7 @@ struct _GstJpegDec { gint format; gint width; gint height; + gfloat fps; /* the size of the output buffer */ gint outsize; /* the jpeg line buffer */ diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c index b2a8fc1d..ccd5bbce 100644 --- a/ext/jpeg/gstjpegenc.c +++ b/ext/jpeg/gstjpegenc.c @@ -52,6 +52,8 @@ static void gst_jpegenc_class_init (GstJpegEnc *klass); static void gst_jpegenc_init (GstJpegEnc *jpegenc); static void gst_jpegenc_chain (GstPad *pad,GstBuffer *buf); +static GstPadLinkReturn gst_jpegenc_link (GstPad *pad, GstCaps *caps); + static GstBuffer *gst_jpegenc_get (GstPad *pad); static void gst_jpegenc_resync (GstJpegEnc *jpegenc); @@ -123,6 +125,7 @@ gst_jpegenc_init (GstJpegEnc *jpegenc) jpegenc->sinkpad = gst_pad_new("sink",GST_PAD_SINK); gst_element_add_pad(GST_ELEMENT(jpegenc),jpegenc->sinkpad); gst_pad_set_chain_function(jpegenc->sinkpad,gst_jpegenc_chain); + gst_pad_set_link_function(jpegenc->sinkpad, gst_jpegenc_link); gst_pad_set_get_function(jpegenc->sinkpad,gst_jpegenc_get); jpegenc->srcpad = gst_pad_new("src",GST_PAD_SRC); gst_element_add_pad(GST_ELEMENT(jpegenc),jpegenc->srcpad); @@ -151,6 +154,29 @@ gst_jpegenc_init (GstJpegEnc *jpegenc) } +static GstPadLinkReturn +gst_jpegenc_link (GstPad *pad, GstCaps *caps) +{ + GstJpegEnc *jpegenc = GST_JPEGENC (gst_pad_get_parent (pad)); + + if (!GST_CAPS_IS_FIXED (caps)) + return GST_PAD_LINK_DELAYED; + + gst_caps_get (caps, + "framerate", &jpegenc->fps, + "width", &jpegenc->width, + "height", &jpegenc->height, + NULL); + + caps = GST_CAPS_NEW ("jpegdec_srccaps", + "video/x-jpeg", + "width", GST_PROPS_INT (jpegenc->width), + "height", GST_PROPS_INT (jpegenc->height), + "framerate", GST_PROPS_FLOAT (jpegenc->fps)); + + return gst_pad_try_set_caps (jpegenc->srcpad, caps); +} + static void gst_jpegenc_resync (GstJpegEnc *jpegenc) { diff --git a/ext/jpeg/gstjpegenc.h b/ext/jpeg/gstjpegenc.h index a31b3145..9f03e8c4 100644 --- a/ext/jpeg/gstjpegenc.h +++ b/ext/jpeg/gstjpegenc.h @@ -58,6 +58,7 @@ struct _GstJpegEnc { gint format; gint width; gint height; + gfloat fps; /* the video buffer */ gint bufsize; GstBuffer *buffer; diff --git a/ext/ladspa/gstladspa.c b/ext/ladspa/gstladspa.c index 55c0186d..ddaa7970 100644 --- a/ext/ladspa/gstladspa.c +++ b/ext/ladspa/gstladspa.c @@ -33,10 +33,10 @@ GST_PAD_TEMPLATE_FACTORY (ladspa_sink_factory, GST_PAD_REQUEST, GST_CAPS_NEW ( "ladspa_sink", - "audio/raw", + "audio/x-raw-float", + "width", GST_PROPS_INT (32), + "endianness", GST_PROPS_INT (G_BYTE_ORDER), "rate", GST_PROPS_INT_RANGE (4000, 96000), - "format", GST_PROPS_STRING ("float"), - "layout", GST_PROPS_STRING ("gfloat"), "intercept", GST_PROPS_FLOAT(0.0), "slope", GST_PROPS_FLOAT(1.0), "channels", GST_PROPS_INT (1) @@ -49,10 +49,10 @@ GST_PAD_TEMPLATE_FACTORY (ladspa_src_factory, GST_PAD_REQUEST, GST_CAPS_NEW ( "ladspa_src", - "audio/raw", + "audio/x-raw-float", + "width", GST_PROPS_INT (32), + "endianness", GST_PROPS_INT (G_BYTE_ORDER), "rate", GST_PROPS_INT_RANGE (4000, 96000), - "format", GST_PROPS_STRING ("float"), - "layout", GST_PROPS_STRING ("gfloat"), "intercept", GST_PROPS_FLOAT (0.0), "slope", GST_PROPS_FLOAT (1.0), "channels", GST_PROPS_INT (1) @@ -542,10 +542,10 @@ gst_ladspa_force_src_caps(GstLADSPA *ladspa, GstPad *pad) GST_DEBUG ("forcing caps with rate %d", ladspa->samplerate); gst_pad_try_set_caps (pad, gst_caps_new ( "ladspa_src_caps", - "audio/raw", + "audio/x-raw-float", gst_props_new ( - "format", GST_PROPS_STRING ("float"), - "layout", GST_PROPS_STRING ("gfloat"), + "width", GST_PROPS_INT (32), + "endianness", GST_PROPS_INT (G_BYTE_ORDER), "intercept", GST_PROPS_FLOAT(0.0), "slope", GST_PROPS_FLOAT(1.0), "rate", GST_PROPS_INT (ladspa->samplerate), diff --git a/ext/libpng/gstpng.c b/ext/libpng/gstpng.c index 5a5da081..f3ac003c 100644 --- a/ext/libpng/gstpng.c +++ b/ext/libpng/gstpng.c @@ -18,6 +18,7 @@ #include <string.h> #include <gst/gst.h> +#include <gst/video/video.h> #include "gstpngenc.h" @@ -26,7 +27,13 @@ extern GstElementDetails gst_pngenc_details; static GstCaps* png_caps_factory (void) { - return gst_caps_new ( "png_png", "video/png", NULL); + return gst_caps_new ( "png_png", + "video/x-png", + gst_props_new ( + "width", GST_PROPS_INT_RANGE (16, 4096), + "height", GST_PROPS_INT_RANGE (16, 4096), + "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT), + NULL)); } @@ -34,17 +41,9 @@ static GstCaps* raw_caps_factory (void) { return gst_caps_new ( "png_raw", - "video/raw", - gst_props_new ( - "format", GST_PROPS_FOURCC (GST_STR_FOURCC ("RGB ")), - "bpp", GST_PROPS_INT (24), - "red_mask", GST_PROPS_INT (0xff), - "green_mask", GST_PROPS_INT (0xff00), - "blue_mask", GST_PROPS_INT (0xff0000), - "width", GST_PROPS_INT_RANGE (16, 4096), - "height", GST_PROPS_INT_RANGE (16, 4096), - NULL ) - ); + "video/x-raw-rgb", + GST_VIDEO_RGB_PAD_TEMPLATE_PROPS_24 + ); } static gboolean diff --git a/ext/libpng/gstpngenc.c b/ext/libpng/gstpngenc.c index 9cd39cc3..3c035d27 100644 --- a/ext/libpng/gstpngenc.c +++ b/ext/libpng/gstpngenc.c @@ -107,6 +107,7 @@ static GstPadLinkReturn gst_pngenc_sinklink (GstPad *pad, GstCaps *caps) { GstPngEnc *pngenc; + gfloat fps; pngenc = GST_PNGENC (gst_pad_get_parent (pad)); @@ -115,8 +116,15 @@ gst_pngenc_sinklink (GstPad *pad, GstCaps *caps) gst_caps_get_int (caps, "width", &pngenc->width); gst_caps_get_int (caps, "height", &pngenc->height); + gst_caps_get_float (caps, "framerate", &fps); gst_caps_get_int (caps, "bpp", &pngenc->bpp); + caps = GST_CAPS_NEW ("png_src", + "video/x-png", + "framerate", GST_PROPS_FLOAT (fps), + "width", GST_PROPS_INT (pngenc->width), + "height", GST_PROPS_INT (pngenc->height)); + return gst_pad_try_set_caps (pngenc->srcpad, caps); } diff --git a/ext/mikmod/gstmikmod.c b/ext/mikmod/gstmikmod.c index 40bf3f81..6ef507c2 100644 --- a/ext/mikmod/gstmikmod.c +++ b/ext/mikmod/gstmikmod.c @@ -52,15 +52,12 @@ enum { ARG_REVERB, ARG_SNDFXVOLUME, ARG_VOLUME, - ARG_MIXFREQ, ARG_INTERP, ARG_REVERSE, ARG_SURROUND, - ARG_16BIT, ARG_HQMIXER, ARG_SOFT_MUSIC, - ARG_SOFT_SNDFX, - ARG_STEREO + ARG_SOFT_SNDFX }; @@ -74,33 +71,11 @@ mikmod_src_factory (void) "src", GST_PAD_SRC, GST_PAD_ALWAYS, - gst_caps_new ( /* use16bit = TRUE */ - "mikmod_src", - "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 (16), - "depth", GST_PROPS_INT (16), - "rate", GST_PROPS_INT_RANGE (8000, 48000), - "channels", GST_PROPS_INT_RANGE (1, 2), - NULL)), - gst_caps_new ( /* use16bit = FALSE */ + gst_caps_new ( "mikmod_src", - "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 (FALSE), - "width", GST_PROPS_INT (8), - "depth", GST_PROPS_INT (8), - "rate", GST_PROPS_INT_RANGE (8000, 48000), - "channels", GST_PROPS_INT_RANGE (1, 2), - NULL)), - NULL); + "audio/x-raw-int", + GST_AUDIO_INT_PAD_TEMPLATE_PROPS + ), NULL); } return template; } @@ -118,7 +93,7 @@ mikmod_sink_factory (void) GST_PAD_ALWAYS, gst_caps_new ( "mikmod_sink", - "audio/mod", + "audio/x-mod", NULL),NULL ); } @@ -130,6 +105,7 @@ static void gst_mikmod_class_init (GstMikModClass *klass); static void gst_mikmod_init (GstMikMod *filter); static void gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamSpec *pspec ); static void gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *pspec ); +static GstPadLinkReturn gst_mikmod_srclink (GstPad *pad, GstCaps *caps); static void gst_mikmod_loop (GstElement *element); static gboolean gst_mikmod_setup (GstMikMod *mikmod); static GstElementStateReturn gst_mikmod_change_state (GstElement *element); @@ -138,25 +114,6 @@ static GstElementStateReturn gst_mikmod_change_state (GstElement *element); static GstElementClass *parent_class = NULL; -#define GST_TYPE_MIKMOD_MIXFREQ (gst_mikmod_mixfreq_get_type()) - -static GType -gst_mikmod_mixfreq_get_type (void) -{ - static GType mikmod_mixfreq_type = 0; - static GEnumValue mikmod_mixfreq[] = { - { 0, "8000", "8000 Hz" }, - { 1, "11025", "11025 Hz" }, - { 2, "22100", "22100 Hz" }, - { 3, "44100", "44100 Hz" }, - { 0, NULL, NULL }, - }; - if (! mikmod_mixfreq_type ) { - mikmod_mixfreq_type = g_enum_register_static ("GstMikmodmixfreq", mikmod_mixfreq); - } - return mikmod_mixfreq_type; -} - GType gst_mikmod_get_type(void) { static GType mikmod_type = 0; @@ -211,9 +168,7 @@ gst_mikmod_class_init (GstMikModClass *klass) g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VOLUME, g_param_spec_int("volume", "volume", "volume", 0, 128, 96, G_PARAM_READWRITE )); - g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MIXFREQ, - g_param_spec_enum("mixfreq", "mixfreq", "mixfreq", - GST_TYPE_MIKMOD_MIXFREQ, 3,G_PARAM_READWRITE )); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_INTERP, g_param_spec_boolean("interp", "interp", "interp", FALSE, G_PARAM_READWRITE )); @@ -223,9 +178,6 @@ gst_mikmod_class_init (GstMikModClass *klass) g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SURROUND, g_param_spec_boolean("surround", "surround", "surround", TRUE, G_PARAM_READWRITE )); - g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_16BIT, - g_param_spec_boolean("use16bit", "use16bit", "use16bit", - TRUE, G_PARAM_READWRITE )); g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HQMIXER, g_param_spec_boolean("hqmixer", "hqmixer", "hqmixer", FALSE, G_PARAM_READWRITE )); @@ -235,9 +187,6 @@ gst_mikmod_class_init (GstMikModClass *klass) g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SOFT_SNDFX, g_param_spec_boolean("soft_sndfx", "soft_sndfx", "soft_sndfx", TRUE, G_PARAM_READWRITE )); - g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_STEREO, - g_param_spec_boolean("stereo", "stereo", "stereo", - TRUE, G_PARAM_READWRITE )); gobject_class->set_property = gst_mikmod_set_property; @@ -255,6 +204,7 @@ gst_mikmod_init (GstMikMod *filter) gst_element_add_pad(GST_ELEMENT(filter),filter->sinkpad); gst_element_add_pad(GST_ELEMENT(filter),filter->srcpad); + gst_pad_set_link_function (filter->srcpad, gst_mikmod_srclink); gst_element_set_loop_function (GST_ELEMENT (filter), gst_mikmod_loop); @@ -276,12 +226,62 @@ gst_mikmod_init (GstMikMod *filter) } +static GstPadLinkReturn +gst_mikmod_negotiate (GstMikMod *mikmod) +{ + gint width, sign; + + if ( mikmod->_16bit ) { + width = 16; + sign = TRUE; + } else { + width = 8; + sign = FALSE; + } + + return gst_pad_try_set_caps (mikmod->srcpad, + GST_CAPS_NEW ( + "mikmod_src", + "audio/x-raw-int", + "endianness", GST_PROPS_INT (G_BYTE_ORDER), + "signed", GST_PROPS_BOOLEAN (sign), + "width", GST_PROPS_INT (width), + "depth", GST_PROPS_INT (width), + "rate", GST_PROPS_INT (mikmod->mixfreq), + "channels", GST_PROPS_INT (mikmod->stereo ? 2 : 1))); +} + + +static GstPadLinkReturn +gst_mikmod_srclink (GstPad *pad, GstCaps *caps) +{ + GstMikMod *filter; + + filter = GST_MIKMOD (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); + filter->_16bit = (depth == 16); + } + if (gst_caps_has_property_typed (caps, "channels", GST_PROPS_INT_TYPE)) { + gint channels; + gst_caps_get_int (caps, "channels", &channels); + filter->stereo = (channels == 2); + } + if (gst_caps_has_property_typed (caps, "rate", GST_PROPS_INT_TYPE)) { + gst_caps_get_int (caps, "rate", &filter->mixfreq); + } + + return gst_mikmod_negotiate(filter); +} + + static void gst_mikmod_loop (GstElement *element) { GstMikMod *mikmod; GstBuffer *buffer_in; - gint width, sign; g_return_if_fail (element != NULL); g_return_if_fail (GST_IS_MIKMOD (element)); @@ -308,14 +308,13 @@ gst_mikmod_loop (GstElement *element) } } - if ( mikmod->_16bit ) { - width = 16; - sign = TRUE; - } else { - width = 8; - sign = FALSE; + if (!GST_PAD_CAPS (mikmod->srcpad)) { + if (gst_mikmod_negotiate (mikmod) <= 0) { + gst_element_error (GST_ELEMENT (mikmod), + "Failed to negotiate with next element in mikmod"); + return; + } } - gst_mikmod_setup( mikmod ); MikMod_RegisterDriver(&drv_gst); @@ -330,19 +329,6 @@ gst_mikmod_loop (GstElement *element) if ( ! Player_Active() ) Player_Start(module); - gst_pad_try_set_caps (mikmod->srcpad, - GST_CAPS_NEW ( - "mikmod_src", - "audio/raw", - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), - "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "signed", GST_PROPS_BOOLEAN (sign), - "width", GST_PROPS_INT (width), - "depth", GST_PROPS_INT (width), - "rate", GST_PROPS_INT (mikmod->mixfreq), - "channels", GST_PROPS_INT (2))); - do { if ( Player_Active() ) { @@ -482,9 +468,6 @@ gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamS case ARG_VOLUME: filter->volume = g_value_get_int (value); break; - case ARG_MIXFREQ: - filter->mixfreq = g_value_get_enum (value); - break; case ARG_INTERP: filter->interp = g_value_get_boolean (value); break; @@ -494,9 +477,6 @@ gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamS case ARG_SURROUND: filter->surround = g_value_get_boolean (value); break; - case ARG_16BIT: - filter->_16bit = g_value_get_boolean (value); - break; case ARG_HQMIXER: filter->hqmixer = g_value_get_boolean (value); break; @@ -506,9 +486,6 @@ gst_mikmod_set_property (GObject *object, guint id, const GValue *value, GParamS case ARG_SOFT_SNDFX: filter->soft_sndfx = g_value_get_boolean (value); break; - case ARG_STEREO: - filter->stereo = g_value_get_boolean (value); - break; default: break; } @@ -539,9 +516,6 @@ gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *p case ARG_VOLUME: g_value_set_int (value, filter->volume); break; - case ARG_MIXFREQ: - g_value_set_enum (value, filter->mixfreq); - break; case ARG_INTERP: g_value_set_boolean (value, filter->interp); break; @@ -551,9 +525,6 @@ gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *p case ARG_SURROUND: g_value_set_boolean (value, filter->surround); break; - case ARG_16BIT: - g_value_set_boolean (value, filter->_16bit); - break; case ARG_HQMIXER: g_value_set_boolean (value, filter->hqmixer); break; @@ -563,9 +534,6 @@ gst_mikmod_get_property (GObject *object, guint id, GValue *value, GParamSpec *p case ARG_SOFT_SNDFX: g_value_set_boolean (value, filter->soft_sndfx); break; - case ARG_STEREO: - g_value_set_boolean (value, filter->stereo); - break; default: break; } diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c index 8e4bcce7..b7d01c74 100644 --- a/ext/shout2/gstshout2.c +++ b/ext/shout2/gstshout2.c @@ -71,12 +71,15 @@ sink_template_factory (void) GST_PAD_ALWAYS, gst_caps_new ( "shout2send_sink", - "application/x-ogg", + "application/ogg", NULL), gst_caps_new ( "shout2send_sink", - "audio/x-mp3", - NULL), + "audio/mpeg", + gst_props_new ( + "layer", GST_PROPS_INT_RANGE (1, 3), + NULL + )), NULL); } @@ -362,13 +365,13 @@ gst_shout2send_connect (GstPad *pad, GstCaps *caps) { - if (!strcmp(gst_caps_get_mime (caps), "audio/x-mp3")) + if (!strcmp(gst_caps_get_mime (caps), "audio/mpeg")) { audio_format = SHOUT_FORMAT_MP3; return GST_PAD_LINK_OK; } - if (!strcmp(gst_caps_get_mime (caps), "application/x-ogg")) + if (!strcmp(gst_caps_get_mime (caps), "application/ogg")) { audio_format = SHOUT_FORMAT_VORBIS; return GST_PAD_LINK_OK; diff --git a/ext/speex/gstspeex.c b/ext/speex/gstspeex.c index f167749b..518e392c 100644 --- a/ext/speex/gstspeex.c +++ b/ext/speex/gstspeex.c @@ -32,16 +32,15 @@ GST_CAPS_FACTORY (speex_caps_factory, GST_CAPS_NEW ( "speex_speex", "audio/x-speex", - "rate", GST_PROPS_INT_RANGE (1000, 48000) + "rate", GST_PROPS_INT_RANGE (1000, 48000), + "channels", GST_PROPS_INT (1) ) ) GST_CAPS_FACTORY (raw_caps_factory, GST_CAPS_NEW ( "speex_raw", - "audio/raw", - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), + "audio/x-raw-int", "endianness", GST_PROPS_INT (G_BYTE_ORDER), "signed", GST_PROPS_BOOLEAN (TRUE), "width", GST_PROPS_INT (16), diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c index 3d92a086..93c1782c 100644 --- a/ext/speex/gstspeexdec.c +++ b/ext/speex/gstspeexdec.c @@ -119,9 +119,7 @@ gst_speexdec_sinkconnect (GstPad *pad, GstCaps *caps) if (gst_pad_try_set_caps (speexdec->srcpad, GST_CAPS_NEW ( "speex_raw", - "audio/raw", - "format", GST_PROPS_STRING ("int"), - "law", GST_PROPS_INT (0), + "audio/x-raw-int", "endianness", GST_PROPS_INT (G_BYTE_ORDER), "signed", GST_PROPS_BOOLEAN (TRUE), "width", GST_PROPS_INT (16), diff --git a/ext/speex/gstspeexenc.c b/ext/speex/gstspeexenc.c index b9e06596..19e40736 100644 --- a/ext/speex/gstspeexenc.c +++ b/ext/speex/gstspeexenc.c @@ -131,7 +131,8 @@ gst_speexenc_sinkconnect (GstPad *pad, GstCaps *caps) if (gst_pad_try_set_caps (speexenc->srcpad, GST_CAPS_NEW ( "speex_speex", "audio/x-speex", - "rate", GST_PROPS_INT (speexenc->rate) + "rate", GST_PROPS_INT (speexenc->rate), + "channels", GST_PROPS_INT (1) ))) { speex_init_header(&speexenc->header, speexenc->rate, 1, speexenc->mode); @@ -170,7 +171,8 @@ gst_speexenc_chain (GstPad *pad, GstBuffer *buf) GST_CAPS_NEW ( "speex_enc", "audio/x-speex", - "rate", GST_PROPS_INT (speexenc->rate) + "rate", GST_PROPS_INT (speexenc->rate), + "channels", GST_PROPS_INT (1) ))) { gst_element_error (GST_ELEMENT (speexenc), "could not negotiate"); |