From 83b5b296390838a2e151097e4665b9334cfff1fc Mon Sep 17 00:00:00 2001 From: Rafael Diniz Date: Fri, 20 May 2011 09:58:50 +0200 Subject: mpeg[pt]sdemux: Add support for AAC LATM/LOAS streams Fixes bug #615681. --- gst/mpegdemux/gstmpegdefs.h | 4 +++- gst/mpegdemux/gstmpegdemux.c | 12 ++++++++++-- gst/mpegdemux/gstmpegtsdemux.c | 12 ++++++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) (limited to 'gst/mpegdemux') 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; -- cgit v1.2.1