From 455415daf2f484de646e6c57922e8c69d20e02fb Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 29 Oct 2001 16:56:36 +0000 Subject: added stss (not completed) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2534 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mov.c | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index c7a4d18f06..b8ee19fd7f 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -317,8 +317,11 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak case MOV_FOURCC('s','t','s','c'): { int temp=stream_read_dword(demuxer->stream); int len=stream_read_dword(demuxer->stream); + int ver = (temp << 24); + int flags = (temp << 16)|(temp<<8)|temp; int i; - mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample->Chunk mapping table! (%d blocks)\n",level,"",len); + mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample->Chunk mapping table! (%d blocks) (ver:%d,flags:%ld)\n", + level,"",len,ver,flags); // read data: trak->chunkmap_size=len; trak->chunkmap=malloc(sizeof(mov_chunkmap_t)*len); @@ -332,15 +335,18 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak case MOV_FOURCC('s','t','s','z'): { int temp=stream_read_dword(demuxer->stream); int ss=stream_read_dword(demuxer->stream); - int len=stream_read_dword(demuxer->stream); - mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample size table! len=%d ss=%d\n",level,"",len,ss); + int ver = (temp << 24); + int flags = (temp << 16)|(temp<<8)|temp; + int entries=stream_read_dword(demuxer->stream); + mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample size table! (entries=%d ss=%d) (ver:%d,flags:%ld)\n", + level,"",entries,ss,ver,flags); trak->samplesize=ss; if(!ss){ // variable samplesize int i; - trak->samples=realloc(trak->samples,sizeof(mov_sample_t)*len); - trak->samples_size=len; - for(i=0;isamples=realloc(trak->samples,sizeof(mov_sample_t)*entries); + trak->samples_size=entries; + for(i=0;isamples[i].size=stream_read_dword(demuxer->stream); } break; @@ -359,6 +365,23 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak for(i=0;ichunks[i].pos=stream_read_dword(demuxer->stream); break; } + case MOV_FOURCC('s','t','s','s'): { + int temp=stream_read_dword(demuxer->stream); + int entries=stream_read_dword(demuxer->stream); + int ver = (temp << 24); + int flags = (temp << 16)|(temp<<8)|temp; + int i; + + mp_msg(MSGT_DEMUX, MSGL_V,"MOV: %*sSample syncing table! (%d entries) (ver:%d,flags:%ld)\n", + level, "",entries, ver, flags); +#if 0 + for (i=0;istream)); + } +#endif + break; + } case MOV_FOURCC('m','d','i','a'): { mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sMedia stream!\n",level,""); lschunks(demuxer,level+1,pos+len,trak); -- cgit v1.2.3