summaryrefslogtreecommitdiffstats
path: root/gst/multipart
diff options
context:
space:
mode:
authorMersad Jelacic <mersad@axis.com>2008-08-28 10:09:16 +0000
committerWim Taymans <wim.taymans@gmail.com>2008-08-28 10:09:16 +0000
commit9b08b5307fd2151440c8232d8f088fcc30477865 (patch)
treef264caa0bea7d23d6f74a78f033edd2088ea305a /gst/multipart
parentd92f63d3ab4d1c51bfe5d067e9747ceb157daea2 (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.c4
-rw-r--r--gst/multipart/multipartmux.c24
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) {