comparison ape.c @ 4506:dfb8f047b552 libavformat

Add a context to av_log() calls and extend ape_dumpinfo prototype to do that.
author benoit
date Mon, 16 Feb 2009 14:44:31 +0000
parents 7d2f3f1b68d8
children 504007a5b7ff
comparison
equal deleted inserted replaced
4505:da04428a94db 4506:dfb8f047b552
160 return; 160 return;
161 } 161 }
162 162
163 val = get_le32(pb); /* APE tag version */ 163 val = get_le32(pb); /* APE tag version */
164 if (val > APE_TAG_VERSION) { 164 if (val > APE_TAG_VERSION) {
165 av_log(NULL, AV_LOG_ERROR, "Unsupported tag version. (>=%d)\n", APE_TAG_VERSION); 165 av_log(s, AV_LOG_ERROR, "Unsupported tag version. (>=%d)\n", APE_TAG_VERSION);
166 return; 166 return;
167 } 167 }
168 168
169 tag_bytes = get_le32(pb); /* tag size */ 169 tag_bytes = get_le32(pb); /* tag size */
170 if (tag_bytes - APE_TAG_FOOTER_BYTES > (1024 * 1024 * 16)) { 170 if (tag_bytes - APE_TAG_FOOTER_BYTES > (1024 * 1024 * 16)) {
171 av_log(NULL, AV_LOG_ERROR, "Tag size is way too big\n"); 171 av_log(s, AV_LOG_ERROR, "Tag size is way too big\n");
172 return; 172 return;
173 } 173 }
174 174
175 fields = get_le32(pb); /* number of fields */ 175 fields = get_le32(pb); /* number of fields */
176 if (fields > 65536) { 176 if (fields > 65536) {
177 av_log(NULL, AV_LOG_ERROR, "Too many tag fields (%d)\n", fields); 177 av_log(s, AV_LOG_ERROR, "Too many tag fields (%d)\n", fields);
178 return; 178 return;
179 } 179 }
180 180
181 val = get_le32(pb); /* flags */ 181 val = get_le32(pb); /* flags */
182 if (val & APE_TAG_FLAG_IS_HEADER) { 182 if (val & APE_TAG_FLAG_IS_HEADER) {
183 av_log(NULL, AV_LOG_ERROR, "APE Tag is a header\n"); 183 av_log(s, AV_LOG_ERROR, "APE Tag is a header\n");
184 return; 184 return;
185 } 185 }
186 186
187 if (val & APE_TAG_FLAG_CONTAINS_HEADER) 187 if (val & APE_TAG_FLAG_CONTAINS_HEADER)
188 tag_bytes += 2*APE_TAG_FOOTER_BYTES; 188 tag_bytes += 2*APE_TAG_FOOTER_BYTES;
191 191
192 for (i=0; i<fields; i++) 192 for (i=0; i<fields; i++)
193 ape_tag_read_field(s); 193 ape_tag_read_field(s);
194 194
195 #if ENABLE_DEBUG 195 #if ENABLE_DEBUG
196 av_log(NULL, AV_LOG_DEBUG, "\nAPE Tags:\n\n"); 196 av_log(s, AV_LOG_DEBUG, "\nAPE Tags:\n\n");
197 av_log(NULL, AV_LOG_DEBUG, "title = %s\n", s->title); 197 av_log(s, AV_LOG_DEBUG, "title = %s\n", s->title);
198 av_log(NULL, AV_LOG_DEBUG, "author = %s\n", s->author); 198 av_log(s, AV_LOG_DEBUG, "author = %s\n", s->author);
199 av_log(NULL, AV_LOG_DEBUG, "copyright = %s\n", s->copyright); 199 av_log(s, AV_LOG_DEBUG, "copyright = %s\n", s->copyright);
200 av_log(NULL, AV_LOG_DEBUG, "comment = %s\n", s->comment); 200 av_log(s, AV_LOG_DEBUG, "comment = %s\n", s->comment);
201 av_log(NULL, AV_LOG_DEBUG, "album = %s\n", s->album); 201 av_log(s, AV_LOG_DEBUG, "album = %s\n", s->album);
202 av_log(NULL, AV_LOG_DEBUG, "year = %d\n", s->year); 202 av_log(s, AV_LOG_DEBUG, "year = %d\n", s->year);
203 av_log(NULL, AV_LOG_DEBUG, "track = %d\n", s->track); 203 av_log(s, AV_LOG_DEBUG, "track = %d\n", s->track);
204 av_log(NULL, AV_LOG_DEBUG, "genre = %s\n", s->genre); 204 av_log(s, AV_LOG_DEBUG, "genre = %s\n", s->genre);
205 #endif 205 #endif
206 } 206 }
207 207
208 static int ape_probe(AVProbeData * p) 208 static int ape_probe(AVProbeData * p)
209 { 209 {
211 return AVPROBE_SCORE_MAX; 211 return AVPROBE_SCORE_MAX;
212 212
213 return 0; 213 return 0;
214 } 214 }
215 215
216 static void ape_dumpinfo(APEContext * ape_ctx) 216 static void ape_dumpinfo(AVFormatContext * s, APEContext * ape_ctx)
217 { 217 {
218 #if ENABLE_DEBUG 218 #if ENABLE_DEBUG
219 int i; 219 int i;
220 220
221 av_log(NULL, AV_LOG_DEBUG, "Descriptor Block:\n\n"); 221 av_log(s, AV_LOG_DEBUG, "Descriptor Block:\n\n");
222 av_log(NULL, AV_LOG_DEBUG, "magic = \"%c%c%c%c\"\n", ape_ctx->magic[0], ape_ctx->magic[1], ape_ctx->magic[2], ape_ctx->magic[3]); 222 av_log(s, AV_LOG_DEBUG, "magic = \"%c%c%c%c\"\n", ape_ctx->magic[0], ape_ctx->magic[1], ape_ctx->magic[2], ape_ctx->magic[3]);
223 av_log(NULL, AV_LOG_DEBUG, "fileversion = %d\n", ape_ctx->fileversion); 223 av_log(s, AV_LOG_DEBUG, "fileversion = %d\n", ape_ctx->fileversion);
224 av_log(NULL, AV_LOG_DEBUG, "descriptorlength = %d\n", ape_ctx->descriptorlength); 224 av_log(s, AV_LOG_DEBUG, "descriptorlength = %d\n", ape_ctx->descriptorlength);
225 av_log(NULL, AV_LOG_DEBUG, "headerlength = %d\n", ape_ctx->headerlength); 225 av_log(s, AV_LOG_DEBUG, "headerlength = %d\n", ape_ctx->headerlength);
226 av_log(NULL, AV_LOG_DEBUG, "seektablelength = %d\n", ape_ctx->seektablelength); 226 av_log(s, AV_LOG_DEBUG, "seektablelength = %d\n", ape_ctx->seektablelength);
227 av_log(NULL, AV_LOG_DEBUG, "wavheaderlength = %d\n", ape_ctx->wavheaderlength); 227 av_log(s, AV_LOG_DEBUG, "wavheaderlength = %d\n", ape_ctx->wavheaderlength);
228 av_log(NULL, AV_LOG_DEBUG, "audiodatalength = %d\n", ape_ctx->audiodatalength); 228 av_log(s, AV_LOG_DEBUG, "audiodatalength = %d\n", ape_ctx->audiodatalength);
229 av_log(NULL, AV_LOG_DEBUG, "audiodatalength_high = %d\n", ape_ctx->audiodatalength_high); 229 av_log(s, AV_LOG_DEBUG, "audiodatalength_high = %d\n", ape_ctx->audiodatalength_high);
230 av_log(NULL, AV_LOG_DEBUG, "wavtaillength = %d\n", ape_ctx->wavtaillength); 230 av_log(s, AV_LOG_DEBUG, "wavtaillength = %d\n", ape_ctx->wavtaillength);
231 av_log(NULL, AV_LOG_DEBUG, "md5 = "); 231 av_log(s, AV_LOG_DEBUG, "md5 = ");
232 for (i = 0; i < 16; i++) 232 for (i = 0; i < 16; i++)
233 av_log(NULL, AV_LOG_DEBUG, "%02x", ape_ctx->md5[i]); 233 av_log(s, AV_LOG_DEBUG, "%02x", ape_ctx->md5[i]);
234 av_log(NULL, AV_LOG_DEBUG, "\n"); 234 av_log(s, AV_LOG_DEBUG, "\n");
235 235
236 av_log(NULL, AV_LOG_DEBUG, "\nHeader Block:\n\n"); 236 av_log(s, AV_LOG_DEBUG, "\nHeader Block:\n\n");
237 237
238 av_log(NULL, AV_LOG_DEBUG, "compressiontype = %d\n", ape_ctx->compressiontype); 238 av_log(s, AV_LOG_DEBUG, "compressiontype = %d\n", ape_ctx->compressiontype);
239 av_log(NULL, AV_LOG_DEBUG, "formatflags = %d\n", ape_ctx->formatflags); 239 av_log(s, AV_LOG_DEBUG, "formatflags = %d\n", ape_ctx->formatflags);
240 av_log(NULL, AV_LOG_DEBUG, "blocksperframe = %d\n", ape_ctx->blocksperframe); 240 av_log(s, AV_LOG_DEBUG, "blocksperframe = %d\n", ape_ctx->blocksperframe);
241 av_log(NULL, AV_LOG_DEBUG, "finalframeblocks = %d\n", ape_ctx->finalframeblocks); 241 av_log(s, AV_LOG_DEBUG, "finalframeblocks = %d\n", ape_ctx->finalframeblocks);
242 av_log(NULL, AV_LOG_DEBUG, "totalframes = %d\n", ape_ctx->totalframes); 242 av_log(s, AV_LOG_DEBUG, "totalframes = %d\n", ape_ctx->totalframes);
243 av_log(NULL, AV_LOG_DEBUG, "bps = %d\n", ape_ctx->bps); 243 av_log(s, AV_LOG_DEBUG, "bps = %d\n", ape_ctx->bps);
244 av_log(NULL, AV_LOG_DEBUG, "channels = %d\n", ape_ctx->channels); 244 av_log(s, AV_LOG_DEBUG, "channels = %d\n", ape_ctx->channels);
245 av_log(NULL, AV_LOG_DEBUG, "samplerate = %d\n", ape_ctx->samplerate); 245 av_log(s, AV_LOG_DEBUG, "samplerate = %d\n", ape_ctx->samplerate);
246 246
247 av_log(NULL, AV_LOG_DEBUG, "\nSeektable\n\n"); 247 av_log(s, AV_LOG_DEBUG, "\nSeektable\n\n");
248 if ((ape_ctx->seektablelength / sizeof(uint32_t)) != ape_ctx->totalframes) { 248 if ((ape_ctx->seektablelength / sizeof(uint32_t)) != ape_ctx->totalframes) {
249 av_log(NULL, AV_LOG_DEBUG, "No seektable\n"); 249 av_log(s, AV_LOG_DEBUG, "No seektable\n");
250 } else { 250 } else {
251 for (i = 0; i < ape_ctx->seektablelength / sizeof(uint32_t); i++) { 251 for (i = 0; i < ape_ctx->seektablelength / sizeof(uint32_t); i++) {
252 if (i < ape_ctx->totalframes - 1) { 252 if (i < ape_ctx->totalframes - 1) {
253 av_log(NULL, AV_LOG_DEBUG, "%8d %d (%d bytes)\n", i, ape_ctx->seektable[i], ape_ctx->seektable[i + 1] - ape_ctx->seektable[i]); 253 av_log(s, AV_LOG_DEBUG, "%8d %d (%d bytes)\n", i, ape_ctx->seektable[i], ape_ctx->seektable[i + 1] - ape_ctx->seektable[i]);
254 } else { 254 } else {
255 av_log(NULL, AV_LOG_DEBUG, "%8d %d\n", i, ape_ctx->seektable[i]); 255 av_log(s, AV_LOG_DEBUG, "%8d %d\n", i, ape_ctx->seektable[i]);
256 } 256 }
257 } 257 }
258 } 258 }
259 259
260 av_log(NULL, AV_LOG_DEBUG, "\nFrames\n\n"); 260 av_log(s, AV_LOG_DEBUG, "\nFrames\n\n");
261 for (i = 0; i < ape_ctx->totalframes; i++) 261 for (i = 0; i < ape_ctx->totalframes; i++)
262 av_log(NULL, AV_LOG_DEBUG, "%8d %8lld %8d (%d samples)\n", i, ape_ctx->frames[i].pos, ape_ctx->frames[i].size, ape_ctx->frames[i].nblocks); 262 av_log(s, AV_LOG_DEBUG, "%8d %8lld %8d (%d samples)\n", i, ape_ctx->frames[i].pos, ape_ctx->frames[i].size, ape_ctx->frames[i].nblocks);
263 263
264 av_log(NULL, AV_LOG_DEBUG, "\nCalculated information:\n\n"); 264 av_log(s, AV_LOG_DEBUG, "\nCalculated information:\n\n");
265 av_log(NULL, AV_LOG_DEBUG, "junklength = %d\n", ape_ctx->junklength); 265 av_log(s, AV_LOG_DEBUG, "junklength = %d\n", ape_ctx->junklength);
266 av_log(NULL, AV_LOG_DEBUG, "firstframe = %d\n", ape_ctx->firstframe); 266 av_log(s, AV_LOG_DEBUG, "firstframe = %d\n", ape_ctx->firstframe);
267 av_log(NULL, AV_LOG_DEBUG, "totalsamples = %d\n", ape_ctx->totalsamples); 267 av_log(s, AV_LOG_DEBUG, "totalsamples = %d\n", ape_ctx->totalsamples);
268 #endif 268 #endif
269 } 269 }
270 270
271 static int ape_read_header(AVFormatContext * s, AVFormatParameters * ap) 271 static int ape_read_header(AVFormatContext * s, AVFormatParameters * ap)
272 { 272 {
401 } 401 }
402 ape->frames[i].size = (ape->frames[i].size + 3) & ~3; 402 ape->frames[i].size = (ape->frames[i].size + 3) & ~3;
403 } 403 }
404 404
405 405
406 ape_dumpinfo(ape); 406 ape_dumpinfo(s, ape);
407 407
408 /* try to read APE tags */ 408 /* try to read APE tags */
409 if (!url_is_streamed(pb)) { 409 if (!url_is_streamed(pb)) {
410 ape_parse_tag(s); 410 ape_parse_tag(s);
411 url_fseek(pb, 0, SEEK_SET); 411 url_fseek(pb, 0, SEEK_SET);