Commit 2582f79b authored by advasila's avatar advasila
Browse files

fix omasa inactive separated object

parent 42a79f49
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1234,6 +1234,9 @@ enum
#define MASA_MAXIMUM_TWO_DIR_BANDS              24
#define NBITS_HR_COH                            4

#ifdef NONBE_FIX_797_OMASA_INACTIVE_SEP_OBJ
#define MINIMUM_MASA_BITS_OMASA_INACTIVE        32
#endif
typedef enum
{
    MASA_STEREO_NOT_DEFINED,
+1 −1
Original line number Diff line number Diff line
@@ -183,8 +183,8 @@
#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 NONBE_FIX_797_OMASA_INACTIVE_SEP_OBJ                  /* Nokia: issue 797: fix crash when the separated object is inactive and the MASA metadata is using very few bits */ 
#define FIX 

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

/* ################## End DEVELOPMENT switches ######################### */
+2 −2
Original line number Diff line number Diff line
@@ -363,10 +363,10 @@ ivas_error ivas_masa_decode(
        else
        {
            *nb_bits_read += ivas_qmetadata_dec_decode( hQMetaData, st->bit_stream, &st->next_bit_pos, 0 );
#ifdef FIX
#ifdef NONBE_FIX_797_OMASA_INACTIVE_SEP_OBJ
            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 )
                while ( *nb_bits_read < MINIMUM_MASA_BITS_OMASA_INACTIVE )
                {
                    byteBuffer = st->bit_stream[( st->next_bit_pos )--];
                    ( *nb_bits_read )++;
+1 −10
Original line number Diff line number Diff line
@@ -363,16 +363,7 @@ 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 )
+5 −5
Original line number Diff line number Diff line
@@ -508,12 +508,12 @@ ivas_error ivas_masa_encode(
    {

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