summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-03-21 20:18:30 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-03-21 20:18:30 +0000
commit377271cdc0cbc421241b4d025b7f0a507e421460 (patch)
tree12bf77e21e7542da89026d5598c0c4c89a94c442 /libmpdemux
parent81778e13ee813679ac5abc4b0858cb0f6ebc1615 (diff)
downloadmpv-377271cdc0cbc421241b4d025b7f0a507e421460.tar.bz2
mpv-377271cdc0cbc421241b4d025b7f0a507e421460.tar.xz
support multiple video header extension chunks
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5251 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_mov.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index a2ff3131d6..e61c73678a 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -739,12 +739,10 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
if(trak->stdata_len >= 86) { // extra atoms found
- int atom_len = char2int(trak->stdata,78);
- if((trak->stdata_len - atom_len) > 78)
- mp_msg(MSGT_DEMUX, MSGL_WARN, "MOV: Movie stdata contains more then one atom (yet unsupported)!\n");
- // TODO: add support for multiple atoms, by analyzing stdata len
- // and comparing with len of first atom ::atmos
- switch(char2int(trak->stdata,82)) { // switch atom type
+ int pos=78;
+ while(pos+8<=trak->stdata_len &&
+ (pos+(atom_len=char2int(trak->stdata,pos)))<=trak->stdata_len){
+ switch(char2int(trak->stdata,pos+4)) { // switch atom type
case MOV_FOURCC('g','a','m','a'):
// intfp with gamma value at which movie was captured
// can be used to gamma correct movie display
@@ -776,8 +774,10 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
break;
default:
mp_msg(MSGT_DEMUX, MSGL_INFO, "MOV: Found unknown movie atom %c%c%c%c (%d)!\n",
- trak->stdata[86],trak->stdata[87],trak->stdata[88],trak->stdata[89],
+ trak->stdata[pos+4],trak->stdata[pos+5],trak->stdata[pos+6],trak->stdata[pos+7],
atom_len);
+ }
+ pos+=atom_len;
}
}
if(!sh->fps) sh->fps=trak->timescale;