diff options
author | Nikolas Bowe <nbowe-at-google.com@ffmpeg.org> | 2016-09-09 22:48:52 +0300 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-09-15 13:18:55 +0300 |
commit | 96cd6f672e5d8c5d49b06de4f24376f36880fea8 (patch) | |
tree | a21fbbd26b2c12c0c932b8f9b8af9e3a7568d836 /libavcodec/ac3dec.c | |
parent | 6f062eb8d0e17398f225c537d5fd78f5ae880906 (diff) |
avcodec/(e)ac3: Fix target_level for EAC3.
Currently when using target_level with EAC3 it produces silence. This small patch fixes target_level for decoding EAC3.
Example:
ffmpeg -y -i /tmp/test.wav -acodec eac3 -dialnorm -14 -ac 6 -b:a 384000 /tmp/test.m2ts
ffmpeg -y -target_level -24 -i /tmp/test.m2ts -acodec pcm_s16le -f matroska /tmp/out.mkv
ffplay /tmp/out.mkv
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/ac3dec.c')
-rw-r--r-- | libavcodec/ac3dec.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index fac189b6b6..a95c2049b5 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -63,9 +63,11 @@ static const uint8_t quantization_tab[16] = { 5, 6, 7, 8, 9, 10, 11, 12, 14, 16 }; +#if (!USE_FIXED) /** dynamic range table. converts codes to scale factors. */ static float dynamic_range_tab[256]; -static float heavy_dynamic_range_tab[256]; +float ff_ac3_heavy_dynamic_range_tab[256]; +#endif /** Adjustments in dB gain */ static const float gain_levels[9] = { @@ -159,6 +161,7 @@ static av_cold void ac3_tables_init(void) b5_mantissas[i] = symmetric_dequant(i, 15); } +#if (!USE_FIXED) /* generate dynamic range table reference: Section 7.7.1 Dynamic Range Control */ for (i = 0; i < 256; i++) { @@ -170,9 +173,9 @@ static av_cold void ac3_tables_init(void) reference: Section 7.7.2 Heavy Compression */ for (i = 0; i < 256; i++) { int v = (i >> 4) - ((i >> 7) << 4) - 4; - heavy_dynamic_range_tab[i] = powf(2.0f, v) * ((i & 0xF) | 0x10); + ff_ac3_heavy_dynamic_range_tab[i] = powf(2.0f, v) * ((i & 0xF) | 0x10); } - +#endif } /** |