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);