Mercurial > libavformat.hg
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); |