Commit 353ec820 authored by multrus's avatar multrus
Browse files

[cleanup] accept NONBE_1360_LFE_DELAY

parent 55f3ff00
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -87,10 +87,7 @@
/* #################### Start BASOP porting switches ############################ */

#define NONBE_1244_FIX_SWB_BWE_MEMORY                   /* VA: issue 1244: fix to SWB BWE memory in case of switching from FB coding - pending a review by Huawei */

#define FIX_1129_EXT_REND_OUTPUT_HIGH                   /* Philips: issue 1129: External renderer BINAURAL_ROOM_REVERB format output level too high compared to internal rendering output */
#define NONBE_1360_LFE_DELAY                            /* Dlb: LFE delay alignment when rendering in CLDFB domain*/

#define NONBE_1328_FIX_NON_LINEARITY                    /* VA: Fix possible issue when computing bwe_exc_extended and previous frame were almost 0, float issue 1328  */

/* #################### End BASOP porting switches ############################ */
+0 −4
Original line number Diff line number Diff line
@@ -2870,7 +2870,6 @@ ivas_error ivas_init_decoder_fx(
    test();
    IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
    {
#ifdef NONBE_1360_LFE_DELAY
        IF( NE_16( st_ivas->hIntSetup.index_lfe[0], -1 ) )
        {
            delay_ns = st_ivas->binaural_latency_ns;
@@ -2879,9 +2878,6 @@ ivas_error ivas_init_decoder_fx(
        {
            delay_ns = 0;
        }
#else
        delay_ns = st_ivas->binaural_latency_ns;
#endif
        move32();
        IF( st_ivas->hBinRenderer != NULL )
        {
+0 −32
Original line number Diff line number Diff line
@@ -435,14 +435,9 @@ ivas_error ivas_create_lfe_dec_fx(
    Word16 filt_order, output_frame;
    LFE_DEC_HANDLE hLFE;
    Word16 i, j;
#ifndef NONBE_1360_LFE_DELAY
    int16_t add_delay_sa;
    Word16 lfe_addl_delay_s;
#else
    Word16 lfe_block_delay_s_fx;
    Word16 block_offset_samples, lfe_block_delay_samples;
    Word16 lfe_addl_delay_samples;
#endif
    Word32 output_fs_fx;

    low_pass_delay_dec_out = 0;
@@ -483,11 +478,7 @@ ivas_error ivas_create_lfe_dec_fx(
    hLFE->cum_freq_models[1][3] = &ivas_str_lfe_freq_models.entropy_coder_model_coarse_sg4;

    /* delay calculation */
#ifndef NONBE_1360_LFE_DELAY
    hLFE->lfe_block_delay_s_fx = add( IVAS_LFE_FADE_S_Q15, ivas_lfe_lpf_delay_Q15[IVAS_FILTER_ORDER_4 - 3] ); // Q15
#else
    lfe_block_delay_s_fx = add( IVAS_LFE_FADE_S_Q15, ivas_lfe_lpf_delay_Q15[IVAS_FILTER_ORDER_4 - 3] ); // Q15
#endif
    move16();

    block_offset_s = BLOCK_OFFSET_S_Q15; // Q15
@@ -506,12 +497,7 @@ ivas_error ivas_create_lfe_dec_fx(

    hLFE->filter_state.order = filt_order;
    move16();
#ifndef NONBE_1360_LFE_DELAY
    hLFE->lfe_block_delay_s_fx = add( hLFE->lfe_block_delay_s_fx, low_pass_delay_dec_out ); // Q15
    move16();
#else
    lfe_block_delay_s_fx = add( lfe_block_delay_s_fx, low_pass_delay_dec_out );                         // Q15
#endif
    hLFE->lfe_prior_buf_len = NS2SA_FX2( output_Fs, IVAS_LFE_FADE_NS ); // Q0
    move16();

@@ -535,7 +521,6 @@ ivas_error ivas_create_lfe_dec_fx(
    }
    move32();

#ifdef NONBE_1360_LFE_DELAY
    block_offset_samples = (Word16) L_shr( imult3216( output_Fs, block_offset_s ), 15 );                                             // Q0
    block_offset_samples = add( block_offset_samples, (Word16) W_round64_L( W_mult0_32_32( L_shl( delay_ns, 1 ), output_fs_fx ) ) ); // Q0
    lfe_block_delay_samples = (Word16) L_shr( imult3216( output_Fs, lfe_block_delay_s_fx ), 15 );                                    // Q0
@@ -545,23 +530,6 @@ ivas_error ivas_create_lfe_dec_fx(
    move16();
    hLFE->delay_ns = delay_ns;
    move32();
#else
    lfe_addl_delay_s = sub( block_offset_s, hLFE->lfe_block_delay_s_fx );                               // Q15
    lfe_addl_delay_s = s_max( 0, lfe_addl_delay_s );
    add_delay_sa = (Word16) W_round64_L( W_mult0_32_32( L_shl( delay_ns, 1 ), output_fs_fx ) ); // Q0
    move16();
    hLFE->lfe_addl_delay = add( (Word16) L_shr( imult3216( output_Fs, lfe_addl_delay_s ), 15 ), add_delay_sa ); // Q0
    move16();
    IF( add_delay_sa == 0 )
    {
        hLFE->lfe_block_delay_s_fx = add( hLFE->lfe_block_delay_s_fx, lfe_addl_delay_s );
    }
    ELSE
    {
        hLFE->lfe_block_delay_s_fx = add( hLFE->lfe_block_delay_s_fx, add( lfe_addl_delay_s, idiv1616( add_delay_sa, extract_l( output_Fs ) ) ) );
    }
    move16();
#endif

    IF( hLFE->lfe_addl_delay > 0 )
    {
+0 −8
Original line number Diff line number Diff line
@@ -960,38 +960,30 @@ static void ivas_mc_paramupmix_dec_sf(
        {
            FOR( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ )
            {
#ifdef NONBE_1360_LFE_DELAY
                /*delay is handled within LFE decoder*/
                IF( NE_16( st_ivas->hIntSetup.index_lfe[0], ch ) )
                {
#endif
                    Word32 tmp_buf_fx[L_SUBFRAME5MS_48k];
                    Copy32( &output_fx[ch][n_samples_rendered - noparamupmix_delay], tmp_buf_fx, noparamupmix_delay );
                    Copy32( output_fx[ch], &output_fx[ch][noparamupmix_delay], sub( n_samples_rendered, noparamupmix_delay ) );
                    Copy32( hMCParamUpmix->pcm_delay_fx[ch], output_fx[ch], noparamupmix_delay );
                    Copy32( tmp_buf_fx, hMCParamUpmix->pcm_delay_fx[ch], noparamupmix_delay );
#ifdef NONBE_1360_LFE_DELAY
                }
#endif
            }
        }
        ELSE
        {
            FOR( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ )
            {
#ifdef NONBE_1360_LFE_DELAY
                /*delay is handled within LFE decoder*/
                IF( NE_16( st_ivas->hIntSetup.index_lfe[0], ch ) )
                {
#endif
                    Word32 tmp_buf_fx[L_SUBFRAME5MS_48k];
                    Copy32( &output_fx[ch][0], tmp_buf_fx, n_samples_rendered );
                    Copy32( hMCParamUpmix->pcm_delay_fx[ch], output_fx[ch], n_samples_rendered );
                    Copy32( &hMCParamUpmix->pcm_delay_fx[ch][n_samples_rendered], &hMCParamUpmix->pcm_delay_fx[ch][0], sub( noparamupmix_delay, n_samples_rendered ) );
                    Copy32( tmp_buf_fx, &hMCParamUpmix->pcm_delay_fx[ch][noparamupmix_delay - n_samples_rendered], n_samples_rendered );
#ifdef NONBE_1360_LFE_DELAY
                }
#endif
            }
        }
    }
+0 −59
Original line number Diff line number Diff line
@@ -1329,47 +1329,6 @@ static ivas_error ivas_mc_dec_reconfig_fx(
        return error;
    }

#ifndef NONBE_1360_LFE_DELAY
    /*-----------------------------------------------------------------*
     * Allocate the LFE handle that is coded separately after the allocation of the core coders
     *-----------------------------------------------------------------*/

    test();
    test();
    IF( ( EQ_16( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_16( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) && st_ivas->hLFE == NULL )
    {
        Word32 delay_ns = st_ivas->binaural_latency_ns;
        move32();
        IF( st_ivas->hBinRenderer != NULL )
        {
            IF( st_ivas->hBinRenderer->render_lfe )
            {
                /* Account for filterbank delay */
                delay_ns = L_add( delay_ns, IVAS_FB_DEC_DELAY_NS );
            }
            ELSE
            {
                delay_ns = 0;
                move32();
            }
        }
        ELSE
        {
            IF( EQ_16( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) && ( st_ivas->cldfbSynDec[0] != NULL ) )
            {
                delay_ns = L_add( delay_ns, IVAS_FB_DEC_DELAY_NS );
            }
        }

        IF( NE_32( ( error = ivas_create_lfe_dec_fx( &st_ivas->hLFE, st_ivas->hDecoderConfig->output_Fs, delay_ns ) ), IVAS_ERR_OK ) )
        {
            return error;
        }

        set32_fx( st_ivas->hLFE->prevsynth_buf_fx, 0, LFE_PLC_BUFLEN );
        set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k );
    }
#endif

    /*-----------------------------------------------------------------*
     * Reconfigure renderers
@@ -1528,20 +1487,12 @@ static ivas_error ivas_mc_dec_reconfig_fx(
        return error;
    }

#ifdef NONBE_1360_LFE_DELAY
    /*-----------------------------------------------------------------*
     * Allocate the LFE handle that is coded separately after the allocation of the core coders
     *-----------------------------------------------------------------*/
#ifdef NONBE_1360_LFE_DELAY
    test();
    IF( ( EQ_16( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_16( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) )
#else
    test();
    test();
    IF( ( EQ_16( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_16( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) && st_ivas->hLFE == NULL )
#endif
    {
#ifdef NONBE_1360_LFE_DELAY
        Word32 delay_ns;
        IF( NE_16( st_ivas->hIntSetup.index_lfe[0], -1 ) )
        {
@@ -1551,9 +1502,6 @@ static ivas_error ivas_mc_dec_reconfig_fx(
        {
            delay_ns = 0;
        }
#else
        Word32 delay_ns = st_ivas->binaural_latency_ns;
#endif
        move32();
        IF( st_ivas->hBinRenderer != NULL )
        {
@@ -1576,7 +1524,6 @@ static ivas_error ivas_mc_dec_reconfig_fx(
            }
        }

#ifdef NONBE_1360_LFE_DELAY
        IF( st_ivas->hLFE != NULL )
        {
            IF( NE_32( st_ivas->hLFE->delay_ns, delay_ns ) )
@@ -1584,12 +1531,9 @@ static ivas_error ivas_mc_dec_reconfig_fx(
                ivas_lfe_dec_close_fx( &( st_ivas->hLFE ) );
            }
        }
#endif

#ifdef NONBE_1360_LFE_DELAY
        IF( st_ivas->hLFE == NULL )
        {
#endif
            IF( NE_32( ( error = ivas_create_lfe_dec_fx( &st_ivas->hLFE, st_ivas->hDecoderConfig->output_Fs, delay_ns ) ), IVAS_ERR_OK ) )
            {
                return error;
@@ -1597,11 +1541,8 @@ static ivas_error ivas_mc_dec_reconfig_fx(

            set32_fx( st_ivas->hLFE->prevsynth_buf_fx, 0, LFE_PLC_BUFLEN );
            set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k );
#ifdef NONBE_1360_LFE_DELAY
        }
#endif
    }
#endif

    /*-----------------------------------------------------------------*
     * JBM TC buffers
Loading