summaryrefslogtreecommitdiffstats
path: root/gst/avi
diff options
context:
space:
mode:
authorThiago Santos <thiagoss@embedded.ufcg.edu.br>2009-07-28 00:30:43 -0300
committerThiago Santos <thiagoss@embedded.ufcg.edu.br>2009-07-28 00:30:43 -0300
commit52482a374197ea562753d95fefbac26993258313 (patch)
tree4b300fffd5d5da1b80a325563f96301ee21df547 /gst/avi
parentf43b442cf91206111ece5f2790de3cb32cb31281 (diff)
avimux: adds support to wma
Diffstat (limited to 'gst/avi')
-rw-r--r--gst/avi/gstavimux.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c
index b7609257..ba0a5991 100644
--- a/gst/avi/gstavimux.c
+++ b/gst/avi/gstavimux.c
@@ -180,7 +180,10 @@ static GstStaticPadTemplate audio_sink_factory =
"audio/x-alaw, "
"rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]; "
"audio/x-mulaw, "
- "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]; ")
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]; "
+ "audio/x-wma, "
+ "rate = (int) [ 1000, 96000 ], " "channels = (int) [ 1, 2 ], "
+ "wmaversion = (int) [ 1, 2 ] ")
);
static void gst_avi_mux_base_init (gpointer g_class);
@@ -752,6 +755,32 @@ gst_avi_mux_audsink_set_caps (GstPad * pad, GstCaps * vscaps)
avipad->auds.size = 8;
avipad->auds.blockalign = avipad->auds.channels;
avipad->auds.av_bps = avipad->auds.blockalign * avipad->auds.rate;
+ } else if (!strcmp (mimetype, "audio/x-wma")) {
+ gint version;
+ gint bitrate;
+ gint block_align;
+
+ if (gst_structure_get_int (structure, "wmaversion", &version)) {
+ switch (version) {
+ case 1:
+ avipad->auds.format = GST_RIFF_WAVE_FORMAT_WMAV1;
+ break;
+ case 2:
+ avipad->auds.format = GST_RIFF_WAVE_FORMAT_WMAV2;
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (avipad->auds.format != 0) {
+ if (gst_structure_get_int (structure, "block_align", &block_align)) {
+ avipad->auds.blockalign = block_align;
+ }
+ if (gst_structure_get_int (structure, "bitrate", &bitrate)) {
+ avipad->auds.av_bps = bitrate / 8;
+ }
+ }
}
}