Skip to content

Issues with TCX-LTP and delay alignment for mono output

Part of the functionality of the decoder function synchro_synthesis() is to apply the TCX-LTP filtering and to apply a mode-dependent artificial delay to have all modes aligned to 32 ms overall delay at the end of the function. For mono output this is currently not working properly for neither MDCT Stereo mono output nor mono output of some multi-channel modes.

For MDCT Stereo mono output, the time-domain downmix is currently applied before the function. Therefore, TCX-LTP is applied on the downmix even though TCX-LTP parameters for both channels were transmitted, i.e. the parameters of the left channel are applied to the downmix. Instead, the downmix should be applied after synchro_synthesis() so that both channels are properly filtered.

For some multi-channel modes hCPE->nchan_out is currently set to 1 which causes only the first channel of each CPE to be filtered and delayed in synchro_synthesis(). In the actual later downmixing to mono the delay misalignment causes noticeable comb-filter and cancellation effects in the output. Here, it makes more sense to leave hCPE->nchan_out at 2 since there isn't any downmixing done on the CPE level but is instead done in a later rendering stage.