]> git.sesse.net Git - vlc/commitdiff
Add support for MPEG-4 ALS to the MP4 demuxer and FFmpeg wrapper.
authorAlex Converse <alex.converse@gmail.com>
Wed, 24 Mar 2010 04:08:53 +0000 (00:08 -0400)
committerJean-Baptiste Kempf <jb@videolan.org>
Fri, 26 Mar 2010 10:31:09 +0000 (11:31 +0100)
MPEG-4 ALS is a pure losses audio codec from MPEG. Like other MPEG-4
Audio variants it's muxed into the MP4 container with Object Type
Indication 0x40 followed by its Audio Object Type (36).

Sample:
http://streams.videolan.org/Mpeg_Conformance/ftp.iis.fhg.de/mpeg4audio-conformance/compressedMp4/als_00_2ch48k16b.mp4

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
include/vlc_fourcc.h
modules/codec/avcodec/fourcc.c
modules/demux/mp4/mp4.c
src/misc/fourcc.c

index f766933fdc7164fde8cde0871bf271f519d363b2..ad686480c5d86347d73b7fd92daeb0a0d509350d 100644 (file)
 /* Audio codec */
 #define VLC_CODEC_MPGA      VLC_FOURCC('m','p','g','a')
 #define VLC_CODEC_MP4A      VLC_FOURCC('m','p','4','a')
+#define VLC_CODEC_ALS       VLC_FOURCC('a','l','s',' ')
 #define VLC_CODEC_A52       VLC_FOURCC('a','5','2',' ')
 #define VLC_CODEC_EAC3      VLC_FOURCC('e','a','c','3')
 #define VLC_CODEC_DTS       VLC_FOURCC('d','t','s',' ')
index 96fab558a986f616e29d2170868dd9819afa4017..3fc7a600a3bbaf61dfb9a8d2af4dbf0881a0fe8e 100644 (file)
@@ -296,6 +296,7 @@ static const struct
     { VLC_CODEC_MPGA, CODEC_ID_MP3, AUDIO_ES },
 
     { VLC_CODEC_MP4A, CODEC_ID_AAC, AUDIO_ES },
+    { VLC_CODEC_ALS, CODEC_ID_MP4ALS, AUDIO_ES },
 
     { VLC_CODEC_INTERPLAY_DPCM, CODEC_ID_INTERPLAY_DPCM, AUDIO_ES },
 
index 68b105dcb456afade6d30e7157720a804a71c94f..923e89a96ce38dc8ca84b6e67ba6f199c535f83b 100644 (file)
@@ -1727,6 +1727,12 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track,
                 break;
             case( 0x40):
                 p_track->fmt.i_codec = VLC_FOURCC( 'm','p','4','a' );
+                if( p_decconfig->i_decoder_specific_info_len >= 2 &&
+                     p_decconfig->p_decoder_specific_info[0]       == 0xF8 &&
+                    (p_decconfig->p_decoder_specific_info[1]&0xE0) == 0x80 )
+                {
+                    p_track->fmt.i_codec = VLC_CODEC_ALS;
+                }
                 break;
             case( 0x60):
             case( 0x61):
index 95e3bc0e0b5e0c04fc81e5c5479f0dbb25fde2f9..eecebe4268794f7c47e96142921ba0d960fbe0ce 100644 (file)
@@ -875,6 +875,10 @@ static const entry_t p_list_audio[] = {
         A("mp4a"),
         A("aac "),
 
+    /* ALS audio */
+    B(VLC_CODEC_ALS, "MPEG-4 Audio Lossless (ALS)"),
+        A("als "),
+
     /* 4X Technologies */
     B(VLC_CODEC_ADPCM_4XM, "4X Technologies Audio"),
         A("4xma"),