AUDIO_ES, "AMR wide band" },
#endif
+#if LIBAVCODEC_BUILD >= 4745
+ /* ALAC */
+ { VLC_FOURCC('a','l','a','c'), CODEC_ID_ALAC,
+ AUDIO_ES, "Apple Lossless Audio Codec" },
+#endif
+
/* PCM */
{ VLC_FOURCC('s','8',' ',' '), CODEC_ID_PCM_S8,
AUDIO_ES, "PCM S8" },
p_box->data.p_sample_soun->i_channelcount = 1;
}
- MP4_ReadBoxContainerRaw( p_stream, p_box ); /* esds */
+ if( p_box->i_type == FOURCC_alac )
+ {
+ if( p_box->data.p_sample_soun->p_qt_description )
+ free( p_box->data.p_sample_soun->p_qt_description );
+
+ p_box->data.p_sample_soun->p_qt_description = malloc( i_read );
+ p_box->data.p_sample_soun->i_qt_description = i_read;
+ memcpy( p_box->data.p_sample_soun->p_qt_description, p_peek, i_read );
+ }
+ else
+ {
+ MP4_ReadBoxContainerRaw( p_stream, p_box ); /* esds */
+ }
#ifdef MP4_VERBOSE
msg_Dbg( p_stream, "read box: \"soun\" in stsd channel %d "
{ FOURCC_samr, MP4_ReadBox_sample_soun, MP4_FreeBox_sample_soun },
{ FOURCC_sawb, MP4_ReadBox_sample_soun, MP4_FreeBox_sample_soun },
{ FOURCC_OggS, MP4_ReadBox_sample_soun, MP4_FreeBox_sample_soun },
+ { FOURCC_alac, MP4_ReadBox_sample_soun, MP4_FreeBox_sample_soun },
{ FOURCC_vide, MP4_ReadBox_sample_vide, MP4_FreeBox_sample_vide },
{ FOURCC_mp4v, MP4_ReadBox_sample_vide, MP4_FreeBox_sample_vide },
#define FOURCC_samr VLC_FOURCC( 's', 'a', 'm', 'r' )
#define FOURCC_sawb VLC_FOURCC( 's', 'a', 'w', 'b' )
#define FOURCC_OggS VLC_FOURCC( 'O', 'g', 'g', 'S' )
+#define FOURCC_alac VLC_FOURCC( 'a', 'l', 'a', 'c' )
#define FOURCC_zlib VLC_FOURCC( 'z', 'l', 'i', 'b' )
#define FOURCC_SVQ1 VLC_FOURCC( 'S', 'V', 'Q', '1' )
case VLC_FOURCC( 'Q', 'D', 'M', '2' ):
case VLC_FOURCC( 'Q', 'c', 'l', 'p' ):
case VLC_FOURCC( 's', 'a', 'm', 'r' ):
+ case VLC_FOURCC( 'a', 'l', 'a', 'c' ):
p_track->fmt.i_extra =
p_sample->data.p_sample_soun->i_qt_description;
if( p_track->fmt.i_extra > 0 )