Commit 42a79f49 authored by advasila's avatar advasila
Browse files

fix for very mow number of bits in MASA metadata

parent 109556e0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@
#define NONBE_FIX_738_SBA_BR_SW_ASAN                       /* FhG: issue 738: fixes bug when switching to an MCT bitrate and previous frame was ACELP */
#define NONBE_CR_FIX_735_SBA_HP20_BRATE_SWITCHING       /* VA: Issue 735: Resolve "HP20 filtering bug in SBA/OSBA bitrate switching" */

#define FIX 

/* ##################### End NON-BE switches ########################### */

+10 −0
Original line number Diff line number Diff line
@@ -363,6 +363,16 @@ ivas_error ivas_masa_decode(
        else
        {
            *nb_bits_read += ivas_qmetadata_dec_decode( hQMetaData, st->bit_stream, &st->next_bit_pos, 0 );
#ifdef FIX
            if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ && st_ivas->hIsmMetaData[0]->ism_imp == ISM_INACTIVE_IMP )
            {
                while ( *nb_bits_read < 32 )
                {
                    byteBuffer = st->bit_stream[( st->next_bit_pos )--];
                    ( *nb_bits_read )++;
                }
            }
#endif
        }

        if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ )
+10 −1
Original line number Diff line number Diff line
@@ -363,7 +363,16 @@ ivas_error ivas_enc(
            hMetaData->ind_list = st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData->ind_list + st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData->nb_ind_tot;
            st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list = st_ivas->hSCE[st_ivas->nSCE - 1]->hCoreCoder[0]->hBstr->ind_list + st_ivas->hSCE[st_ivas->nSCE - 1]->hCoreCoder[0]->hBstr->nb_ind_tot;
        }

#ifdef FIX
        if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ )
        {
            if ( st_ivas->hIsmMetaData[0]->ism_imp == ISM_INACTIVE_IMP )
            {
                /* set minimum bitrate for metadata */
                nb_bits_metadata[0] = 32;
            }
        }
#endif
        /* Encode MASA parameters and write MASA metadata bitstream */
        if ( ( error = ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, nb_bits_metadata, st_ivas->nchan_transport, ivas_format, ivas_total_brate, st_ivas->hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1,
                                         st_ivas->ism_mode, hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa, st_ivas->hIsmMetaData[0]->ism_imp, flag_omasa_ener_brate ) ) != IVAS_ERR_OK )
+10 −0
Original line number Diff line number Diff line
@@ -506,7 +506,17 @@ ivas_error ivas_masa_encode(
    }
    else
    {

        ivas_qmetadata_enc_encode( hMetaData, hQMetaData, 0 );
        #ifdef FIX
        if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ )
        {
            if ( hMetaData->nb_bits_tot < nb_bits_metadata[0] )
            {
                push_next_indice( hMetaData, 0, nb_bits_metadata[0] - hMetaData->nb_bits_tot ); 
            }
        }
        #endif
    }

    if ( ivas_format == MASA_ISM_FORMAT && ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ )