Commit 22797817 authored by bayers's avatar bayers
Browse files

fix for #1021, fix ISM renderer, always use the correct renderer to determine...

fix for #1021, fix ISM renderer, always use the correct renderer to determine if the TC buffer sub frame info needs to be updated, use the correct number of objects
parent efafe4c6
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5223,6 +5223,9 @@ void ivas_ism_renderer_close(

void ivas_ism_render_sf(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                          */
#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
    const RENDERER_TYPE renderer_type,                          /* i  : current renderer type                           */
#endif
    float *output_f[],                                          /* i/o: core-coder transport channels/object output     */
    const int16_t n_samples_to_render                           /* i  : output frame length per channel                 */
);
+1 −0
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@
#define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS                  /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */
#define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO              /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */
#define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING       /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */
#define NONBE_FIX_1021_ISM_BRIR_RS_FLUSH                      /* FhG: issue #1021: fix ISM with JBM and RS renderer flushing*/

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

+12 −2
Original line number Diff line number Diff line
@@ -141,6 +141,9 @@ void ivas_ism_renderer_close(

void ivas_ism_render_sf(
    Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure                      */
#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
    const RENDERER_TYPE renderer_type, /* i: current renderer type                        */
#endif
    float *output_f[],                /* i/o: core-coder transport channels/object output */
    const int16_t n_samples_to_render /* i  : output frame length per channel             */
)
@@ -172,12 +175,15 @@ void ivas_ism_render_sf(
    assert( slots_to_render == 0 );
    assert( last_sf <= st_ivas->hTcBuffer->nb_subframes );
#endif

#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
    num_objects = st_ivas->nchan_ism;
#else
    num_objects = st_ivas->nchan_transport;
    if ( st_ivas->ivas_format == SBA_ISM_FORMAT )
    {
        num_objects = st_ivas->nchan_ism;
    }
#endif

    nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE;

@@ -283,7 +289,11 @@ void ivas_ism_render_sf(
#ifdef NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO
        /* update rendered subframe and slots info for all cases apart from a following crend call, the update will
           then happen in the crend call*/
#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
        if ( renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM )
#else
        if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM )
#endif
#else
        if ( st_ivas->renderer_type == RENDERER_TD_PANNING )
#endif
+12 −0
Original line number Diff line number Diff line
@@ -1093,7 +1093,11 @@ ivas_error ivas_jbm_dec_render(
            if ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM )
            {
                /* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */
#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
                ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output, *nSamplesRendered );
#else
                ivas_ism_render_sf( st_ivas, p_output, *nSamplesRendered );
#endif
            }
            else if ( st_ivas->renderer_type == RENDERER_NON_DIEGETIC_DOWNMIX )
            {
@@ -1235,7 +1239,11 @@ ivas_error ivas_jbm_dec_render(
                }

                /* render objects */
#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
                ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output, *nSamplesRendered );
#else
                ivas_ism_render_sf( st_ivas, p_output, *nSamplesRendered );
#endif

                /* add already rendered SBA part */
                for ( n = 0; n < nchan_out; n++ )
@@ -1644,7 +1652,11 @@ ivas_error ivas_jbm_dec_flush_renderer(
                    /* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */
                    set_f( st_ivas->hIsmRendererData->interpolator, 1.0f, hTcBuffer->n_samples_granularity );

#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
                    ivas_ism_render_sf( st_ivas, renderer_type_old, p_output, hTcBuffer->n_samples_granularity );
#else
                    ivas_ism_render_sf( st_ivas, p_output, hTcBuffer->n_samples_granularity );
#endif

#if defined SPLIT_REND_WITH_HEAD_ROT
                    if ( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL,
+4 −0
Original line number Diff line number Diff line
@@ -284,7 +284,11 @@ ivas_error ivas_osba_render_sf(

    if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM )
    {
#ifdef NONBE_FIX_1021_ISM_BRIR_RS_FLUSH
        ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output_ism, *nSamplesRendered );
#else
        ivas_ism_render_sf( st_ivas, p_output_ism, *nSamplesRendered );
#endif
    }

    for ( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ )