Skip to content

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.