comparison aviheader.c @ 1671:e6804fef9061

print AVI info block (copyright,artist etc) (-v only)
author arpi
date Thu, 23 Aug 2001 21:10:31 +0000
parents 5c7760aa4f94
children 39a615b54a3b
comparison
equal deleted inserted replaced
1670:a7a5a500d295 1671:e6804fef9061
42 priv->idx_size=0; 42 priv->idx_size=0;
43 while(1){ 43 while(1){
44 int id=stream_read_dword_le(demuxer->stream); 44 int id=stream_read_dword_le(demuxer->stream);
45 int chunksize,size2; 45 int chunksize,size2;
46 static int last_fccType=0; 46 static int last_fccType=0;
47 char* hdr=NULL;
47 // 48 //
48 if(stream_eof(demuxer->stream)) break; 49 if(stream_eof(demuxer->stream)) break;
49 // 50 //
50 if(id==mmioFOURCC('L','I','S','T')){ 51 if(id==mmioFOURCC('L','I','S','T')){
51 int len=stream_read_dword_le(demuxer->stream)-4; // list size 52 int len=stream_read_dword_le(demuxer->stream)-4; // list size
52 id=stream_read_dword_le(demuxer->stream); // list type 53 id=stream_read_dword_le(demuxer->stream); // list type
53 mp_dbg(MSGT_HEADER,MSGL_DBG2,"LIST %.4s len=%d\n",(char *) &id,len); 54 mp_msg(MSGT_HEADER,MSGL_DBG2,"LIST %.4s len=%d\n",(char *) &id,len);
54 if(id==listtypeAVIMOVIE){ 55 if(id==listtypeAVIMOVIE){
55 // found MOVI header 56 // found MOVI header
56 demuxer->movi_start=stream_tell(demuxer->stream); 57 demuxer->movi_start=stream_tell(demuxer->stream);
57 demuxer->movi_end=demuxer->movi_start+len; 58 demuxer->movi_end=demuxer->movi_start+len;
58 mp_msg(MSGT_HEADER,MSGL_V,"Found movie at 0x%X - 0x%X\n",demuxer->movi_start,demuxer->movi_end); 59 mp_msg(MSGT_HEADER,MSGL_V,"Found movie at 0x%X - 0x%X\n",demuxer->movi_start,demuxer->movi_end);
61 stream_skip(demuxer->stream,len); 62 stream_skip(demuxer->stream,len);
62 } 63 }
63 continue; 64 continue;
64 } 65 }
65 size2=stream_read_dword_le(demuxer->stream); 66 size2=stream_read_dword_le(demuxer->stream);
66 mp_dbg(MSGT_HEADER,MSGL_DBG2,"CHUNK %.4s len=%d\n",(char *) &id,size2); 67 mp_msg(MSGT_HEADER,MSGL_DBG2,"CHUNK %.4s len=%d\n",(char *) &id,size2);
67 chunksize=(size2+1)&(~1); 68 chunksize=(size2+1)&(~1);
68 switch(id){ 69 switch(id){
70 case mmioFOURCC('I','S','F','T'): hdr="Software";break;
71 case mmioFOURCC('I','N','A','M'): hdr="Name";break;
72 case mmioFOURCC('I','S','B','J'): hdr="Subject";break;
73 case mmioFOURCC('I','A','R','T'): hdr="Artist";break;
74 case mmioFOURCC('I','C','O','P'): hdr="Copyright";break;
75 case mmioFOURCC('I','C','M','T'): hdr="Comment";break;
69 case ckidAVIMAINHDR: // read 'avih' 76 case ckidAVIMAINHDR: // read 'avih'
70 stream_read(demuxer->stream,(char*) &avih,MIN(size2,sizeof(avih))); 77 stream_read(demuxer->stream,(char*) &avih,MIN(size2,sizeof(avih)));
71 le2me_MainAVIHeader(&avih); // swap to machine endian 78 le2me_MainAVIHeader(&avih); // swap to machine endian
72 chunksize-=MIN(size2,sizeof(avih)); 79 chunksize-=MIN(size2,sizeof(avih));
73 if(verbose) print_avih(&avih); else print_avih_flags(&avih); 80 if(verbose) print_avih(&avih); else print_avih_flags(&avih);
150 chunksize-=priv->idx_size<<4; 157 chunksize-=priv->idx_size<<4;
151 if(verbose>=2) print_index(priv->idx,priv->idx_size); 158 if(verbose>=2) print_index(priv->idx,priv->idx_size);
152 break; 159 break;
153 } 160 }
154 } 161 }
162 if(hdr){
163 char buf[256];
164 int len=(size2<250)?size2:250;
165 stream_read(demuxer->stream,buf,len);
166 chunksize-=len;
167 buf[len]=0;
168 mp_msg(MSGT_HEADER,MSGL_V,"%-10s: %s\n",hdr,buf);
169 }
155 if(chunksize>0) stream_skip(demuxer->stream,chunksize); else 170 if(chunksize>0) stream_skip(demuxer->stream,chunksize); else
156 if(chunksize<0) mp_msg(MSGT_HEADER,MSGL_WARN,"chunksize=%d (id=%.4s)\n",chunksize,(char *) &id); 171 if(chunksize<0) mp_msg(MSGT_HEADER,MSGL_WARN,"chunksize=%d (id=%.4s)\n",chunksize,(char *) &id);
157 172
158 } 173 }
159 174