Mercurial > mplayer.hg
comparison libmpdemux/demux_mov.c @ 2533:36a9317a2afc
added stss (not completed)
author | alex |
---|---|
date | Mon, 29 Oct 2001 16:56:36 +0000 |
parents | 1adeb4ce84d4 |
children | 146854180531 |
comparison
equal
deleted
inserted
replaced
2532:1adeb4ce84d4 | 2533:36a9317a2afc |
---|---|
315 break; | 315 break; |
316 } | 316 } |
317 case MOV_FOURCC('s','t','s','c'): { | 317 case MOV_FOURCC('s','t','s','c'): { |
318 int temp=stream_read_dword(demuxer->stream); | 318 int temp=stream_read_dword(demuxer->stream); |
319 int len=stream_read_dword(demuxer->stream); | 319 int len=stream_read_dword(demuxer->stream); |
320 int ver = (temp << 24); | |
321 int flags = (temp << 16)|(temp<<8)|temp; | |
320 int i; | 322 int i; |
321 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample->Chunk mapping table! (%d blocks)\n",level,"",len); | 323 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample->Chunk mapping table! (%d blocks) (ver:%d,flags:%ld)\n", |
324 level,"",len,ver,flags); | |
322 // read data: | 325 // read data: |
323 trak->chunkmap_size=len; | 326 trak->chunkmap_size=len; |
324 trak->chunkmap=malloc(sizeof(mov_chunkmap_t)*len); | 327 trak->chunkmap=malloc(sizeof(mov_chunkmap_t)*len); |
325 for(i=0;i<len;i++){ | 328 for(i=0;i<len;i++){ |
326 trak->chunkmap[i].first=stream_read_dword(demuxer->stream)-1; | 329 trak->chunkmap[i].first=stream_read_dword(demuxer->stream)-1; |
330 break; | 333 break; |
331 } | 334 } |
332 case MOV_FOURCC('s','t','s','z'): { | 335 case MOV_FOURCC('s','t','s','z'): { |
333 int temp=stream_read_dword(demuxer->stream); | 336 int temp=stream_read_dword(demuxer->stream); |
334 int ss=stream_read_dword(demuxer->stream); | 337 int ss=stream_read_dword(demuxer->stream); |
335 int len=stream_read_dword(demuxer->stream); | 338 int ver = (temp << 24); |
336 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample size table! len=%d ss=%d\n",level,"",len,ss); | 339 int flags = (temp << 16)|(temp<<8)|temp; |
340 int entries=stream_read_dword(demuxer->stream); | |
341 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sSample size table! (entries=%d ss=%d) (ver:%d,flags:%ld)\n", | |
342 level,"",entries,ss,ver,flags); | |
337 trak->samplesize=ss; | 343 trak->samplesize=ss; |
338 if(!ss){ | 344 if(!ss){ |
339 // variable samplesize | 345 // variable samplesize |
340 int i; | 346 int i; |
341 trak->samples=realloc(trak->samples,sizeof(mov_sample_t)*len); | 347 trak->samples=realloc(trak->samples,sizeof(mov_sample_t)*entries); |
342 trak->samples_size=len; | 348 trak->samples_size=entries; |
343 for(i=0;i<len;i++) | 349 for(i=0;i<entries;i++) |
344 trak->samples[i].size=stream_read_dword(demuxer->stream); | 350 trak->samples[i].size=stream_read_dword(demuxer->stream); |
345 } | 351 } |
346 break; | 352 break; |
347 } | 353 } |
348 case MOV_FOURCC('s','t','c','o'): { | 354 case MOV_FOURCC('s','t','c','o'): { |
355 trak->chunks=realloc(trak->chunks,sizeof(mov_chunk_t)*len); | 361 trak->chunks=realloc(trak->chunks,sizeof(mov_chunk_t)*len); |
356 trak->chunks_size=len; | 362 trak->chunks_size=len; |
357 } | 363 } |
358 // read elements: | 364 // read elements: |
359 for(i=0;i<len;i++) trak->chunks[i].pos=stream_read_dword(demuxer->stream); | 365 for(i=0;i<len;i++) trak->chunks[i].pos=stream_read_dword(demuxer->stream); |
366 break; | |
367 } | |
368 case MOV_FOURCC('s','t','s','s'): { | |
369 int temp=stream_read_dword(demuxer->stream); | |
370 int entries=stream_read_dword(demuxer->stream); | |
371 int ver = (temp << 24); | |
372 int flags = (temp << 16)|(temp<<8)|temp; | |
373 int i; | |
374 | |
375 mp_msg(MSGT_DEMUX, MSGL_V,"MOV: %*sSample syncing table! (%d entries) (ver:%d,flags:%ld)\n", | |
376 level, "",entries, ver, flags); | |
377 #if 0 | |
378 for (i=0;i<entries;i++) | |
379 { | |
380 printf("entry#%d: %ld\n", i, stream_read_dword(demuxer->stream)); | |
381 } | |
382 #endif | |
360 break; | 383 break; |
361 } | 384 } |
362 case MOV_FOURCC('m','d','i','a'): { | 385 case MOV_FOURCC('m','d','i','a'): { |
363 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sMedia stream!\n",level,""); | 386 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: %*sMedia stream!\n",level,""); |
364 lschunks(demuxer,level+1,pos+len,trak); | 387 lschunks(demuxer,level+1,pos+len,trak); |