From 9aecda0d08a558cbdd5da235d74e470dea734a86 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Mon, 10 Nov 2008 16:36:09 +0000 Subject: [PATCH] gst/qtdemux/qtdemux.c: Refactor some raw audio caps building, and handle >16-bit cases. Original commit message from CVS: * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak), (qtdemux_video_caps), (qtdemux_audio_caps): Refactor some raw audio caps building, and handle >16-bit cases. Fix/replace building caps from a string description. --- ChangeLog | 7 ++ gst/qtdemux/qtdemux.c | 225 +++++++++++++++++++++--------------------- 2 files changed, 121 insertions(+), 111 deletions(-) diff --git a/ChangeLog b/ChangeLog index f6bf44fda2..b1b6c3b15b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-10 Mark Nauwelaerts + + * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak), + (qtdemux_video_caps), (qtdemux_audio_caps): + Refactor some raw audio caps building, and handle >16-bit cases. + Fix/replace building caps from a string description. + 2008-11-10 Thomas Vander Stichele * gst/audiofx/audiowsincband.c: diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index f0b89d502f..6d371931d8 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -302,10 +302,10 @@ static void gst_qtdemux_handle_esds (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * esds, GstTagList * list); static GstCaps *qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 fourcc, const guint8 * stsd_data, - const gchar ** codec_name); + gchar ** codec_name); static GstCaps *qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 fourcc, const guint8 * data, int len, - const gchar ** codec_name); + gchar ** codec_name); GType gst_qtdemux_get_type (void) @@ -3276,7 +3276,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GNode *esds; QtDemuxStream *stream; GstTagList *list = NULL; - const gchar *codec = NULL; + gchar *codec = NULL; const guint8 *stsd_data; guint32 version; @@ -3394,6 +3394,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) list = gst_tag_list_new (); gst_tag_list_add (list, GST_TAG_MERGE_REPLACE, GST_TAG_VIDEO_CODEC, codec, NULL); + g_free (codec); + codec = NULL; } esds = NULL; @@ -3705,6 +3707,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) list = gst_tag_list_new (); gst_tag_list_add (list, GST_TAG_MERGE_REPLACE, GST_TAG_AUDIO_CODEC, codec, NULL); + g_free (codec); + codec = NULL; } mp4a = qtdemux_tree_get_child_by_type (stsd, FOURCC_mp4a); @@ -4516,13 +4520,13 @@ gst_qtdemux_handle_esds (GstQTDemux * qtdemux, QtDemuxStream * stream, #define _codec(name) \ do { \ if (codec_name) { \ - *codec_name = name; \ + *codec_name = g_strdup (name); \ } \ } while (0) static GstCaps * qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, - guint32 fourcc, const guint8 * stsd_data, const gchar ** codec_name) + guint32 fourcc, const guint8 * stsd_data, gchar ** codec_name) { GstCaps *caps; const GstStructure *s; @@ -4531,21 +4535,21 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, switch (fourcc) { case GST_MAKE_FOURCC ('p', 'n', 'g', ' '): _codec ("PNG still images"); - caps = gst_caps_from_string ("image/png"); + caps = gst_caps_new_simple ("image/png", NULL); break; case GST_MAKE_FOURCC ('j', 'p', 'e', 'g'): _codec ("JPEG still images"); - caps = gst_caps_from_string ("image/jpeg"); + caps = gst_caps_new_simple ("image/jpeg", NULL); break; case GST_MAKE_FOURCC ('m', 'j', 'p', 'a'): case GST_MAKE_FOURCC ('A', 'V', 'D', 'J'): case GST_MAKE_FOURCC ('M', 'J', 'P', 'G'): _codec ("Motion-JPEG"); - caps = gst_caps_from_string ("image/jpeg"); + caps = gst_caps_new_simple ("image/jpeg", NULL); break; case GST_MAKE_FOURCC ('m', 'j', 'p', 'b'): _codec ("Motion-JPEG format B"); - caps = gst_caps_from_string ("video/x-mjpeg-b"); + caps = gst_caps_new_simple ("video/x-mjpeg-b", NULL); break; case GST_MAKE_FOURCC ('m', 'j', 'p', '2'): _codec ("JPEG-2000"); @@ -4555,12 +4559,14 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, break; case GST_MAKE_FOURCC ('S', 'V', 'Q', '3'): _codec ("Sorensen video v.3"); - caps = gst_caps_from_string ("video/x-svq, " "svqversion = (int) 3"); + caps = gst_caps_new_simple ("video/x-svq", + "svqversion", G_TYPE_INT, 3, NULL); break; case GST_MAKE_FOURCC ('s', 'v', 'q', 'i'): case GST_MAKE_FOURCC ('S', 'V', 'Q', '1'): _codec ("Sorensen video v.1"); - caps = gst_caps_from_string ("video/x-svq, " "svqversion = (int) 1"); + caps = gst_caps_new_simple ("video/x-svq", + "svqversion", G_TYPE_INT, 1, NULL); break; case GST_MAKE_FOURCC ('r', 'a', 'w', ' '): { @@ -4615,24 +4621,27 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, } case GST_MAKE_FOURCC ('y', 'v', '1', '2'): _codec ("Raw planar YUV 4:2:0"); - caps = gst_caps_from_string ("video/x-raw-yuv, " - "format = (fourcc) I420"); + caps = gst_caps_new_simple ("video/x-raw-yuv", + "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'), + NULL); break; case GST_MAKE_FOURCC ('y', 'u', 'v', '2'): case GST_MAKE_FOURCC ('Y', 'u', 'v', '2'): _codec ("Raw packed YUV 4:2:2"); - caps = gst_caps_from_string ("video/x-raw-yuv, " - "format = (fourcc) YUY2"); + caps = gst_caps_new_simple ("video/x-raw-yuv", + "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'), + NULL); break; case GST_MAKE_FOURCC ('2', 'v', 'u', 'y'): _codec ("Raw packed YUV 4:2:0"); - caps = gst_caps_from_string ("video/x-raw-yuv, " - "format = (fourcc) UYVY"); + caps = gst_caps_new_simple ("video/x-raw-yuv", + "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'), + NULL); break; case GST_MAKE_FOURCC ('m', 'p', 'e', 'g'): _codec ("MPEG-1 video"); - caps = gst_caps_from_string ("video/mpeg, " - "systemstream = (boolean) false, " "mpegversion = (int) 1"); + caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('h', 'd', 'v', '1'): // HDV 720p30 case GST_MAKE_FOURCC ('h', 'd', 'v', '2'): // HDV 1080i60 @@ -4648,12 +4657,12 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('x', 'd', 'v', '2'): // XDCAM HD 1080i60 case GST_MAKE_FOURCC ('A', 'V', 'm', 'p'): // AVID IMX PAL _codec ("MPEG-2 video"); - caps = gst_caps_from_string ("video/mpeg, " - "systemstream = (boolean) false, " "mpegversion = (int) 2"); + caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('g', 'i', 'f', ' '): _codec ("GIF still images"); - caps = gst_caps_from_string ("image/gif"); + caps = gst_caps_new_simple ("image/gif", NULL); break; case GST_MAKE_FOURCC ('h', '2', '6', '3'): case GST_MAKE_FOURCC ('H', '2', '6', '3'): @@ -4661,65 +4670,71 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('U', '2', '6', '3'): _codec ("H.263"); /* ffmpeg uses the height/width props, don't know why */ - caps = gst_caps_from_string ("video/x-h263"); + caps = gst_caps_new_simple ("video/x-h263", NULL); break; case GST_MAKE_FOURCC ('m', 'p', '4', 'v'): _codec ("MPEG-4 video"); - caps = gst_caps_from_string ("video/mpeg, " - "mpegversion = (int) 4, " "systemstream = (boolean) false"); + caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 4, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('3', 'i', 'v', 'd'): case GST_MAKE_FOURCC ('3', 'I', 'V', 'D'): _codec ("Microsoft MPEG-4 4.3"); /* FIXME? */ - caps = gst_caps_from_string ("video/x-msmpeg, msmpegversion = (int) 43"); + caps = gst_caps_new_simple ("video/x-msmpeg", + "msmpegversion", G_TYPE_INT, 43, NULL); break; case GST_MAKE_FOURCC ('3', 'I', 'V', '1'): case GST_MAKE_FOURCC ('3', 'I', 'V', '2'): _codec ("3ivX video"); - caps = gst_caps_from_string ("video/x-3ivx"); + caps = gst_caps_new_simple ("video/x-3ivx", NULL); break; case GST_MAKE_FOURCC ('D', 'I', 'V', '3'): _codec ("DivX 3"); - caps = gst_caps_from_string ("video/x-divx," "divxversion= (int) 3"); + caps = gst_caps_new_simple ("video/x-divx", + "divxversion", G_TYPE_INT, 3, NULL); break; case GST_MAKE_FOURCC ('D', 'I', 'V', 'X'): case GST_MAKE_FOURCC ('d', 'i', 'v', 'x'): _codec ("DivX 4"); - caps = gst_caps_from_string ("video/x-divx," "divxversion= (int) 4"); + caps = gst_caps_new_simple ("video/x-divx", + "divxversion", G_TYPE_INT, 4, NULL); break; - case GST_MAKE_FOURCC ('D', 'X', '5', '0'): _codec ("DivX 5"); - caps = gst_caps_from_string ("video/x-divx," "divxversion= (int) 5"); + caps = gst_caps_new_simple ("video/x-divx", + "divxversion", G_TYPE_INT, 5, NULL); break; case GST_MAKE_FOURCC ('c', 'v', 'i', 'd'): _codec ("Cinepak"); - caps = gst_caps_from_string ("video/x-cinepak"); + caps = gst_caps_new_simple ("video/x-cinepak", NULL); break; case GST_MAKE_FOURCC ('q', 'd', 'r', 'w'): _codec ("Apple QuickDraw"); - caps = gst_caps_from_string ("video/x-qdrw"); + caps = gst_caps_new_simple ("video/x-qdrw", NULL); break; case GST_MAKE_FOURCC ('r', 'p', 'z', 'a'): _codec ("Apple video"); - caps = gst_caps_from_string ("video/x-apple-video"); + caps = gst_caps_new_simple ("video/x-apple-video", NULL); break; case GST_MAKE_FOURCC ('a', 'v', 'c', '1'): _codec ("H.264 / AVC"); - caps = gst_caps_from_string ("video/x-h264"); + caps = gst_caps_new_simple ("video/x-h264", NULL); break; case GST_MAKE_FOURCC ('r', 'l', 'e', ' '): _codec ("Run-length encoding"); - caps = gst_caps_from_string ("video/x-rle, layout=(string)quicktime"); + caps = gst_caps_new_simple ("video/x-rle", + "layout", G_TYPE_STRING, "quicktime", NULL); break; case GST_MAKE_FOURCC ('i', 'v', '3', '2'): _codec ("Indeo Video 3"); - caps = gst_caps_from_string ("video/x-indeo, indeoversion=(int)3"); + caps = gst_caps_new_simple ("video/x-indeo", + "indeoversion", G_TYPE_INT, 3, NULL); break; case GST_MAKE_FOURCC ('I', 'V', '4', '1'): case GST_MAKE_FOURCC ('i', 'v', '4', '1'): _codec ("Intel Video 4"); - caps = gst_caps_from_string ("video/x-indeo, indeoversion=(int)4"); + caps = gst_caps_new_simple ("video/x-indeo", + "indeoversion", G_TYPE_INT, 4, NULL); break; case GST_MAKE_FOURCC ('d', 'v', 'c', 'p'): case GST_MAKE_FOURCC ('d', 'v', 'c', ' '): @@ -4730,46 +4745,43 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('d', 'v', '2', '5'): case GST_MAKE_FOURCC ('d', 'v', 'p', 'p'): _codec ("DV Video"); - caps = - gst_caps_from_string - ("video/x-dv, dvversion=(int)25, systemstream=(boolean)false"); + caps = gst_caps_new_simple ("video/x-dv", "dvversion", G_TYPE_INT, 25, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('d', 'v', '5', 'n'): //DVCPRO50 NTSC case GST_MAKE_FOURCC ('d', 'v', '5', 'p'): //DVCPRO50 PAL _codec ("DVCPro50 Video"); - caps = - gst_caps_from_string - ("video/x-dv, dvversion=(int)50, systemstream=(boolean)false"); + caps = gst_caps_new_simple ("video/x-dv", "dvversion", G_TYPE_INT, 50, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('d', 'v', 'h', '5'): //DVCPRO HD 50i produced by FCP case GST_MAKE_FOURCC ('d', 'v', 'h', '6'): //DVCPRO HD 60i produced by FCP _codec ("DVCProHD Video"); - caps = - gst_caps_from_string - ("video/x-dv, dvversion=(int)100, systemstream=(boolean)false"); + caps = gst_caps_new_simple ("video/x-dv", "dvversion", G_TYPE_INT, 100, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('s', 'm', 'c', ' '): _codec ("Apple Graphics (SMC)"); - caps = gst_caps_from_string ("video/x-smc"); + caps = gst_caps_new_simple ("video/x-smc", NULL); break; case GST_MAKE_FOURCC ('V', 'P', '3', '1'): _codec ("VP3"); - caps = gst_caps_from_string ("video/x-vp3"); + caps = gst_caps_new_simple ("video/x-vp3", NULL); break; case GST_MAKE_FOURCC ('X', 'i', 'T', 'h'): _codec ("Theora"); - caps = gst_caps_from_string ("video/x-theora"); + caps = gst_caps_new_simple ("video/x-theora", NULL); /* theora uses one byte of padding in the data stream because it does not * allow 0 sized packets while theora does */ stream->padding = 1; break; case GST_MAKE_FOURCC ('d', 'r', 'a', 'c'): _codec ("Dirac"); - caps = gst_caps_from_string ("video/x-dirac"); + caps = gst_caps_new_simple ("video/x-dirac", NULL); break; case GST_MAKE_FOURCC ('t', 'i', 'f', 'f'): _codec ("TIFF still images"); - caps = gst_caps_from_string ("image/tiff"); + caps = gst_caps_new_simple ("image/tiff", NULL); break; case GST_MAKE_FOURCC ('k', 'p', 'c', 'd'): default: @@ -4794,11 +4806,12 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, static GstCaps * qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, - guint32 fourcc, const guint8 * data, int len, const gchar ** codec_name) + guint32 fourcc, const guint8 * data, int len, gchar ** codec_name) { GstCaps *caps; const GstStructure *s; const gchar *name; + gint endian = 0; GST_DEBUG_OBJECT (qtdemux, "resolve fourcc %08x", fourcc); @@ -4806,95 +4819,83 @@ qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('N', 'O', 'N', 'E'): case GST_MAKE_FOURCC ('r', 'a', 'w', ' '): _codec ("Raw 8-bit PCM audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 8, " "depth = (int) 8, " "signed = (boolean) false"); + caps = gst_caps_new_simple ("audio/x-raw-int", "width", G_TYPE_INT, 8, + "depth", G_TYPE_INT, 8, "signed", G_TYPE_BOOLEAN, FALSE, NULL); break; case GST_MAKE_FOURCC ('t', 'w', 'o', 's'): - if (stream->bytes_per_sample == 1) { - _codec ("Raw 8-bit PCM audio"); - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 8, " "depth = (int) 8, " "signed = (boolean) true"); - } else { - _codec ("Raw 16-bit PCM audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 16, " - "depth = (int) 16, " - "endianness = (int) BIG_ENDIAN, " "signed = (boolean) true"); - } - break; + endian = BIG_ENDIAN; + /* fall-through */ case GST_MAKE_FOURCC ('s', 'o', 'w', 't'): - if (stream->bytes_per_sample == 1) { - _codec ("Raw 8-bit PCM audio"); - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 8, " "depth = (int) 8, " "signed = (boolean) true"); - } else { - _codec ("Raw 16-bit PCM audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 16, " - "depth = (int) 16, " - "endianness = (int) LITTLE_ENDIAN, " "signed = (boolean) true"); - } + { + gchar *str; + gint depth; + + if (!endian) + endian = LITTLE_ENDIAN; + + depth = stream->bytes_per_packet * 8; + str = g_strdup_printf ("Raw %d-bit PCM audio", depth); + _codec (str); + g_free (str); + caps = gst_caps_new_simple ("audio/x-raw-int", + "width", G_TYPE_INT, depth, "depth", G_TYPE_INT, depth, + "endianness", G_TYPE_INT, endian, + "signed", G_TYPE_BOOLEAN, TRUE, NULL); break; + } case GST_MAKE_FOURCC ('f', 'l', '6', '4'): _codec ("Raw 64-bit floating-point audio"); - caps = gst_caps_from_string ("audio/x-raw-float, " - "width = (int) 64, " "endianness = (int) BIG_ENDIAN"); + caps = gst_caps_new_simple ("audio/x-raw-float", "width", G_TYPE_INT, 64, + "endianness", G_TYPE_INT, BIG_ENDIAN, NULL); break; case GST_MAKE_FOURCC ('f', 'l', '3', '2'): _codec ("Raw 32-bit floating-point audio"); - caps = gst_caps_from_string ("audio/x-raw-float, " - "width = (int) 32, " "endianness = (int) BIG_ENDIAN"); + caps = gst_caps_new_simple ("audio/x-raw-float", "width", G_TYPE_INT, 32, + "endianness", G_TYPE_INT, BIG_ENDIAN, NULL); break; case GST_MAKE_FOURCC ('i', 'n', '2', '4'): _codec ("Raw 24-bit PCM audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 24, " - "depth = (int) 24, " - "endianness = (int) BIG_ENDIAN, " "signed = (boolean) true"); + caps = gst_caps_new_simple ("audio/x-raw-int", "width", G_TYPE_INT, 24, + "depth", G_TYPE_INT, 24, + "endianness", G_TYPE_INT, BIG_ENDIAN, + "signed", G_TYPE_BOOLEAN, TRUE, NULL); break; case GST_MAKE_FOURCC ('i', 'n', '3', '2'): _codec ("Raw 32-bit PCM audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-raw-int, " - "width = (int) 32, " - "depth = (int) 32, " - "endianness = (int) BIG_ENDIAN, " "signed = (boolean) true"); + caps = gst_caps_new_simple ("audio/x-raw-int", "width", G_TYPE_INT, 32, + "depth", G_TYPE_INT, 32, + "endianness", G_TYPE_INT, BIG_ENDIAN, + "signed", G_TYPE_BOOLEAN, TRUE, NULL); break; case GST_MAKE_FOURCC ('u', 'l', 'a', 'w'): _codec ("Mu-law audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-mulaw"); + caps = gst_caps_new_simple ("audio/x-mulaw", NULL); break; case GST_MAKE_FOURCC ('a', 'l', 'a', 'w'): _codec ("A-law audio"); - /* FIXME */ - caps = gst_caps_from_string ("audio/x-alaw"); + caps = gst_caps_new_simple ("audio/x-alaw", NULL); break; case 0x0200736d: case 0x6d730002: _codec ("Microsoft ADPCM"); /* Microsoft ADPCM-ACM code 2 */ - caps = gst_caps_from_string ("audio/x-adpcm, " - "layout = (string) microsoft"); + caps = gst_caps_new_simple ("audio/x-adpcm", + "layout", G_TYPE_STRING, "microsoft", NULL); break; case 0x1100736d: case 0x6d730011: _codec ("IMA Loki SDL MJPEG ADPCM"); /* Loki ADPCM, See #550288 for a file that only decodes * with the smjpeg variant of the ADPCM decoder. */ - caps = gst_caps_from_string ("audio/x-adpcm, " - "layout = (string) smjpeg"); + caps = gst_caps_new_simple ("audio/x-adpcm", + "layout", G_TYPE_STRING, "smjpeg", NULL); break; case 0x1700736d: case 0x6d730017: _codec ("DVI/Intel IMA ADPCM"); /* FIXME DVI/Intel IMA ADPCM/ACM code 17 */ - caps = gst_caps_from_string ("audio/x-adpcm, " - "layout = (string) quicktime"); + caps = gst_caps_new_simple ("audio/x-adpcm", + "layout", G_TYPE_STRING, "quicktime", NULL); break; case 0x5500736d: case 0x6d730055: @@ -4902,24 +4903,26 @@ qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('.', 'm', 'p', '3'): _codec ("MPEG-1 layer 3"); /* MPEG layer 3, CBR & VBR (QT4.1 and later) */ - caps = gst_caps_from_string ("audio/mpeg, " - "layer = (int) 3, " "mpegversion = (int) 1"); + caps = gst_caps_new_simple ("audio/mpeg", "layer", G_TYPE_INT, 3, + "mpegversion", G_TYPE_INT, 1, NULL); break; case GST_MAKE_FOURCC ('M', 'A', 'C', '3'): _codec ("MACE-3"); - caps = gst_caps_from_string ("audio/x-mace, " "maceversion = (int) 3"); + caps = gst_caps_new_simple ("audio/x-mace", + "maceversion", G_TYPE_INT, 3, NULL); break; case GST_MAKE_FOURCC ('M', 'A', 'C', '6'): _codec ("MACE-6"); - caps = gst_caps_from_string ("audio/x-mace, " "maceversion = (int) 6"); + caps = gst_caps_new_simple ("audio/x-mace", + "maceversion", G_TYPE_INT, 6, NULL); break; case GST_MAKE_FOURCC ('O', 'g', 'g', 'V'): /* ogg/vorbis */ - caps = gst_caps_from_string ("application/ogg"); + caps = gst_caps_new_simple ("application/ogg", NULL); break; case GST_MAKE_FOURCC ('d', 'v', 'c', 'a'): _codec ("DV audio"); - caps = gst_caps_from_string ("audio/x-dv"); + caps = gst_caps_new_simple ("audio/x-dv", NULL); break; case GST_MAKE_FOURCC ('m', 'p', '4', 'a'): _codec ("MPEG-4 AAC audio");