gst/avi/gstavimux.c: Fix "Index entry has invalid stream nr 1".

Original commit message from CVS:
* gst/avi/gstavimux.c:
Fix "Index entry has invalid stream nr 1".
Add support for muxing aac - work in progress (see #482495).
This commit is contained in:
Stefan Kost 2007-10-02 10:23:04 +00:00
parent 5274c3f4e2
commit b36ce655d8
2 changed files with 30 additions and 10 deletions

View file

@ -1,3 +1,9 @@
2007-10-02 Stefan Kost <ensonic@users.sf.net>
* gst/avi/gstavimux.c:
Fix "Index entry has invalid stream nr 1".
Add support for muxing aac - work in progress (see #482495).
2007-10-01 Wim Taymans <wim.taymans@gmail.com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_get_bandwidth),

View file

@ -171,6 +171,9 @@ static GstStaticPadTemplate audio_sink_factory =
"mpegversion = (int) 1, "
"layer = (int) [ 1, 3 ], "
"rate = (int) [ 1000, 96000 ], " "channels = (int) [ 1, 2 ]; "
"audio/mpeg, "
"mpegversion = (int) 4, "
"rate = (int) [ 1000, 96000 ], " "channels = (int) [ 1, 2 ]; "
/*#if 0 VC6 doesn't support #if here ...
"audio/x-vorbis, "
"rate = (int) [ 1000, 96000 ], " "channels = (int) [ 1, 2 ]; "
@ -627,6 +630,11 @@ gst_avi_mux_audsink_set_caps (GstPad * pad, GstCaps * vscaps)
avipad->auds.format = 0;
if (!strcmp (mimetype, "audio/mpeg")) {
gint mpegversion;
gst_structure_get_int (structure, "mpegversion", &mpegversion);
switch (mpegversion) {
case 1:{
gint layer = 3;
gst_structure_get_int (structure, "layer", &layer);
@ -639,6 +647,12 @@ gst_avi_mux_audsink_set_caps (GstPad * pad, GstCaps * vscaps)
avipad->auds.format = GST_RIFF_WAVE_FORMAT_MPEGL12;
break;
}
break;
}
case 4:
avipad->auds.format = GST_RIFF_WAVE_FORMAT_AAC;
break;
}
} else if (!strcmp (mimetype, "audio/x-vorbis")) {
avipad->auds.format = GST_RIFF_WAVE_FORMAT_VORBIS3;
} else if (!strcmp (mimetype, "audio/x-ac3")) {
@ -1354,8 +1368,8 @@ gst_avi_mux_start_file (GstAviMux * avimux)
node = node->next;
if (!avipad->is_video) {
avipad->tag = g_strdup_printf ("%02uwb", ++avimux->audio_pads);
avipad->idx_tag = g_strdup_printf ("ix%02u", avimux->audio_pads);
avipad->tag = g_strdup_printf ("%02uwb", avimux->audio_pads);
avipad->idx_tag = g_strdup_printf ("ix%02u", avimux->audio_pads++);
} else {
avipad->tag = g_strdup_printf ("%02udb", avimux->video_pads);
avipad->idx_tag = g_strdup_printf ("ix%02u", avimux->video_pads++);