Mercurial > libavcodec.hg
comparison mpegaudiodec.c @ 7763:73b10d25cb8d libavcodec
Remove debuging junk that probably hasnt been used by anyone since years.
author | michael |
---|---|
date | Sun, 31 Aug 2008 20:26:28 +0000 |
parents | 2240c6340eac |
children | 8195c970d077 |
comparison
equal
deleted
inserted
replaced
7762:e2573d045e79 | 7763:73b10d25cb8d |
---|---|
22 /** | 22 /** |
23 * @file mpegaudiodec.c | 23 * @file mpegaudiodec.c |
24 * MPEG Audio decoder. | 24 * MPEG Audio decoder. |
25 */ | 25 */ |
26 | 26 |
27 //#define DEBUG | |
28 #include "avcodec.h" | 27 #include "avcodec.h" |
29 #include "bitstream.h" | 28 #include "bitstream.h" |
30 #include "dsputil.h" | 29 #include "dsputil.h" |
31 | 30 |
32 /* | 31 /* |
428 m = (uint32_t)(fm*(1LL<<31) + 0.5); | 427 m = (uint32_t)(fm*(1LL<<31) + 0.5); |
429 e+= FRAC_BITS - 31 + 5 - 100; | 428 e+= FRAC_BITS - 31 + 5 - 100; |
430 | 429 |
431 /* normalized to FRAC_BITS */ | 430 /* normalized to FRAC_BITS */ |
432 table_4_3_value[i] = m; | 431 table_4_3_value[i] = m; |
433 // av_log(NULL, AV_LOG_DEBUG, "%d %d %f\n", i, m, pow((double)i, 4.0 / 3.0)); | |
434 table_4_3_exp[i] = -e; | 432 table_4_3_exp[i] = -e; |
435 } | 433 } |
436 for(i=0; i<512*16; i++){ | 434 for(i=0; i<512*16; i++){ |
437 int exponent= (i>>4); | 435 int exponent= (i>>4); |
438 double f= pow(i&15, 4.0 / 3.0) * pow(2, (exponent-400)*0.25 + FRAC_BITS + 5); | 436 double f= pow(i&15, 4.0 / 3.0) * pow(2, (exponent-400)*0.25 + FRAC_BITS + 5); |
483 csa_table[i][3] = FIXHR(ca/4) - FIXHR(cs/4); | 481 csa_table[i][3] = FIXHR(ca/4) - FIXHR(cs/4); |
484 csa_table_float[i][0] = cs; | 482 csa_table_float[i][0] = cs; |
485 csa_table_float[i][1] = ca; | 483 csa_table_float[i][1] = ca; |
486 csa_table_float[i][2] = ca + cs; | 484 csa_table_float[i][2] = ca + cs; |
487 csa_table_float[i][3] = ca - cs; | 485 csa_table_float[i][3] = ca - cs; |
488 // printf("%d %d %d %d\n", FIX(cs), FIX(cs-1), FIX(ca), FIX(cs)-FIX(ca)); | |
489 // av_log(NULL, AV_LOG_DEBUG,"%f %f %f %f\n", cs, ca, ca+cs, ca-cs); | |
490 } | 486 } |
491 | 487 |
492 /* compute mdct windows */ | 488 /* compute mdct windows */ |
493 for(i=0;i<36;i++) { | 489 for(i=0;i<36;i++) { |
494 for(j=0; j<4; j++){ | 490 for(j=0; j<4; j++){ |
512 | 508 |
513 if(j==2) | 509 if(j==2) |
514 mdct_win[j][i/3] = FIXHR((d / (1<<5))); | 510 mdct_win[j][i/3] = FIXHR((d / (1<<5))); |
515 else | 511 else |
516 mdct_win[j][i ] = FIXHR((d / (1<<5))); | 512 mdct_win[j][i ] = FIXHR((d / (1<<5))); |
517 // av_log(NULL, AV_LOG_DEBUG, "%2d %d %f\n", i,j,d / (1<<5)); | |
518 } | 513 } |
519 } | 514 } |
520 | 515 |
521 /* NOTE: we do frequency inversion adter the MDCT by changing | 516 /* NOTE: we do frequency inversion adter the MDCT by changing |
522 the sign of the right window coefs */ | 517 the sign of the right window coefs */ |
525 mdct_win[j + 4][i] = mdct_win[j][i]; | 520 mdct_win[j + 4][i] = mdct_win[j][i]; |
526 mdct_win[j + 4][i + 1] = -mdct_win[j][i + 1]; | 521 mdct_win[j + 4][i + 1] = -mdct_win[j][i + 1]; |
527 } | 522 } |
528 } | 523 } |
529 | 524 |
530 #if defined(DEBUG) | |
531 for(j=0;j<8;j++) { | |
532 av_log(avctx, AV_LOG_DEBUG, "win%d=\n", j); | |
533 for(i=0;i<36;i++) | |
534 av_log(avctx, AV_LOG_DEBUG, "%f, ", (double)mdct_win[j][i] / FRAC_ONE); | |
535 av_log(avctx, AV_LOG_DEBUG, "\n"); | |
536 } | |
537 #endif | |
538 init = 1; | 525 init = 1; |
539 } | 526 } |
540 | 527 |
541 #ifdef DEBUG | |
542 s->frame_count = 0; | |
543 #endif | |
544 if (avctx->codec_id == CODEC_ID_MP3ADU) | 528 if (avctx->codec_id == CODEC_ID_MP3ADU) |
545 s->adu_mode = 1; | 529 s->adu_mode = 1; |
546 return 0; | 530 return 0; |
547 } | 531 } |
548 | 532 |
1249 bit_alloc[0][i] = v; | 1233 bit_alloc[0][i] = v; |
1250 bit_alloc[1][i] = v; | 1234 bit_alloc[1][i] = v; |
1251 j += 1 << bit_alloc_bits; | 1235 j += 1 << bit_alloc_bits; |
1252 } | 1236 } |
1253 | 1237 |
1254 #ifdef DEBUG | |
1255 { | |
1256 for(ch=0;ch<s->nb_channels;ch++) { | |
1257 for(i=0;i<sblimit;i++) | |
1258 dprintf(s->avctx, " %d", bit_alloc[ch][i]); | |
1259 dprintf(s->avctx, "\n"); | |
1260 } | |
1261 } | |
1262 #endif | |
1263 | |
1264 /* scale codes */ | 1238 /* scale codes */ |
1265 for(i=0;i<sblimit;i++) { | 1239 for(i=0;i<sblimit;i++) { |
1266 for(ch=0;ch<s->nb_channels;ch++) { | 1240 for(ch=0;ch<s->nb_channels;ch++) { |
1267 if (bit_alloc[ch][i]) | 1241 if (bit_alloc[ch][i]) |
1268 scale_code[ch][i] = get_bits(&s->gb, 2); | 1242 scale_code[ch][i] = get_bits(&s->gb, 2); |
1298 break; | 1272 break; |
1299 } | 1273 } |
1300 } | 1274 } |
1301 } | 1275 } |
1302 } | 1276 } |
1303 | |
1304 #ifdef DEBUG | |
1305 for(ch=0;ch<s->nb_channels;ch++) { | |
1306 for(i=0;i<sblimit;i++) { | |
1307 if (bit_alloc[ch][i]) { | |
1308 sf = scale_factors[ch][i]; | |
1309 dprintf(s->avctx, " %d %d %d", sf[0], sf[1], sf[2]); | |
1310 } else { | |
1311 dprintf(s->avctx, " -"); | |
1312 } | |
1313 } | |
1314 dprintf(s->avctx, "\n"); | |
1315 } | |
1316 #endif | |
1317 | 1277 |
1318 /* samples */ | 1278 /* samples */ |
1319 for(k=0;k<3;k++) { | 1279 for(k=0;k<3;k++) { |
1320 for(l=0;l<12;l+=3) { | 1280 for(l=0;l<12;l+=3) { |
1321 j = 0; | 1281 j = 0; |
1988 } | 1948 } |
1989 buf += 18; | 1949 buf += 18; |
1990 } | 1950 } |
1991 } | 1951 } |
1992 | 1952 |
1993 #if defined(DEBUG) | |
1994 void sample_dump(int fnum, int32_t *tab, int n) | |
1995 { | |
1996 static FILE *files[16], *f; | |
1997 char buf[512]; | |
1998 int i; | |
1999 int32_t v; | |
2000 | |
2001 f = files[fnum]; | |
2002 if (!f) { | |
2003 snprintf(buf, sizeof(buf), "/tmp/out%d.%s.pcm", | |
2004 fnum, | |
2005 #ifdef USE_HIGHPRECISION | |
2006 "hp" | |
2007 #else | |
2008 "lp" | |
2009 #endif | |
2010 ); | |
2011 f = fopen(buf, "w"); | |
2012 if (!f) | |
2013 return; | |
2014 files[fnum] = f; | |
2015 } | |
2016 | |
2017 if (fnum == 0) { | |
2018 static int pos = 0; | |
2019 av_log(NULL, AV_LOG_DEBUG, "pos=%d\n", pos); | |
2020 for(i=0;i<n;i++) { | |
2021 av_log(NULL, AV_LOG_DEBUG, " %0.4f", (double)tab[i] / FRAC_ONE); | |
2022 if ((i % 18) == 17) | |
2023 av_log(NULL, AV_LOG_DEBUG, "\n"); | |
2024 } | |
2025 pos += n; | |
2026 } | |
2027 for(i=0;i<n;i++) { | |
2028 /* normalize to 23 frac bits */ | |
2029 v = tab[i] << (23 - FRAC_BITS); | |
2030 fwrite(&v, 1, sizeof(int32_t), f); | |
2031 } | |
2032 } | |
2033 #endif | |
2034 | |
2035 | |
2036 /* main layer3 decoding function */ | 1953 /* main layer3 decoding function */ |
2037 static int mp_decode_layer3(MPADecodeContext *s) | 1954 static int mp_decode_layer3(MPADecodeContext *s) |
2038 { | 1955 { |
2039 int nb_granules, main_data_begin, private_bits; | 1956 int nb_granules, main_data_begin, private_bits; |
2040 int gr, ch, blocksplit_flag, i, j, k, n, bits_pos; | 1957 int gr, ch, blocksplit_flag, i, j, k, n, bits_pos; |
2199 } | 2116 } |
2200 } | 2117 } |
2201 } | 2118 } |
2202 g->scale_factors[j++] = 0; | 2119 g->scale_factors[j++] = 0; |
2203 } | 2120 } |
2204 #if defined(DEBUG) | |
2205 { | |
2206 dprintf(s->avctx, "scfsi=%x gr=%d ch=%d scale_factors:\n", | |
2207 g->scfsi, gr, ch); | |
2208 for(i=0;i<j;i++) | |
2209 dprintf(s->avctx, " %d", g->scale_factors[i]); | |
2210 dprintf(s->avctx, "\n"); | |
2211 } | |
2212 #endif | |
2213 } else { | 2121 } else { |
2214 int tindex, tindex2, slen[4], sl, sf; | 2122 int tindex, tindex2, slen[4], sl, sf; |
2215 | 2123 |
2216 /* LSF scale factors */ | 2124 /* LSF scale factors */ |
2217 if (g->block_type == 2) { | 2125 if (g->block_type == 2) { |
2261 } | 2169 } |
2262 } | 2170 } |
2263 /* XXX: should compute exact size */ | 2171 /* XXX: should compute exact size */ |
2264 for(;j<40;j++) | 2172 for(;j<40;j++) |
2265 g->scale_factors[j] = 0; | 2173 g->scale_factors[j] = 0; |
2266 #if defined(DEBUG) | |
2267 { | |
2268 dprintf(s->avctx, "gr=%d ch=%d scale_factors:\n", | |
2269 gr, ch); | |
2270 for(i=0;i<40;i++) | |
2271 dprintf(s->avctx, " %d", g->scale_factors[i]); | |
2272 dprintf(s->avctx, "\n"); | |
2273 } | |
2274 #endif | |
2275 } | 2174 } |
2276 | 2175 |
2277 exponents_from_scale_factors(s, g, exponents); | 2176 exponents_from_scale_factors(s, g, exponents); |
2278 | 2177 |
2279 /* read Huffman coded residue */ | 2178 /* read Huffman coded residue */ |
2280 huffman_decode(s, g, exponents, bits_pos + g->part2_3_length); | 2179 huffman_decode(s, g, exponents, bits_pos + g->part2_3_length); |
2281 #if defined(DEBUG) | |
2282 sample_dump(0, g->sb_hybrid, 576); | |
2283 #endif | |
2284 } /* ch */ | 2180 } /* ch */ |
2285 | 2181 |
2286 if (s->nb_channels == 2) | 2182 if (s->nb_channels == 2) |
2287 compute_stereo(s, &granules[0][gr], &granules[1][gr]); | 2183 compute_stereo(s, &granules[0][gr], &granules[1][gr]); |
2288 | 2184 |
2289 for(ch=0;ch<s->nb_channels;ch++) { | 2185 for(ch=0;ch<s->nb_channels;ch++) { |
2290 g = &granules[ch][gr]; | 2186 g = &granules[ch][gr]; |
2291 | 2187 |
2292 reorder_block(s, g); | 2188 reorder_block(s, g); |
2293 #if defined(DEBUG) | |
2294 sample_dump(0, g->sb_hybrid, 576); | |
2295 #endif | |
2296 s->compute_antialias(s, g); | 2189 s->compute_antialias(s, g); |
2297 #if defined(DEBUG) | |
2298 sample_dump(1, g->sb_hybrid, 576); | |
2299 #endif | |
2300 compute_imdct(s, g, &s->sb_samples[ch][18 * gr][0], s->mdct_buf[ch]); | 2190 compute_imdct(s, g, &s->sb_samples[ch][18 * gr][0], s->mdct_buf[ch]); |
2301 #if defined(DEBUG) | |
2302 sample_dump(2, &s->sb_samples[ch][18 * gr][0], 576); | |
2303 #endif | |
2304 } | 2191 } |
2305 } /* gr */ | 2192 } /* gr */ |
2306 if(get_bits_count(&s->gb)<0) | 2193 if(get_bits_count(&s->gb)<0) |
2307 skip_bits_long(&s->gb, -get_bits_count(&s->gb)); | 2194 skip_bits_long(&s->gb, -get_bits_count(&s->gb)); |
2308 return nb_granules * 18; | 2195 return nb_granules * 18; |
2360 memcpy(s->last_buf + s->last_buf_size, s->gb.buffer + buf_size - HEADER_SIZE - i, i); | 2247 memcpy(s->last_buf + s->last_buf_size, s->gb.buffer + buf_size - HEADER_SIZE - i, i); |
2361 s->last_buf_size += i; | 2248 s->last_buf_size += i; |
2362 | 2249 |
2363 break; | 2250 break; |
2364 } | 2251 } |
2365 #if defined(DEBUG) | 2252 |
2366 for(i=0;i<nb_frames;i++) { | |
2367 for(ch=0;ch<s->nb_channels;ch++) { | |
2368 int j; | |
2369 dprintf(s->avctx, "%d-%d:", i, ch); | |
2370 for(j=0;j<SBLIMIT;j++) | |
2371 dprintf(s->avctx, " %0.6f", (double)s->sb_samples[ch][i][j] / FRAC_ONE); | |
2372 dprintf(s->avctx, "\n"); | |
2373 } | |
2374 } | |
2375 #endif | |
2376 /* apply the synthesis filter */ | 2253 /* apply the synthesis filter */ |
2377 for(ch=0;ch<s->nb_channels;ch++) { | 2254 for(ch=0;ch<s->nb_channels;ch++) { |
2378 samples_ptr = samples + ch; | 2255 samples_ptr = samples + ch; |
2379 for(i=0;i<nb_frames;i++) { | 2256 for(i=0;i<nb_frames;i++) { |
2380 ff_mpa_synth_filter(s->synth_buf[ch], &(s->synth_buf_offset[ch]), | 2257 ff_mpa_synth_filter(s->synth_buf[ch], &(s->synth_buf_offset[ch]), |
2382 samples_ptr, s->nb_channels, | 2259 samples_ptr, s->nb_channels, |
2383 s->sb_samples[ch][i]); | 2260 s->sb_samples[ch][i]); |
2384 samples_ptr += 32 * s->nb_channels; | 2261 samples_ptr += 32 * s->nb_channels; |
2385 } | 2262 } |
2386 } | 2263 } |
2387 #ifdef DEBUG | 2264 |
2388 s->frame_count++; | |
2389 #endif | |
2390 return nb_frames * 32 * sizeof(OUT_INT) * s->nb_channels; | 2265 return nb_frames * 32 * sizeof(OUT_INT) * s->nb_channels; |
2391 } | 2266 } |
2392 | 2267 |
2393 static int decode_frame(AVCodecContext * avctx, | 2268 static int decode_frame(AVCodecContext * avctx, |
2394 void *data, int *data_size, | 2269 void *data, int *data_size, |