Mercurial > mplayer.hg
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 |