Mercurial > mplayer.hg
comparison libmpdemux/demux_mov.c @ 6139:3898967fcc96
some more output cosmetics, especially for vivo and mov demuxers
author | arpi |
---|---|
date | Mon, 20 May 2002 03:51:58 +0000 |
parents | 1f320716fe92 |
children | 5becd843ff47 |
comparison
equal
deleted
inserted
replaced
6138:523014df7d32 | 6139:3898967fcc96 |
---|---|
137 for (i=0; i < trak->chunks_size; i++) | 137 for (i=0; i < trak->chunks_size; i++) |
138 trak->chunks[i].pos = -1; | 138 trak->chunks[i].pos = -1; |
139 } | 139 } |
140 #endif | 140 #endif |
141 | 141 |
142 mp_msg(MSGT_DEMUX, MSGL_HINT, "MOV track: %d chunks, %d samples\n",trak->chunks_size,trak->samples_size); | 142 mp_msg(MSGT_DEMUX, MSGL_INFO, "MOV track #%d: %d chunks, %d samples\n",trak->id,trak->chunks_size,trak->samples_size); |
143 mp_msg(MSGT_DEMUX, MSGL_HINT, "pts=%d scale=%d time=%5.3f\n",trak->length,trak->timescale,(float)trak->length/(float)trak->timescale); | 143 mp_msg(MSGT_DEMUX, MSGL_V, "pts=%d scale=%d time=%5.3f\n",trak->length,trak->timescale,(float)trak->length/(float)trak->timescale); |
144 | 144 |
145 // process chunkmap: | 145 // process chunkmap: |
146 i=trak->chunkmap_size; | 146 i=trak->chunkmap_size; |
147 while(i>0){ | 147 while(i>0){ |
148 --i; | 148 --i; |
608 // if(trak) printf("MOV: Warning! trak in trak?\n"); | 608 // if(trak) printf("MOV: Warning! trak in trak?\n"); |
609 if(priv->track_db>=MOV_MAX_TRACKS){ | 609 if(priv->track_db>=MOV_MAX_TRACKS){ |
610 mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_MOVtooManyTrk); | 610 mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_MOVtooManyTrk); |
611 return; | 611 return; |
612 } | 612 } |
613 if(!priv->track_db) mp_msg(MSGT_DEMUX, MSGL_INFO, "--------------\n"); | |
613 trak=malloc(sizeof(mov_track_t)); | 614 trak=malloc(sizeof(mov_track_t)); |
614 memset(trak,0,sizeof(mov_track_t)); | 615 memset(trak,0,sizeof(mov_track_t)); |
615 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: Track #%d:\n",priv->track_db); | 616 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: Track #%d:\n",priv->track_db); |
616 trak->id=priv->track_db; | 617 trak->id=priv->track_db; |
617 priv->tracks[priv->track_db]=trak; | 618 priv->tracks[priv->track_db]=trak; |
696 char2short(trak->stdata,24)/trak->durmap[0].dur); | 697 char2short(trak->stdata,24)/trak->durmap[0].dur); |
697 sh->samplerate = 44100; | 698 sh->samplerate = 44100; |
698 } | 699 } |
699 } | 700 } |
700 | 701 |
701 mp_msg(MSGT_DEMUX, MSGL_INFO, "Audio bits: %d chans: %d\n", | 702 mp_msg(MSGT_DEMUX, MSGL_INFO, "Audio bits: %d chans: %d rate: %d\n", |
702 trak->stdata[19],trak->stdata[17]); | 703 trak->stdata[19],trak->stdata[17],sh->samplerate); |
703 mp_msg(MSGT_DEMUX, MSGL_INFO, "Audio sample rate: %d\n", | |
704 sh->samplerate/*char2short(trak->stdata,24)*/); | |
705 if((trak->stdata[9]==0) && trak->stdata_len >= 36) { // version 0 with extra atoms | 704 if((trak->stdata[9]==0) && trak->stdata_len >= 36) { // version 0 with extra atoms |
706 int atom_len = char2int(trak->stdata,28); | 705 int atom_len = char2int(trak->stdata,28); |
707 switch(char2int(trak->stdata,32)) { // atom type | 706 switch(char2int(trak->stdata,32)) { // atom type |
708 case MOV_FOURCC('e','s','d','s'): { | 707 case MOV_FOURCC('e','s','d','s'): { |
709 mp_msg(MSGT_DEMUX, MSGL_INFO, "MOV: Found MPEG4 audio Elementary Stream Descriptor atom (%d)!\n", atom_len); | 708 mp_msg(MSGT_DEMUX, MSGL_INFO, "MOV: Found MPEG4 audio Elementary Stream Descriptor atom (%d)!\n", atom_len); |
884 // codec and display width differ... use display one for aspect | 883 // codec and display width differ... use display one for aspect |
885 sh->aspect=trak->tkdata[77]|(trak->tkdata[76]<<8); | 884 sh->aspect=trak->tkdata[77]|(trak->tkdata[76]<<8); |
886 sh->aspect/=trak->tkdata[81]|(trak->tkdata[80]<<8); | 885 sh->aspect/=trak->tkdata[81]|(trak->tkdata[80]<<8); |
887 } | 886 } |
888 | 887 |
889 if(depth&(~15)) printf("*** depth = 0x%X\n",depth); | 888 if(depth>32+8) printf("*** depth = 0x%X\n",depth); |
890 | 889 |
891 // palettized? | 890 // palettized? |
892 depth&=31; // flag 32 means grayscale | 891 depth&=31; // flag 32 means grayscale |
893 if ((depth == 2) || (depth == 4) || (depth == 8)) | 892 if ((depth == 2) || (depth == 4) || (depth == 8)) |
894 palette_count = (1 << depth); | 893 palette_count = (1 << depth); |
1121 unsigned int udta_id; | 1120 unsigned int udta_id; |
1122 off_t udta_len; | 1121 off_t udta_len; |
1123 off_t udta_size = len; | 1122 off_t udta_size = len; |
1124 | 1123 |
1125 mp_msg(MSGT_DEMUX, MSGL_DBG2, "mov: user data record found\n"); | 1124 mp_msg(MSGT_DEMUX, MSGL_DBG2, "mov: user data record found\n"); |
1126 mp_msg(MSGT_DEMUX, MSGL_INFO, "Quicktime Clip Info:\n"); | 1125 mp_msg(MSGT_DEMUX, MSGL_V, "Quicktime Clip Info:\n"); |
1127 | 1126 |
1128 while((len > 8) && (udta_size > 8)) | 1127 while((len > 8) && (udta_size > 8)) |
1129 { | 1128 { |
1130 udta_len = stream_read_dword(demuxer->stream); | 1129 udta_len = stream_read_dword(demuxer->stream); |
1131 udta_id = stream_read_dword(demuxer->stream); | 1130 udta_id = stream_read_dword(demuxer->stream); |
1156 text[text_len+2] = 0x0; | 1155 text[text_len+2] = 0x0; |
1157 switch(udta_id) | 1156 switch(udta_id) |
1158 { | 1157 { |
1159 case MOV_FOURCC(0xa9,'a','u','t'): | 1158 case MOV_FOURCC(0xa9,'a','u','t'): |
1160 demux_info_add(demuxer, "author", &text[2]); | 1159 demux_info_add(demuxer, "author", &text[2]); |
1161 mp_msg(MSGT_DEMUX, MSGL_INFO, " Author: %s\n", &text[2]); | 1160 mp_msg(MSGT_DEMUX, MSGL_V, " Author: %s\n", &text[2]); |
1162 break; | 1161 break; |
1163 case MOV_FOURCC(0xa9,'c','p','y'): | 1162 case MOV_FOURCC(0xa9,'c','p','y'): |
1164 demux_info_add(demuxer, "copyright", &text[2]); | 1163 demux_info_add(demuxer, "copyright", &text[2]); |
1165 mp_msg(MSGT_DEMUX, MSGL_INFO, " Copyright: %s\n", &text[2]); | 1164 mp_msg(MSGT_DEMUX, MSGL_V, " Copyright: %s\n", &text[2]); |
1166 break; | 1165 break; |
1167 case MOV_FOURCC(0xa9,'i','n','f'): | 1166 case MOV_FOURCC(0xa9,'i','n','f'): |
1168 mp_msg(MSGT_DEMUX, MSGL_INFO, " Info: %s\n", &text[2]); | 1167 mp_msg(MSGT_DEMUX, MSGL_V, " Info: %s\n", &text[2]); |
1169 break; | 1168 break; |
1170 case MOV_FOURCC('n','a','m','e'): | 1169 case MOV_FOURCC('n','a','m','e'): |
1171 case MOV_FOURCC(0xa9,'n','a','m'): | 1170 case MOV_FOURCC(0xa9,'n','a','m'): |
1172 demux_info_add(demuxer, "name", &text[2]); | 1171 demux_info_add(demuxer, "name", &text[2]); |
1173 mp_msg(MSGT_DEMUX, MSGL_INFO, " Name: %s\n", &text[2]); | 1172 mp_msg(MSGT_DEMUX, MSGL_V, " Name: %s\n", &text[2]); |
1174 break; | 1173 break; |
1175 case MOV_FOURCC(0xa9,'A','R','T'): | 1174 case MOV_FOURCC(0xa9,'A','R','T'): |
1176 mp_msg(MSGT_DEMUX, MSGL_INFO, " Artist: %s\n", &text[2]); | 1175 mp_msg(MSGT_DEMUX, MSGL_V, " Artist: %s\n", &text[2]); |
1177 break; | 1176 break; |
1178 case MOV_FOURCC(0xa9,'d','i','r'): | 1177 case MOV_FOURCC(0xa9,'d','i','r'): |
1179 mp_msg(MSGT_DEMUX, MSGL_INFO, " Director: %s\n", &text[2]); | 1178 mp_msg(MSGT_DEMUX, MSGL_V, " Director: %s\n", &text[2]); |
1180 break; | 1179 break; |
1181 case MOV_FOURCC(0xa9,'c','m','t'): | 1180 case MOV_FOURCC(0xa9,'c','m','t'): |
1182 demux_info_add(demuxer, "comments", &text[2]); | 1181 demux_info_add(demuxer, "comments", &text[2]); |
1183 mp_msg(MSGT_DEMUX, MSGL_INFO, " Comment: %s\n", &text[2]); | 1182 mp_msg(MSGT_DEMUX, MSGL_V, " Comment: %s\n", &text[2]); |
1184 break; | 1183 break; |
1185 case MOV_FOURCC(0xa9,'r','e','q'): | 1184 case MOV_FOURCC(0xa9,'r','e','q'): |
1186 mp_msg(MSGT_DEMUX, MSGL_INFO, " Requirements: %s\n", &text[2]); | 1185 mp_msg(MSGT_DEMUX, MSGL_V, " Requirements: %s\n", &text[2]); |
1187 break; | 1186 break; |
1188 case MOV_FOURCC(0xa9,'s','w','r'): | 1187 case MOV_FOURCC(0xa9,'s','w','r'): |
1189 demux_info_add(demuxer, "encoder", &text[2]); | 1188 demux_info_add(demuxer, "encoder", &text[2]); |
1190 mp_msg(MSGT_DEMUX, MSGL_INFO, " Software: %s\n", &text[2]); | 1189 mp_msg(MSGT_DEMUX, MSGL_V, " Software: %s\n", &text[2]); |
1191 break; | 1190 break; |
1192 case MOV_FOURCC(0xa9,'d','a','y'): | 1191 case MOV_FOURCC(0xa9,'d','a','y'): |
1193 mp_msg(MSGT_DEMUX, MSGL_INFO, " Creation timestamp: %s\n", &text[2]); | 1192 mp_msg(MSGT_DEMUX, MSGL_V, " Creation timestamp: %s\n", &text[2]); |
1194 break; | 1193 break; |
1195 case MOV_FOURCC(0xa9,'f','m','t'): | 1194 case MOV_FOURCC(0xa9,'f','m','t'): |
1196 mp_msg(MSGT_DEMUX, MSGL_INFO, " Format: %s\n", &text[2]); | 1195 mp_msg(MSGT_DEMUX, MSGL_V, " Format: %s\n", &text[2]); |
1197 break; | 1196 break; |
1198 case MOV_FOURCC(0xa9,'p','r','d'): | 1197 case MOV_FOURCC(0xa9,'p','r','d'): |
1199 mp_msg(MSGT_DEMUX, MSGL_INFO, " Producer: %s\n", &text[2]); | 1198 mp_msg(MSGT_DEMUX, MSGL_V, " Producer: %s\n", &text[2]); |
1200 break; | 1199 break; |
1201 case MOV_FOURCC(0xa9,'p','r','f'): | 1200 case MOV_FOURCC(0xa9,'p','r','f'): |
1202 mp_msg(MSGT_DEMUX, MSGL_INFO, " Performer(s): %s\n", &text[2]); | 1201 mp_msg(MSGT_DEMUX, MSGL_V, " Performer(s): %s\n", &text[2]); |
1203 break; | 1202 break; |
1204 case MOV_FOURCC(0xa9,'s','r','c'): | 1203 case MOV_FOURCC(0xa9,'s','r','c'): |
1205 mp_msg(MSGT_DEMUX, MSGL_INFO, " Source providers: %s\n", &text[2]); | 1204 mp_msg(MSGT_DEMUX, MSGL_V, " Source providers: %s\n", &text[2]); |
1206 break; | 1205 break; |
1207 } | 1206 } |
1208 udta_size -= 4+text_len; | 1207 udta_size -= 4+text_len; |
1209 break; | 1208 break; |
1210 } | 1209 } |
1251 mp_msg(MSGT_DEMUX,MSGL_ERR,"MOV: Cannot seek to the beginning of the Movie header (0x%x)\n", | 1250 mp_msg(MSGT_DEMUX,MSGL_ERR,"MOV: Cannot seek to the beginning of the Movie header (0x%x)\n", |
1252 priv->moov_start); | 1251 priv->moov_start); |
1253 return 0; | 1252 return 0; |
1254 } | 1253 } |
1255 lschunks(demuxer, 0, priv->moov_end, NULL); | 1254 lschunks(demuxer, 0, priv->moov_end, NULL); |
1255 // mp_msg(MSGT_DEMUX, MSGL_INFO, "--------------\n"); | |
1256 | 1256 |
1257 return 1; | 1257 return 1; |
1258 } | 1258 } |
1259 | 1259 |
1260 // return value: | 1260 // return value: |