Wrong metadata recovery in ParamISM BFI
When decoding metadata in paramISM mode in a noisy channel, the metadata are wrongly recovered due to a wrong logic in ivas_ism_metadata_dec():
else /* BFI */
{
/* "*nISms", "hIsmMeta->azimuth" and "hIsmMeta->elevation" are recycled from the last frame */
for ( ch = 0; ch < *nchan_transport; ch++ )
{
hIsmMeta[ch]->ism_metadata_flag = hIsmMeta[ch]->last_ism_metadata_flag;
}
for ( ; ch < num_obj; ch++ )
{
hIsmMeta[ch]->last_ism_metadata_flag = hIsmMeta[ch]->ism_metadata_flag;
}
set_s( nb_bits_metadata, 0, *nchan_transport );
if ( ism_mode == ISM_MODE_PARAM )
{
for ( ch = 0; ch < num_obj; ch++ )
{
....
The issue is that the parameter num_obj is initialized to 0 in BFI rame while it should hold the number of objects.