[FFmpeg-devel] [PATCH] avcodec/on2avc: use the matching AVTX context for the 512 sized iMDCT

Marton Balint cus at passwd.hu
Sat Aug 5 19:52:30 EEST 2023



On Sat, 5 Aug 2023, Lynne wrote:

> Aug 5, 2023, 11:15 by dev at lynne.ee:
>
>> Aug 5, 2023, 10:33 by cus at passwd.hu:
>>
>>> Improves the audio corruption regression caused by
>>> 6ba0aa1770ba29eb4126c6a706f6b0cd3809648f reported in ticket #10029.
>>>
>>> There is still however a noticable audio glitch, so the FFT conversion to AVTX
>>> probably also needs some modifications.
>>>
>>> Signed-off-by: Marton Balint <cus at passwd.hu>
>>> ---
>>>  libavcodec/on2avc.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/on2avc.c b/libavcodec/on2avc.c
>>> index 74be1dcb60..474adb149d 100644
>>> --- a/libavcodec/on2avc.c
>>> +++ b/libavcodec/on2avc.c
>>> @@ -700,7 +700,7 @@ static int on2avc_reconstruct_channel_ext(On2AVCContext *c, AVFrame *dst, int of
>>>  break;
>>>  case WINDOW_TYPE_EXT5:
>>>  c->wtf(c, buf, in, 512);
>>> -            c->mdct_half_fn(c->mdct, buf + 512, in + 512, sizeof(float));
>>> +            c->mdct_half_fn(c->mdct_half, buf + 512, in + 512, sizeof(float));
>>>  for (i = 0; i < 256; i++) {
>>>  FFSWAP(float, buf[i + 512], buf[1023 - i]);
>>>  }
>>>
>>
>> LGTM
>> Thanks
>>
>
> Actually, looking at it, the WINDOW_TYPE_EXT7 branch, something
> weird's going on there as well:
>
> -            c->mdct.imdct_half(&c->mdct, buf, in);
> +            c->mdct_fn(c->mdct, buf, in, sizeof(float));
>
> The original misused the context. Maybe this
> should be both half as well?

I thought that is just the old API where you have to use the imdct_half 
function to get the useful half-sized IMDCT. But the old code really means 
to use the 11-bit context to calculate 1024 samples not the 10-bit one 
confusingly called c->mdct_half to calculate 512 samples.

Regards,
Marton


More information about the ffmpeg-devel mailing list