Skip to content

[Split non-BE] Fix reused CLDFB state in rendering of OMASA to SR with lib_rend

Reason why this change is needed

From the original BASOP issue

the same CLDFB Analysis state is used for different ISM inputs, this leads to discontinuities.

Description of the change

Original signal flow per one head pose was:

flowchart LR
    ism_td_1[ISM 1] --TD rend--> ism_binaural_td_1[ISM 1 TD bin] --CLDFB ana--> ism_binaural_cldfb_1[ISM 1 CLDFB bin] -- mix --> sum_cldfb[sum CLDFB]
    ism_td_2[ISM 2] --TD rend--> ism_binaural_td_2[ISM 2 TD bin] --CLDFB ana--> ism_binaural_cldfb_2[ISM 2 CLDFB bin] -- mix --> sum_cldfb
    ism_td_n[...] ----> sum_cldfb

This requires 2 * num_head_poses * num_isms CLDFB handles, but only 2 * num_head_poses are allocated. CLDFB analysis for each object used the same CLDFB handle for a given head pose, leading to discontinuities.

New signal flow per one head pose:

flowchart LR
    ism_td_1[ISM 1] --TD rend--> ism_binaural_td_1[ISM 1 TD bin] -- mix --> sum_td[sum TD] --CLDFB ana--> sum_cldfb[sum CLDFB]
    ism_td_2[ISM 2] --TD rend--> ism_binaural_td_2[ISM 2 TD bin] -- mix --> sum_td
    ism_td_n[...] ---> sum_td

This only requires 2 * num_head_poses CLDFB handles, as already allocated. This exactly matches the equivalent rendering configuration in lib_dec.

Affected operating points

  • Rendering OMASA to split binaural output configurations in lib_rend
Edited by sagnowski

Merge request reports

Loading