Commit 9469bb77 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Applies several fixes to address issues shown by smoke tests.

parent 98386a5c
Loading
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -330,14 +330,12 @@ void masa_sample_rate_band_correction(
#endif
    uint8_t numBands48k;

#ifdef FIX_HBR_MASAMETA
    if ( maxBand == MASA_FREQUENCY_BANDS - 1 )
#else
#ifndef FIX_HBR_MASAMETA
    if ( sampling_rate == 48000 )
#endif
    {
        return;
    }
#endif

#ifndef FIX_HBR_MASAMETA
    /* Find maximum band usable at this sample rate */
@@ -358,10 +356,9 @@ void masa_sample_rate_band_correction(
        if ( highBand >= maxBand )
        {
            config->numCodingBands = band;

            hQMetaData->numCodingBands = band;
#ifdef FIX_HBR_MASAMETA
            if ( !is_encoder )
            if ( is_encoder )
            {
                if ( hQMetaData->q_direction->cfg.nbands > band )
                {
+3 −3
Original line number Diff line number Diff line
@@ -3188,9 +3188,9 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
    IVAS_QMETADATA_HANDLE hQMetaData,                           /* i/o: hQMetaData handle                       */
    uint16_t *bitstream,                                        /* i  : bitstream                               */
    int16_t *index,                                             /* i/o: bitstream position                      */
    SPHERICAL_GRID_DATA *sph_grid16,                            /* i: spherical grid for deindexing             */
    int16_t bits_sph_idx,
    int16_t bits_sp_coh
    const SPHERICAL_GRID_DATA *sph_grid16,                      /* i: spherical grid for deindexing             */
    const int16_t bits_sph_idx,
    const int16_t bits_sp_coh
#ifdef FIX_HBR_MASAMETA
    ,
    uint8_t ncoding_bands_config
+3 −3
Original line number Diff line number Diff line
@@ -573,7 +573,7 @@ static ivas_error ivas_masa_dec_config(
    /* Find maximum band usable */
    maxBin = (int16_t) ( st_ivas->hDecoderConfig->output_Fs * INV_CLDFB_BANDWIDTH );
    maxBand = 0;
    while ( MASA_band_grouping_24[maxBand] <= maxBin && maxBand < MASA_FREQUENCY_BANDS )
    while ( MASA_band_grouping_24[maxBand] <= maxBin && maxBand <= MASA_FREQUENCY_BANDS )
    {
        maxBand++;
    }
@@ -582,11 +582,11 @@ static ivas_error ivas_masa_dec_config(
    if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL )
    {
        /* need to apply the sampling rate correction also for the EXT output MASA meta buffer */
        masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hQMetaData, maxBand, ( 0 || ( st_ivas->hDecoderConfig->ivas_total_brate <= IVAS_256k ) ), hMasa->data.extOutMeta );
        masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hQMetaData, maxBand, 0, hMasa->data.extOutMeta );
    }
    else
    {
        masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hQMetaData, maxBand, ( 0 || ( st_ivas->hDecoderConfig->ivas_total_brate <= IVAS_256k ) ), NULL );
        masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hQMetaData, maxBand, 0, NULL );
    }
#else
    if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL )
+9 −8
Original line number Diff line number Diff line
@@ -809,9 +809,9 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
    IVAS_QMETADATA_HANDLE hQMetaData,      /* i/o: hQMetaData handle             */
    uint16_t *bitstream,                   /* i  : bitstream                     */
    int16_t *index,                        /* i/o: bitstream position            */
    SPHERICAL_GRID_DATA *sph_grid16,  /* i: spherical grid for deindexing */
    int16_t bits_sph_idx,
    int16_t bits_sp_coh
    const SPHERICAL_GRID_DATA *sph_grid16, /* i  : spherical grid for deindexing */
    const int16_t bits_sph_idx,
    const int16_t bits_sp_coh
#ifdef FIX_HBR_MASAMETA
    ,
    uint8_t ncoding_bands_config
@@ -830,6 +830,7 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
    int16_t codedBands, sf_nbands0, sf_nbands1;
    sf_nbands1 = 1;
#endif

#ifdef DEBUG_MODE_QMETADATA
    static FILE *pF = NULL;
    static FILE *pF_azi = NULL;
@@ -857,11 +858,11 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
    /* read number of higher inactive/not encoded  bands */
    if ( bitstream[( *index )--] )
    {
        codedBands = ncoding_bands_config - ivas_qmetadata_DecodeExtendedGR( bitstream, index, MASA_MAXIMUM_CODING_SUBBANDS, 1 ) - 1;
        codedBands = MASA_MAXIMUM_CODING_SUBBANDS - ivas_qmetadata_DecodeExtendedGR( bitstream, index, MASA_MAXIMUM_CODING_SUBBANDS, 1 ) - 1;
    }
    else
    {
        codedBands = ncoding_bands_config;
        codedBands = MASA_MAXIMUM_CODING_SUBBANDS;
    }
    for ( b = codedBands; b < ncoding_bands_config; b++ )
    {
+9 −7
Original line number Diff line number Diff line
@@ -655,7 +655,7 @@ ivas_error ivas_masa_enc_config(
    /* Find maximum band usable */
    maxBin = (int16_t) ( st_ivas->hEncoderConfig->input_Fs * INV_CLDFB_BANDWIDTH );
    maxBand = 0;
    while ( MASA_band_grouping_24[maxBand] <= maxBin && maxBand < MASA_FREQUENCY_BANDS )
    while ( MASA_band_grouping_24[maxBand] <= maxBin && maxBand <= MASA_FREQUENCY_BANDS )
    {
        maxBand++;
    }
@@ -663,12 +663,13 @@ ivas_error ivas_masa_enc_config(

    if ( ivas_total_brate > IVAS_256k )
    {
        int16_t continueLoop = 1;
        int16_t continueLoop;
        continueLoop = 1;
        while ( maxBand > 5 && continueLoop )
        {
            for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ )
            {
                if ( hMasa->data.energy[sf][maxBand] > 100000 )
                if ( hMasa->data.energy[sf][maxBand - 1] > 100000 )
                {
                    continueLoop = 0;
                    break;
@@ -680,16 +681,17 @@ ivas_error ivas_masa_enc_config(
            }
        }

        if ( maxBand == MASA_MAXIMUM_CODING_SUBBANDS - 1 )
        if ( maxBand < MASA_MAXIMUM_CODING_SUBBANDS )
        {
            st_ivas->hQMetaData->q_direction->cfg.inactiveBands = 0;
            st_ivas->hQMetaData->q_direction->cfg.inactiveBands = MASA_MAXIMUM_CODING_SUBBANDS - maxBand;
        }
        else
        {
            st_ivas->hQMetaData->q_direction->cfg.inactiveBands = hMasa->config.numCodingBands - maxBand;
            st_ivas->hQMetaData->q_direction->cfg.inactiveBands = 0;
        }
    }
    masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, hQMetaData, maxBand, ( ivas_total_brate < IVAS_384k ), NULL );

    masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, hQMetaData, maxBand, ivas_total_brate > IVAS_256k, NULL );

    if ( hMasa->config.numTwoDirBands >= hMasa->config.numCodingBands )
    {