st->tcx_only set after ivas_decision_matrix_enc()
The parameter st->tcx_only
is set only after ivas_decision_matrix_enc()
. Consequently, a TCX core is forced in ISM format in the first low-bitrate frame when switching from a high-bitrate frame. The condition responsible for this behavior is at https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_enc/ivas_decision_matrix_enc.c#L175:
if ( st->is_ism_format && st->tcxonly )
{
st->core = TCX_20_CORE;
}
At the same time, the ACELP memories st->lsf_old
and st->lsp_old
are not updated during the switching but the forcing above seems to hide possible artifacts.
The parameter st->tcx_only
should be set before the decision matrix and the condition above should not be true when switching from a high-bitrate frame to a low-bitrate one.
The same applies to other parameters, e.g. st->enableTcxLpc
.
Edited by vaclav