Commit d9d63300 authored by vaclav's avatar vaclav
Browse files

formatting

parent 5276e7cf
Loading
Loading
Loading
Loading
+99 −102
Original line number Diff line number Diff line
@@ -817,7 +817,7 @@ ivas_error ivas_jbm_dec_flush_renderer(
#endif
);

ivas_error ivas_jbm_dec_feed_tc_to_renderer(
void ivas_jbm_dec_feed_tc_to_renderer(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                      */
    const int16_t nSamplesForRendering,                         /* i  : number of TC samples available for rendering                */
    int16_t *nSamplesResidual,                                  /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
@@ -854,9 +854,9 @@ int16_t ivas_jbm_dec_get_num_tc_channels(
);

void ivas_jbm_dec_copy_tc_no_tsm( 
    Decoder_Struct *st_ivas, 
    float *tc[], 
    const int16_t output_frame 
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder handle                                         */
    float *tc[],                                                /* i  : transport channels                                          */
    const int16_t output_frame                                  /* i  : output frame size                                           */
);

void ivas_jbm_dec_get_md_map_even_spacing(
@@ -3468,7 +3468,7 @@ ivas_error ivas_sba_dec_reconfigure(
#ifdef JBM_FOR_OSBA
    ,
    uint16_t *nSamplesFlushed,                                  /* o  : number of samples flushed               */
#if defined SPLIT_REND_WITH_HEAD_ROT
#ifdef SPLIT_REND_WITH_HEAD_ROT
    const PCM_RESOLUTION pcm_resolution,                        /* i  : type for the decoded PCM resolution     */
    void *data                                                  /* o  : output synthesis signal                 */
#else
@@ -4366,7 +4366,7 @@ void ivas_spar_dec_digest_tc(
    const int16_t nSamplesForRendering                          /* i  : number of samples provided              */
);

ivas_error ivas_sba_dec_digest_tc(
void ivas_sba_dec_digest_tc(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder handle                     */
    const int16_t nCldfbSlots,                                  /* i  : number of CLDFB slots                   */
    const int16_t nSamplesForRendering                          /* i  : number of samples provided              */
@@ -5690,9 +5690,8 @@ void ivas_osba_enc(
    const int16_t input_frame,                                  /* i  : Input frame size                        */
    const int16_t nchan_ism,                                    /* i  : Number of objects for parameter analysis*/
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                */
    const int16_t sba_analysis_order,                           /* i  : SBA order evaluated in DirAC/SPAR encoder */
    const int32_t input_Fs                                      /* i  : input sampling rate                       */
    ,
    const int16_t sba_analysis_order,                           /* i  : SBA order evaluated in SBA encoder      */
    const int32_t input_Fs,                                     /* i  : input sampling rate                     */
    const int16_t sba_planar                                    /* i  : planar SBA flag                         */
);

@@ -5700,7 +5699,6 @@ ivas_error ivas_osba_data_open(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder handle                     */
);


#ifdef JBM_FOR_OSBA
ivas_error ivas_osba_dirac_td_binaural_jbm(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
@@ -5711,7 +5709,6 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(
);
#endif


ivas_error ivas_osba_dirac_td_binaural(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    float *output[],                                            /* o  : output synthesis signal                 */
+3 −1
Original line number Diff line number Diff line
@@ -734,7 +734,6 @@ ivas_error ivas_dec(
#ifdef JBM_FOR_OSBA
            if ( ( error = ivas_sba_upmixer_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK )
#else

            if ( ( error = ivas_sba_upmixer_renderer( st_ivas, &p_output[sba_ch_idx], output_frame ) ) != IVAS_ERR_OK )
#endif
            {
@@ -854,6 +853,7 @@ ivas_error ivas_dec(
            {
                return error;
            }

#ifdef NONBE_FIX_802_PARAMUPMIX_HIGHPASS
            for ( n = 0; n < st_ivas->nchan_transport; n++ )
            {
@@ -863,7 +863,9 @@ ivas_error ivas_dec(
                }
            }
#endif

            ivas_mc_paramupmix_dec( st_ivas, p_output );

#ifndef NONBE_FIX_802_PARAMUPMIX_HIGHPASS
            /* HP filtering */
            if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM )
+2 −5
Original line number Diff line number Diff line
@@ -2385,7 +2385,6 @@ void ivas_dirac_dec_render_sf(

    if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
    {

#ifdef OSBA_ROOM_IR
        /* render objects in combined format onto the CICP19 channels for BINAURAL_ROOM_IR */
        if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
@@ -2400,6 +2399,7 @@ void ivas_dirac_dec_render_sf(
                int16_t n_samples_to_render;
                int16_t interp_offset;
                float gain, prev_gain;

                num_objects = st_ivas->nchan_ism;
                nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE;
                n_slots_to_render = st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->subframes_rendered];
@@ -2408,9 +2408,7 @@ void ivas_dirac_dec_render_sf(

                if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[0] )
                {
                    ivas_jbm_dec_get_adapted_linear_interpolator( n_samples_to_render,
                                                                  n_samples_to_render,
                                                                  st_ivas->hIsmRendererData->interpolator );
                    ivas_jbm_dec_get_adapted_linear_interpolator( n_samples_to_render, n_samples_to_render, st_ivas->hIsmRendererData->interpolator );
                    interp_offset = 0;
                }

@@ -2472,7 +2470,6 @@ void ivas_dirac_dec_render_sf(
        }
#endif


#ifdef SPLIT_REND_WITH_HEAD_ROT
        if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
        {
+5 −5
Original line number Diff line number Diff line
@@ -363,12 +363,11 @@ ivas_error ivas_dec_setup(
#ifdef JBM_FOR_OSBA
                                                         ,
                                                         nSamplesRendered,
#if defined SPLIT_REND_WITH_HEAD_ROT
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                                         pcm_resolution,
#endif
                                                         data
#endif

                                                         ) ) != IVAS_ERR_OK )
                {
                    return error;
@@ -481,14 +480,13 @@ ivas_error ivas_dec_setup(
            /* set Ambisonic (SBA) order used for analysis and coding */
            st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order );
#endif

            if ( st_ivas->ini_frame > 0 && ivas_total_brate != st_ivas->last_active_ivas_total_brate )
            {
                if ( ( error = ivas_sba_dec_reconfigure( st_ivas
#ifdef JBM_FOR_OSBA
                                                         ,
                                                         nSamplesRendered,
#if defined SPLIT_REND_WITH_HEAD_ROT
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                                         pcm_resolution,
#endif
                                                         data
@@ -504,6 +502,7 @@ ivas_error ivas_dec_setup(
                /* set Ambisonic (SBA) order used for analysis and coding */
                st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order );
#endif

                ivas_sba_config( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init );

                /*correct number of CPEs for discrete ISM coding*/
@@ -632,7 +631,7 @@ ivas_error ivas_dec_setup(
#ifdef JBM_FOR_OSBA
                                                         ,
                                                         nSamplesRendered,
#if defined SPLIT_REND_WITH_HEAD_ROT
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                                         pcm_resolution,
#endif
                                                         data
@@ -641,6 +640,7 @@ ivas_error ivas_dec_setup(
                {
                    return error;
                }

                st_ivas->last_active_ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;
                st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate;
            }
+70 −89
Original line number Diff line number Diff line
@@ -342,8 +342,6 @@ ivas_error ivas_jbm_dec_tc(
        /* Configuration of combined-format bit-budget distribution */
        ivas_set_surplus_brate_dec( st_ivas, &ism_total_brate );

        st->bit_stream = &( st_ivas->bit_stream[( ism_total_brate / FRAMES_PER_SEC )] );

        /* set ISM parameters and decode ISM metadata in OMASA format */
        if ( ( error = ivas_omasa_ism_metadata_dec( st_ivas, ism_total_brate, &nchan_ism, &nchan_transport_ism, dirac_bs_md_write_idx, &nb_bits_metadata[1] ) ) != IVAS_ERR_OK )
        {
@@ -429,7 +427,6 @@ ivas_error ivas_jbm_dec_tc(
        /* core-decoding of transport channels */
        if ( st_ivas->nSCE == 1 )
        {
            st = st_ivas->hSCE[0]->hCoreCoder[0];
            if ( ( error = ivas_sce_dec( st_ivas, 0, p_output, output_frame, nb_bits_metadata[0] + nb_bits_metadata[1] ) ) != IVAS_ERR_OK )
            {
                return error;
@@ -437,7 +434,6 @@ ivas_error ivas_jbm_dec_tc(
        }
        else if ( st_ivas->nCPE == 1 )
        {
            st = st_ivas->hCPE[0]->hCoreCoder[0];
            if ( ( error = ivas_cpe_dec( st_ivas, 0, p_output, output_frame, nb_bits_metadata[0] + nb_bits_metadata[1] ) ) != IVAS_ERR_OK )
            {
                return error;
@@ -445,7 +441,6 @@ ivas_error ivas_jbm_dec_tc(
        }
        else if ( st_ivas->nCPE > 1 )
        {
            st = st_ivas->hCPE[0]->hCoreCoder[0];
            if ( ( error = ivas_mct_dec( st_ivas, p_output, output_frame, nb_bits_metadata[0] + nb_bits_metadata[1] ) ) != IVAS_ERR_OK )
            {
                return error;
@@ -461,9 +456,7 @@ ivas_error ivas_jbm_dec_tc(
                ivas_pca_dec( st_ivas->hSpar->hPCA, output_frame, st_ivas->hSpar->hMdDec->spar_md_cfg.nchan_transport, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate, st_ivas->bfi, &p_output[sba_ch_idx] );
            }

            ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi,
                                       ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate,
                                                                           st_ivas->last_active_ivas_total_brate ) );
            ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi, ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->last_active_ivas_total_brate ) );

            ivas_sba_dirac_stereo_dec( st_ivas, &p_output[sba_ch_idx], output_frame, 0 );
        }
@@ -508,7 +501,6 @@ ivas_error ivas_jbm_dec_tc(
        }
        else if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX && st_ivas->ism_mode == ISM_SBA_MODE_DISC )
        {

            ivas_mono_downmix_render_passive( st_ivas, p_output, output_frame );

            /* add W */
@@ -778,7 +770,7 @@ ivas_error ivas_jbm_dec_tc(
 * Feed decoded transport channels and metadata to the IVAS JBM renderer routine
 *--------------------------------------------------------------------------*/

ivas_error ivas_jbm_dec_feed_tc_to_renderer(
void ivas_jbm_dec_feed_tc_to_renderer(
    Decoder_Struct *st_ivas,            /* i/o: IVAS decoder structure                          */
    const int16_t nSamplesForRendering, /* i  : number of TC samples available for rendering    */
    int16_t *nSamplesResidual,          /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
@@ -788,10 +780,8 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer(
    float data_f[MAX_CLDFB_DIGEST_CHANNELS][MAX_JBM_L_FRAME48k]; /* 'float' buffer for transport channels that will be directly converted with the CLDFB */
    float *p_data_f[MAX_CLDFB_DIGEST_CHANNELS];
    int16_t n, n_render_timeslots;
    ivas_error error;

    push_wmops( "ivas_jbm_dec_feed_tc_to_rendererer" );

    for ( n = 0; n < MAX_CLDFB_DIGEST_CHANNELS; n++ )
    {
        p_data_f[n] = &data_f[n][0];
@@ -843,10 +833,7 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer(
    }
    else if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT )
    {
        if ( ( error = ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ) ) != IVAS_ERR_OK )
        {
            return error;
        }
        ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );
    }
#ifdef JBM_FOR_OSBA
    else if ( st_ivas->ivas_format == SBA_ISM_FORMAT )
@@ -892,10 +879,7 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer(
            n_render_timeslots *= ( st_ivas->hTcBuffer->n_samples_granularity / st_ivas->hSpatParamRendCom->slot_size );
        }

        if ( ( error = ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ) ) != IVAS_ERR_OK )
        {
            return error;
        }
        ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );

        if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC )
        {
@@ -918,16 +902,12 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer(
        }
        else if ( st_ivas->mc_mode == MC_MODE_MCMASA )
        {
            if ( ( error = ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ) ) != IVAS_ERR_OK )
            {
                return error;
            }
            ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );
        }
    }

    pop_wmops();

    return IVAS_ERR_OK;
    return;
}


@@ -952,33 +932,26 @@ ivas_error ivas_jbm_dec_render(
{
    int16_t n, nchan_out;
    int16_t nchan_transport;
    float output[MAX_OUTPUT_CHANNELS
#ifdef JBM_FOR_OSBA
                 + MAX_NUM_OBJECTS
    float output[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; /* 'float' buffer for output synthesis */
#else
    float output[MAX_OUTPUT_CHANNELS][L_FRAME48k]; /* 'float' buffer for output synthesis */
#endif
    ][L_FRAME48k]; /* 'float' buffer for output synthesis */

    int16_t nchan_remapped;
    int32_t output_Fs;
    AUDIO_CONFIG output_config;
    int16_t nSamplesAskedLocal;
    ivas_error error;

    float *p_output[MAX_OUTPUT_CHANNELS
#ifdef JBM_FOR_OSBA
                    + MAX_NUM_OBJECTS
#endif
    ];
    float *p_tc[MAX_TRANSPORT_CHANNELS
#ifdef JBM_FOR_OSBA
                + MAX_NUM_OBJECTS
    float *p_output[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS];
    float *p_tc[MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS];
#else
    float *p_output[MAX_OUTPUT_CHANNELS];
    float *p_tc[MAX_TRANSPORT_CHANNELS];
#endif
    ];

    SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;

    push_wmops( "ivas_dec_render" );

    /*----------------------------------------------------------------*
     * Initialization of local vars after struct has been set
     *----------------------------------------------------------------*/
@@ -990,12 +963,11 @@ ivas_error ivas_jbm_dec_render(
    output_config = st_ivas->hDecoderConfig->output_config;
    nSamplesAskedLocal = nSamplesAsked + st_ivas->hTcBuffer->n_samples_discard;

    for ( n = 0; n < MAX_OUTPUT_CHANNELS
#ifdef JBM_FOR_OSBA
                         + MAX_NUM_OBJECTS
    for ( n = 0; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ )
#else
    for ( n = 0; n < MAX_OUTPUT_CHANNELS; n++ )
#endif
          ;
          n++ )
    {
        p_output[n] = &output[n][0];
    }
@@ -1146,9 +1118,7 @@ ivas_error ivas_jbm_dec_render(
    {
        nchan_remapped = st_ivas->nchan_transport;

        if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ||
             st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ||
             st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC )
        if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC )
        {
            if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC )
            {
@@ -1173,7 +1143,6 @@ ivas_error ivas_jbm_dec_render(
        nchan_remapped = nchan_transport;

        /* Loudspeakers, Ambisonics or Binaural rendering */

        if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC )
        {
            if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV )
@@ -1186,19 +1155,17 @@ ivas_error ivas_jbm_dec_render(
            else if ( st_ivas->renderer_type == RENDERER_OSBA_STEREO )
            {
                *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal );

                /* render objects */
                ivas_ism_render_sf( st_ivas, p_output, *nSamplesRendered );

                /* add already rendererd SBA part */
                for ( n = 0; n < nchan_out; n++ )
                {
                    v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered );
                }
            }
            else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS
#ifdef JBM_FOR_OSBA
                      || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM
#endif
            )
            else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
            {
                float output_ism[MAX_OUTPUT_CHANNELS][L_FRAME48k];
                float *p_output_ism[MAX_OUTPUT_CHANNELS];
@@ -1208,7 +1175,11 @@ ivas_error ivas_jbm_dec_render(
                    p_output_ism[n] = &output_ism[n][0];
                }

                ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output );
                if ( ( error = ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ) ) != IVAS_ERR_OK )
                {
                    return error;
                }

#ifdef OSBA_ROOM_IR
                if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM )
#endif
@@ -1229,8 +1200,11 @@ ivas_error ivas_jbm_dec_render(
            }
            else if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_EXTERNAL ) /*EXT output = individual objects + HOA3*/
            {
                if ( ( error = ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, &p_output[st_ivas->nchan_ism] ) ) != IVAS_ERR_OK )
                {
                    return error;
                }

                ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, &p_output[st_ivas->nchan_ism] );
                for ( n = 0; n < st_ivas->nchan_ism; n++ )
                {
                    mvr2r( st_ivas->hTcBuffer->tc[n] + st_ivas->hTcBuffer->n_samples_rendered, p_output[n], *nSamplesRendered );
@@ -1238,17 +1212,23 @@ ivas_error ivas_jbm_dec_render(
            }
            else
            {
                ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output );
                if ( ( error = ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ) ) != IVAS_ERR_OK )
                {
                    return error;
                }
            }
        }
        else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ||
                  st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM )
        else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM )
        {
            ivas_dirac_dec_binaural_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output );
        }
        else /* SBA_MODE_SPAR */
        {
            ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output );
            if ( ( error = ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ) ) != IVAS_ERR_OK )
            {
                return error;
            }

            if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_EXTERNAL )
            {
#ifdef DEBUGGING
@@ -1668,6 +1648,7 @@ ivas_error ivas_jbm_dec_flush_renderer(
                tc_local[ch_idx] = &st_ivas->hTcBuffer->tc[ch_idx + 2][hTcBuffer->n_samples_rendered];
                mvr2r( st_ivas->hSbaIsmData->delayBuffer[ch_idx], tc_local[ch_idx], st_ivas->hSbaIsmData->delayBuffer_size );
            }

            /* transfer adapted sf info from hTcBuffer to SPAR and DirAC */
            st_ivas->hSpar->nb_subframes = 1;
            st_ivas->hSpar->subframes_rendered = 0;
@@ -1679,9 +1660,11 @@ ivas_error ivas_jbm_dec_flush_renderer(
            st_ivas->hSpatParamRendCom->subframe_nbslots[0] = JBM_CLDFB_SLOTS_IN_SUBFRAME;
            st_ivas->hSpatParamRendCom->slots_rendered = 0;
            st_ivas->hSpatParamRendCom->num_slots = JBM_CLDFB_SLOTS_IN_SUBFRAME;

            /* also adapt md maps, just use the last index */
            set_s( st_ivas->hSpar->render_to_md_map, last_spar_md_idx, n_slots_still_available );
            set_s( st_ivas->hSpatParamRendCom->render_to_md_map, last_dirac_md_idx, n_slots_still_available );

            /* render the last subframe */
            if ( ( error = ivas_osba_dirac_td_binaural_jbm( st_ivas, (uint16_t) hTcBuffer->n_samples_granularity, nSamplesRendered, &nSamplesAvailableNext, p_output ) ) != IVAS_ERR_OK )
            {
@@ -1707,7 +1690,7 @@ ivas_error ivas_jbm_dec_flush_renderer(
    if ( st_ivas->hDecoderConfig->Opt_Limiter )
#endif
    {
        if ( !( st_ivas->ivas_format == MONO_FORMAT ) )
        if ( st_ivas->ivas_format != MONO_FORMAT )
        {
#ifndef DISABLE_LIMITER
            ivas_limiter_dec( st_ivas->hLimiter, p_output, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect );
@@ -2266,12 +2249,12 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
    if ( hTcBuffer->tc_buffer_mode == TC_BUFFER_MODE_NONE )
    {
        hTcBuffer->tc_buffer = NULL;
        for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS

#ifdef JBM_FOR_OSBA
                                       + MAX_NUM_OBJECTS
        for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
#else
        for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ )
#endif
              ;
              ch_idx++ )
        {
            hTcBuffer->tc[ch_idx] = NULL;
        }
@@ -2291,19 +2274,18 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
            n_samp_residual = 0;
        }


        nsamp_to_allocate = hTcBuffer->nchan_buffer_full * n_samp_full;
        nsamp_to_allocate += nchan_residual * n_samp_residual;

        if ( nsamp_to_allocate == 0 )
        {
            hTcBuffer->tc_buffer = NULL;
            for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS

#ifdef JBM_FOR_OSBA
                                           + MAX_NUM_OBJECTS
            for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
#else
            for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ )
#endif
                  ;
                  ch_idx++ )
            {
                hTcBuffer->tc[ch_idx] = NULL;
            }
@@ -2327,12 +2309,11 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
                hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset];
                offset += n_samp_residual;
            }
            for ( ; ch_idx < MAX_TRANSPORT_CHANNELS
#ifdef JBM_FOR_OSBA
                                 + MAX_NUM_OBJECTS
            for ( ; ch_idx < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
#else
            for ( ; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ )
#endif
                  ;
                  ch_idx++ )
            {
                hTcBuffer->tc[ch_idx] = NULL;
            }
@@ -2445,13 +2426,12 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
        hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset];
        offset += n_samp_residual;
    }
    for ( ; ch_idx < MAX_TRANSPORT_CHANNELS

#ifdef JBM_FOR_OSBA
                         + MAX_NUM_OBJECTS
    for ( ; ch_idx < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
#else
    for ( ; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ )
#endif

          ;
          ch_idx++ )
    {
        hTcBuffer->tc[ch_idx] = NULL;
    }
@@ -2514,15 +2494,15 @@ void ivas_jbm_dec_tc_buffer_close(

    if ( *phTcBuffer != NULL )
    {
        for ( i = 0; i < MAX_TRANSPORT_CHANNELS
#ifdef JBM_FOR_OSBA
                             + MAX_NUM_OBJECTS
        for ( i = 0; i < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; i++ )
#else
        for ( i = 0; i < MAX_TRANSPORT_CHANNELS; i++ )
#endif
              ;
              i++ )
        {
            ( *phTcBuffer )->tc[i] = NULL;
        }

        if ( ( *phTcBuffer )->tc_buffer != NULL )
        {
            free( ( *phTcBuffer )->tc_buffer );
@@ -2684,9 +2664,10 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode(
 *--------------------------------------------------------------------------*/

void ivas_jbm_dec_copy_tc_no_tsm(
    Decoder_Struct *st_ivas,
    float *tc[],
    const int16_t output_frame )
    Decoder_Struct *st_ivas,   /* i/o: IVAS decoder handle      */
    float *tc[],               /* i  : transport channels       */
    const int16_t output_frame /* i  : output frame size        */
)
{
    int16_t n_ch_full_copy;
    int16_t n_ch_cldfb;
Loading