summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mov.c
diff options
context:
space:
mode:
authorrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-03-30 22:10:07 +0000
committerrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-03-30 22:10:07 +0000
commitaf9950cd9991a4534160db846230e18277eef5a5 (patch)
treeca0f251c1b47d6f3f2fc4c286ba186c1f12fc5c2 /libmpdemux/demux_mov.c
parenta1ee80fd2c6e26e3f428ac6387124b93aa9fd281 (diff)
downloadmpv-af9950cd9991a4534160db846230e18277eef5a5.tar.bz2
mpv-af9950cd9991a4534160db846230e18277eef5a5.tar.xz
Fix alac from QTpro (in standard mov file, not in m4a file)
Extradata is in a different place fixes samples/A-codecs/lossless/ALAC/alac.mov git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15023 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mov.c')
-rw-r--r--libmpdemux/demux_mov.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index 4c98397e0a..bb37b0b8cf 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -950,8 +950,19 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
int fcc=char2int(trak->stdata,48);
// we have extra audio headers!!!
printf("Audio extra header: len=%d fcc=0x%X\n",len,fcc);
+ if((len >= 4) &&
+ (char2int(trak->stdata,52) >= 12) &&
+ (char2int(trak->stdata,52+4) == MOV_FOURCC('f','r','m','a')) &&
+ (char2int(trak->stdata,52+8) == MOV_FOURCC('a','l','a','c')) &&
+ (len >= 36 + char2int(trak->stdata,52))) {
+ sh->codecdata_len = char2int(trak->stdata,52+char2int(trak->stdata,52));
+ mp_msg(MSGT_DEMUX, MSGL_INFO, "MOV: Found alac atom (%d)!\n", sh->codecdata_len);
+ sh->codecdata = (unsigned char *)malloc(sh->codecdata_len);
+ memcpy(sh->codecdata, &trak->stdata[52+char2int(trak->stdata,52)], sh->codecdata_len);
+ } else {
sh->codecdata_len = len-8;
sh->codecdata = trak->stdata+44+8;
+ }
}
}