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: