Commit b3cebc19 authored by reutelhuber's avatar reutelhuber
Browse files

fix broken low bitrates where SPAR isn't used right now

parent b37983de
Loading
Loading
Loading
Loading
+27 −24
Original line number Diff line number Diff line
@@ -270,8 +270,11 @@ static void map_params_dirac_to_stereo(

            /* apply upper bounds depending on band */
#ifdef DFT_STEREO_SPAR_MIXING
            if ( !mcmasa )
            {
                hStereoDft->smooth_fac[0][b] = max( hStereoDft->min_smooth_gains[b], min( hStereoDft->max_smooth_gains[b], hStereoDft->smooth_fac[0][b] ) );
                hStereoDft->smooth_fac[1][b] = max( hStereoDft->min_smooth_gains[b], min( hStereoDft->max_smooth_gains[b], hStereoDft->smooth_fac[1][b] ) );
            }
#else
            hStereoDft->smooth_fac[0][b] = min( max_smooth_gains[b], hStereoDft->smooth_fac[0][b] );
            hStereoDft->smooth_fac[1][b] = min( max_smooth_gains[b], hStereoDft->smooth_fac[1][b] );
@@ -875,7 +878,7 @@ void ivas_sba_dirac_stereo_dec(
        hStereoDft->NFFT
#ifdef DFT_STEREO_SPAR_MIXING
        ,
        (st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa) ? 1 : 0
        (st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa)
#endif
    );

@@ -909,15 +912,15 @@ void ivas_sba_dirac_stereo_dec(
        DFT[0],
        st_ivas->ivas_format == MC_FORMAT,
#ifdef DFT_STEREO_SPAR_MIXING
        mcmasa ? hSCE->hCoreCoder[0]->L_frame : 0,
        mcmasa
        ( st_ivas->sba_mode != SBA_MODE_SPAR || mcmasa ) ? hSCE->hCoreCoder[0]->L_frame : 0,
        ( st_ivas->sba_mode != SBA_MODE_SPAR || mcmasa )
#else
        hSCE->hCoreCoder[0]->L_frame
#endif
    );

#ifdef DFT_STEREO_SPAR_MIXING
    if (!mcmasa)
    if ( st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa)
    {
        set_f( hStereoDft->res_pred_gain, 1.f, 3 * STEREO_DFT_BAND_MAX );
    }
@@ -971,7 +974,7 @@ void ivas_sba_dirac_stereo_dec(
                output_frame
#ifdef DFT_STEREO_SPAR_MIXING
                ,
                mcmasa,
                (st_ivas->sba_mode != SBA_MODE_SPAR || mcmasa),
                hStereoDft
#endif
            );
@@ -985,7 +988,7 @@ void ivas_sba_dirac_stereo_dec(
        ivas_sba_dirac_stereo_apply_td_stefi( hStereoDft, output, output_frame
#ifdef DFT_STEREO_SPAR_MIXING
                                              ,
                                              ( st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa) ? 1 : 0
                                              ( st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa)
#endif
        );
    }
+1 −5
Original line number Diff line number Diff line
@@ -1146,11 +1146,7 @@ void stereo_dft_dec_synthesize(
void stereo_dft_dec(
    STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle          */
    Decoder_State *st0,                    /* i/o: decoder state structure            */
#ifdef DFT_STEREO_SPAR_MIXING
    float DFT[CPE_CHANNELS + 1][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers                        */
#else
    float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers                        */
#endif
    float *input_mem,                   /* i/o: mem of buffer DFT analysis         */
    STEREO_CNG_DEC_HANDLE hStereoCng,   /* i/o: Stereo CNG data structure          */
    const int16_t sba_dirac_stereo_flag /* i  : signal stereo output for SBA DirAC */
@@ -1405,7 +1401,7 @@ void stereo_dft_dec(

                /* No residual coding in inactive frames, instead pDFT_RES is used for the second channel */
#ifdef DFT_STEREO_SPAR_MIXING
                if ( b >= hStereoDft->res_cod_band_max && !hStereoDft->frame_sid_nodata && !sba_dirac_stereo_flag )
                if ( b >= hStereoDft->res_cod_band_max && !hStereoDft->frame_sid_nodata && !(sba_dirac_stereo_flag && hMdDec) )
#else
                if ( b >= hStereoDft->res_cod_band_max && !hStereoDft->frame_sid_nodata )
#endif