diff options
author | Mersad Jelacic <mersad@axis.com> | 2008-08-28 10:09:16 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-08-28 10:09:16 +0000 |
commit | 9b08b5307fd2151440c8232d8f088fcc30477865 (patch) | |
tree | f264caa0bea7d23d6f74a78f033edd2088ea305a /gst/multipart | |
parent | d92f63d3ab4d1c51bfe5d067e9747ceb157daea2 (diff) |
gst/multipart/: Convert audio/x-adpcm to and from the audio/G726-X in the muxer and demuxer. Fixes #549551.
Original commit message from CVS:
Patch by: Mersad Jelacic <mersad at axis dot com>
* gst/multipart/multipartdemux.c:
* gst/multipart/multipartmux.c: (gst_multipart_mux_get_mime):
Convert audio/x-adpcm to and from the audio/G726-X in the muxer and
demuxer. Fixes #549551.
Diffstat (limited to 'gst/multipart')
-rw-r--r-- | gst/multipart/multipartdemux.c | 4 | ||||
-rw-r--r-- | gst/multipart/multipartmux.c | 24 |
2 files changed, 26 insertions, 2 deletions
diff --git a/gst/multipart/multipartdemux.c b/gst/multipart/multipartdemux.c index 200f36ad..eeffd4e1 100644 --- a/gst/multipart/multipartdemux.c +++ b/gst/multipart/multipartdemux.c @@ -110,6 +110,10 @@ typedef struct static const GstNamesMap gstnames[] = { /* RFC 2046 says audio/basic is mulaw, mono, 8000Hz */ {"audio/basic", "audio/x-mulaw, channels=1, rate=8000"}, + {"audio/G726-16", "audio/x-adpcm, bitrate=16000"}, + {"audio/G726-24", "audio/x-adpcm, bitrate=24000"}, + {"audio/G726-32", "audio/x-adpcm, bitrate=32000"}, + {"audio/G726-40", "audio/x-adpcm, bitrate=40000"}, {NULL, NULL} }; diff --git a/gst/multipart/multipartmux.c b/gst/multipart/multipartmux.c index a4a1300f..45bc4bd7 100644 --- a/gst/multipart/multipartmux.c +++ b/gst/multipart/multipartmux.c @@ -293,6 +293,7 @@ gst_multipart_mux_get_mime (GstMultipartMux * mux, GstStructure * s) const gchar *name; gint rate; gint channels; + gint bitrate = 0; klass = GST_MULTIPART_MUX_GET_CLASS (mux); @@ -301,8 +302,27 @@ gst_multipart_mux_get_mime (GstMultipartMux * mux, GstStructure * s) /* use hashtable to convert to mime type */ mime = g_hash_table_lookup (klass->mimetypes, name); if (mime == NULL) { - /* no mime type mapping, use name */ - mime = name; + if (!strcmp (name, "audio/x-adpcm")) + gst_structure_get_int (s, "bitrate", &bitrate); + + switch (bitrate) { + case 16000: + mime = "audio/G726-16"; + break; + case 24000: + mime = "audio/G726-24"; + break; + case 32000: + mime = "audio/G726-32"; + break; + case 40000: + mime = "audio/G726-40"; + break; + default: + /* no mime type mapping, use name */ + mime = name; + break; + } } /* RFC2046 requires audio/basic to be mulaw 8000Hz mono */ if (g_ascii_strcasecmp (mime, "audio/basic") == 0) { |