You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
opus_celt: normalize using mdct scale
Removes a per-sample divide in the IIR filter deemphasis filter. Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
This commit is contained in:
@@ -907,10 +907,11 @@ int ff_celt_decode_frame(CeltFrame *f, OpusRangeCoder *rc,
|
|||||||
|
|
||||||
/* deemphasis and output scaling */
|
/* deemphasis and output scaling */
|
||||||
for (j = 0; j < frame_size; j++) {
|
for (j = 0; j < frame_size; j++) {
|
||||||
float tmp = block->buf[1024 - frame_size + j] + m;
|
const float tmp = block->buf[1024 - frame_size + j] + m;
|
||||||
m = tmp * CELT_EMPH_COEFF;
|
m = tmp * CELT_EMPH_COEFF;
|
||||||
output[i][j] = tmp / 32768.;
|
output[i][j] = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
block->emph_coeff = m;
|
block->emph_coeff = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1006,7 +1007,7 @@ int ff_celt_init(AVCodecContext *avctx, CeltFrame **f, int output_channels)
|
|||||||
frm->output_channels = output_channels;
|
frm->output_channels = output_channels;
|
||||||
|
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(frm->imdct); i++)
|
for (i = 0; i < FF_ARRAY_ELEMS(frm->imdct); i++)
|
||||||
if ((ret = ff_mdct15_init(&frm->imdct[i], 1, i + 3, -1.0f)) < 0)
|
if ((ret = ff_mdct15_init(&frm->imdct[i], 1, i + 3, -1.0f/32768)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if ((ret = ff_celt_pvq_init(&frm->pvq)) < 0)
|
if ((ret = ff_celt_pvq_init(&frm->pvq)) < 0)
|
||||||
|
Reference in New Issue
Block a user