+2008-08-22 Zaheer Abbas Merali <zaheerabbas at merali dot org>
+
+ * gst/multipart/multipartdemux.c:
+ * gst/multipart/multipartmux.c:
+ Conform to RFC2046. audio/basic is mulaw 8000Hz mono.
+
2008-08-21 Ole André Vadla Ravnås <ole.andre.ravnas@tandberg.com>
* sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_buffer_alloc,
/* convert from mime types to gst structure names. Add more when needed. */
static const GstNamesMap gstnames[] = {
- {"audio/basic", "audio/x-mulaw"},
+ /* RFC 2046 says audio/basic is mulaw, mono, 8000Hz */
+ {"audio/basic", "audio/x-mulaw, channels=1, rate=8000"},
{NULL, NULL}
};
/* no gst name mapping, use mime type */
gstname = mimetype;
}
+ GST_DEBUG_OBJECT (demux, "gst name for %s is %s", mimetype, gstname);
return gstname;
}
/* take the mime type, convert it to the caps name */
capsname = gst_multipart_demux_get_gstname (demux, mime);
caps = gst_caps_from_string (capsname);
+ GST_DEBUG_OBJECT (demux, "caps for pad: %s", capsname);
gst_pad_use_fixed_caps (pad);
gst_pad_set_caps (pad, caps);
gst_caps_unref (caps);
GST_DEBUG_OBJECT (multipart,
"pushing buffer with timestamp %" GST_TIME_FORMAT,
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)));
+ GST_DEBUG_OBJECT (multipart, "buffer has caps %s",
+ gst_caps_to_string (GST_BUFFER_CAPS (outbuf)));
res = gst_pad_push (srcpad->pad, outbuf);
if (res != GST_FLOW_OK)
break;
GstMultipartMuxClass *klass;
const gchar *mime;
const gchar *name;
+ gint rate;
+ gint channels;
klass = GST_MULTIPART_MUX_GET_CLASS (mux);
/* no mime type mapping, use name */
mime = name;
}
+ /* RFC2046 requires audio/basic to be mulaw 8000Hz mono */
+ if (g_ascii_strcasecmp (mime, "audio/basic") == 0) {
+ if (gst_structure_get_int (s, "rate", &rate) &&
+ gst_structure_get_int (s, "channels", &channels)) {
+ if (rate != 8000 || channels != 1) {
+ mime = name;
+ }
+ } else {
+ mime = name;
+ }
+ }
return mime;
}