Commit 3ecd4fd6 authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'main' into 966-usan-implicit-signed-integer-truncation-in-2-and-4-ism-encoding

parents e2d1b692 20e574fa
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1219,6 +1219,9 @@ enum
#define MASA_BIT_REDUCT_PARAM                   10
#define MASA_MAXIMUM_TWO_DIR_BANDS              24
#define NBITS_HR_COH                            4
#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS
#define OMASA_TDREND_MATCHING_GAIN              0.7943f
#endif

#define MASA_JBM_RINGBUFFER_FRAMES              3

+2 −1
Original line number Diff line number Diff line
@@ -154,6 +154,7 @@
#define FIX_963_USAN_ERROR                              /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */
#define FIX_971_LOG2_IDX_GAIN_0                         /* VA: prevent -Inf due to log2(ratio==0) */
#define FIX_966_VAR_OVERFLOW_IN_HARM_MODEL_ARI          /* FhG: fix and undef behaviour bug in the harmonic TCX model arithmetic coder */
#define FIX_983_DISC_ISM_DIGEST_NUM_OBJS                /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */

/* #################### End BE switches ################################## */

@@ -169,7 +170,7 @@
#define NONBE_FIX_567_DOUBLE_STEREO_DMX                       /* Orange: Double-precision replaced by single-precision */   
#define NONBE_FIX_947_STEREO_DMX_EVS_POC                      /* Orange: Fix clicks on POC */  
#define NONBE_FIX_947_STEREO_DMX_EVS_PHA                      /* Orange: Fix issues on PHA */                                                                                        

#define NONBE_FIX_982_OMASA_DELAY_COMP_5MS                    /* FhG : issue #982 : 5ms and 20ms output different for OMASA */
/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+9 −0
Original line number Diff line number Diff line
@@ -996,7 +996,11 @@ void ivas_ism_dec_digest_tc(
         st_ivas->renderer_type == RENDERER_OSBA_STEREO ||
         ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) )
    {
#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS
        int16_t i;
#else
        int16_t i, num_objects;
#endif
        int16_t azimuth, elevation;

        /* we have a full frame interpolator, adapt it */
@@ -1029,8 +1033,13 @@ void ivas_ism_dec_digest_tc(
        }

        /* also get the gains here */
#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS
        for ( i = 0; i < st_ivas->nchan_ism; i++ )
#else
        num_objects = st_ivas->nchan_transport;

        for ( i = 0; i < num_objects; i++ )
#endif
        {
            mvr2r( st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmRendererData->prev_gains[i], MAX_OUTPUT_CHANNELS );

+2 −0
Original line number Diff line number Diff line
@@ -523,6 +523,7 @@ void ivas_omasa_separate_object_render_jbm(

    for ( obj = 0; obj < num_objects; obj++ )
    {
#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS
        /* Delay the signal to match CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */
        if ( slots_rendered == 0 )
        {
@@ -531,6 +532,7 @@ void ivas_omasa_separate_object_render_jbm(
            tcBufferSize = hSpatParamRendCom->num_slots * hSpatParamRendCom->slot_size;
            delay_signal( input_f[obj], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer[obj], st_ivas->hMasaIsmData->delayBuffer_size );
        }
#endif
        offsetSamples = 0;

        for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ )
+25 −0
Original line number Diff line number Diff line
@@ -892,6 +892,31 @@ void ivas_jbm_dec_feed_tc_to_renderer(
        {
            ivas_ism_dec_digest_tc( st_ivas );
        }

#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS
        if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_DIRAC )
        {
            int16_t num_objects;
            /* Delay the signal to match CLDFB delay. Delay the whole buffer. */
            num_objects = 0;
            if ( ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC )
            {
                num_objects = 1;
            }
            else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC )
            {
                num_objects = st_ivas->nchan_ism;
            }
            for ( n = 0; n < num_objects; n++ )
            {
                if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC )
                {
                    v_multc( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], OMASA_TDREND_MATCHING_GAIN, st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available );
                }
                delay_signal( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
            }
        }
#endif
    }
    else if ( st_ivas->ivas_format == MC_FORMAT )
    {
Loading