Commit 0db39b0c authored by emerit's avatar emerit
Browse files

Merge branch 'ivas-float-update' into 1963_ref_portFltMR-1568-1471-1690

parents 7fb99ae5 46314316
Loading
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -2110,7 +2110,22 @@ static ivas_error initOnFirstGoodFrame(
            if ( numInitialBadFrames > 0 )
            {
                /* Duplicate good first frame metadata to fill the beginning of stream. */
#ifdef NONBE_FIX_1261_MASA_EXT_META_JBM
                int16_t fullDelayNumSamplesLocal[3];
                int32_t delayTimeScaleLocal;
                float delayMs;
                IVAS_MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta;
                hMasaExtOutMeta = NULL;

                /* fullDelayNumSamples is zeroed so need to re-fetch delay info */
                if ( ( error = IVAS_DEC_GetDelay( hIvasDec, fullDelayNumSamplesLocal, &delayTimeScaleLocal ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) );
                }
                delayMs = (float) ( fullDelayNumSamplesLocal[0] ) / (float) ( delayTimeScaleLocal );
#else
                IVAS_MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL;
#endif

                if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK )
                {
@@ -2120,7 +2135,9 @@ static ivas_error initOnFirstGoodFrame(

                for ( int16_t j = 0; j < numInitialBadFrames; ++j )
                {
#ifndef NONBE_FIX_1261_MASA_EXT_META_JBM
                    float delayMs = (float) ( pFullDelayNumSamples[0] ) / (float) ( *delayTimeScale );
#endif
                    if ( ( error = MasaFileWriter_writeFrame( *ppMasaWriter, hMasaExtOutMeta, &delayMs ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nError writing MASA metadata to file: %s\n", MasaFileWriter_getFilePath( *ppMasaWriter ) );
+4 −0
Original line number Diff line number Diff line
@@ -169,6 +169,10 @@
#define FIX_1320_STACK_CPE_DECODER                      /* VA: issue 1320: Optimize the stack memory consumption in the CPE decoder */
#define NONBE_1302_FIX_OMASA_JBM_FLUSH                  /* VA: issue 1302: fix OMASA JBM bitrate switching flush in binaural output */
#define FIX_1319_STACK_SBA_DECODER                      /* VA: issue 1319: Optimize the definition of buffer lengths in the SBA decoder */
#define NONBE_FIX_1261_MASA_EXT_META_JBM                /* Nokia: issue #1261: MASA metadata EXT output delay buffer init in JBM */
#define NONBE_FIX_1143_MASA_BRSW                        /* Nok: Fix for issue 1143: MSAN use of uninitialized value in masa decoding to binaural with dtx bitrate switching and 5 % FER */
#define NONBE_FIX_1220_OMASA_JBM_EXT_USAN               /* Nokia: fix issue 1220 OMASA EXT JBM USAN, also fix similar cases of free to avoid future problems */

/* #################### End BASOP porting switches ############################ */

/* clang-format on */
+22 −0
Original line number Diff line number Diff line
@@ -1337,7 +1337,12 @@ ivas_error ivas_masa_dec_reconfigure(
    ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
    last_ivas_total_brate = st_ivas->hDecoderConfig->last_ivas_total_brate;

#ifdef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
    /* Copy state to TC buffer if granularity matches and we are not in OMASA EXT rendering mode */
    if ( st_ivas->hSpatParamRendCom != NULL && st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity && st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_EXTERNAL )
#else
    if ( st_ivas->hSpatParamRendCom != NULL && st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity )
#endif
    {
        mvs2s( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
        st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes;
@@ -1358,6 +1363,16 @@ ivas_error ivas_masa_dec_reconfigure(
            return error;
        }
    }
#ifdef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
    else if ( st_ivas->renderer_type == RENDERER_DISABLE || st_ivas->renderer_type == RENDERER_MONO_DOWNMIX || st_ivas->renderer_type == RENDERER_OMASA_MIX_EXT )
    {
        /* close all unnecessary parametric decoding and rendering */
        ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin );
        ivas_dirac_rend_close( &( st_ivas->hDirACRend ) );
        ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) );
        ivas_dirac_dec_close( &( st_ivas->hDirAC ) );
    }
#else
    else if ( st_ivas->renderer_type == RENDERER_DISABLE || st_ivas->renderer_type == RENDERER_MONO_DOWNMIX )
    {
        if ( st_ivas->hDirAC != NULL )
@@ -1369,6 +1384,7 @@ ivas_error ivas_masa_dec_reconfigure(
            ivas_dirac_dec_close( &( st_ivas->hDirAC ) );
        }
    }
#endif
    /* possible reconfigure is done later */

    /*-----------------------------------------------------------------*
@@ -1408,8 +1424,14 @@ ivas_error ivas_masa_dec_reconfigure(
        sts = st_ivas->hCPE[cpe_id]->hCoreCoder;
        sts[0]->bit_stream = bit_stream + num_bits;
        num_bits += (int16_t) ( st_ivas->hCPE[cpe_id]->element_brate / FRAMES_PER_SEC );
#ifdef NONBE_FIX_1143_MASA_BRSW
        if ( ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate >= MASA_STEREO_MIN_BITRATE ) ||
             ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate == FRAME_NO_DATA ) ||
             ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate == IVAS_SID_5k2 ) )
#else
        if ( ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate >= MASA_STEREO_MIN_BITRATE ) ||
             ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate == FRAME_NO_DATA ) )
#endif
        {
            st_ivas->hCPE[cpe_id]->nchan_out = 1;

+12 −0
Original line number Diff line number Diff line
@@ -851,13 +851,17 @@ static ivas_error ivas_mc_dec_reconfig(
            ivas_masa_dec_close( &( st_ivas->hMasa ) );
            ivas_qmetadata_close( &st_ivas->hQMetaData );

#ifndef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
            if ( st_ivas->hDirAC != NULL )
            {
#endif
                ivas_dirac_rend_close( &( st_ivas->hDirACRend ) );
                ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) );
                ivas_dirac_dec_close( &( st_ivas->hDirAC ) );
                vbap_free_data( &( st_ivas->hVBAPdata ) );
#ifndef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
            }
#endif

            /* init LS conversion if the renderer type asks for it */
            if ( st_ivas->renderer_type == RENDERER_MC && st_ivas->hLsSetUpConversion == NULL )
@@ -937,14 +941,18 @@ static ivas_error ivas_mc_dec_reconfig(
        ivas_masa_dec_close( &( st_ivas->hMasa ) );
        ivas_qmetadata_close( &st_ivas->hQMetaData );

#ifndef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
        if ( st_ivas->hDirAC != NULL )
        {
#endif
            ivas_dirac_rend_close( &( st_ivas->hDirACRend ) );
            ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) );
            ivas_dirac_dec_close( &( st_ivas->hDirAC ) );

            vbap_free_data( &( st_ivas->hVBAPdata ) );
#ifndef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
        }
#endif

        if ( last_mc_mode == MC_MODE_MCT )
        {
@@ -1144,7 +1152,11 @@ static ivas_error ivas_mc_dec_reconfig(
                }
            }
        }
#ifdef NONBE_FIX_1220_OMASA_JBM_EXT_USAN
        else if ( st_ivas->renderer_type == RENDERER_DISABLE )
#else
        else if ( st_ivas->renderer_type == RENDERER_DISABLE && st_ivas->hDirAC != NULL )
#endif
        {
            ivas_dirac_rend_close( &( st_ivas->hDirACRend ) );
            ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) );