Skip to content

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