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> 2007-10-01 Wim Taymans <wim.taymans@gmail.com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_get_bandwidth), * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_get_bandwidth),

View file

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