summaryrefslogtreecommitdiff
path: root/gst/mpegdemux
diff options
context:
space:
mode:
authorRafael Diniz <rafael@riseup.net>2011-05-20 09:58:50 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2011-05-20 10:00:02 +0200
commit83b5b296390838a2e151097e4665b9334cfff1fc (patch)
treebee4e5b4f84d917668906503718c83455dc261a9 /gst/mpegdemux
parent6e4a14d231803f92e2dc1c8627eee2162027bce4 (diff)
downloadgstreamer-plugins-bad-83b5b296390838a2e151097e4665b9334cfff1fc.tar.gz
mpeg[pt]sdemux: Add support for AAC LATM/LOAS streams
Fixes bug #615681.
Diffstat (limited to 'gst/mpegdemux')
-rw-r--r--gst/mpegdemux/gstmpegdefs.h4
-rw-r--r--gst/mpegdemux/gstmpegdemux.c12
-rw-r--r--gst/mpegdemux/gstmpegtsdemux.c12
3 files changed, 23 insertions, 5 deletions
diff --git a/gst/mpegdemux/gstmpegdefs.h b/gst/mpegdemux/gstmpegdefs.h
index 05320ecb1..a34af53a2 100644
--- a/gst/mpegdemux/gstmpegdefs.h
+++ b/gst/mpegdemux/gstmpegdefs.h
@@ -159,7 +159,9 @@
#define ST_H222_1 0x09
/* later extensions */
-#define ST_AUDIO_AAC 0x0f
+#define ST_AUDIO_AAC_ADTS 0x0f
+/* LATM/LOAS AAC syntax */
+#define ST_AUDIO_AAC_LOAS 0x11
#define ST_VIDEO_MPEG4 0x10
#define ST_VIDEO_H264 0x1b
diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
index ca2bac48b..205d381d5 100644
--- a/gst/mpegdemux/gstmpegdemux.c
+++ b/gst/mpegdemux/gstmpegdemux.c
@@ -350,11 +350,19 @@ gst_flups_demux_create_stream (GstFluPSDemux * demux, gint id, gint stream_type)
case ST_MHEG:
case ST_DSMCC:
break;
- case ST_AUDIO_AAC:
+ case ST_AUDIO_AAC_ADTS:
template = klass->audio_template;
name = g_strdup_printf ("audio_%02x", id);
caps = gst_caps_new_simple ("audio/mpeg",
- "mpegversion", G_TYPE_INT, 4, NULL);
+ "mpegversion", G_TYPE_INT, 4,
+ "stream-format", G_TYPE_STRING, "adts", NULL);
+ break;
+ case ST_AUDIO_AAC_LOAS: // LATM/LOAS AAC syntax
+ template = klass->audio_template;
+ name = g_strdup_printf ("audio_%02x", id);
+ caps = gst_caps_new_simple ("audio/mpeg",
+ "mpegversion", G_TYPE_INT, 4,
+ "stream-format", G_TYPE_STRING, "loas", NULL);
break;
case ST_VIDEO_H264:
template = klass->video_template;
diff --git a/gst/mpegdemux/gstmpegtsdemux.c b/gst/mpegdemux/gstmpegtsdemux.c
index a251bc5b2..2c5c6cc1e 100644
--- a/gst/mpegdemux/gstmpegtsdemux.c
+++ b/gst/mpegdemux/gstmpegtsdemux.c
@@ -682,11 +682,19 @@ gst_mpegts_demux_fill_stream (GstMpegTSStream * stream, guint8 id,
case ST_MHEG:
case ST_DSMCC:
break;
- case ST_AUDIO_AAC:
+ case ST_AUDIO_AAC_ADTS:
template = klass->audio_template;
name = g_strdup_printf ("audio_%04x", stream->PID);
caps = gst_caps_new_simple ("audio/mpeg",
- "mpegversion", G_TYPE_INT, 4, NULL);
+ "mpegversion", G_TYPE_INT, 4,
+ "stream-format", G_TYPE_STRING, "adts", NULL);
+ break;
+ case ST_AUDIO_AAC_LOAS: // LATM/LOAS AAC syntax
+ template = klass->audio_template;
+ name = g_strdup_printf ("audio_%04x", stream->PID);
+ caps = gst_caps_new_simple ("audio/mpeg",
+ "mpegversion", G_TYPE_INT, 4,
+ "stream-format", G_TYPE_STRING, "loas", NULL);
break;
case ST_VIDEO_MPEG4:
template = klass->video_template;