[Split non-BE] Fix reused CLDFB state in rendering of OMASA to SR with lib_rend
- Related issues:
- Requested reviewers: @tamarapu @malenovskyvl
Reason why this change is needed
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