Commit 7694079c authored by lefort's avatar lefort
Browse files

Algorithmic tuning and optimisation.

parent 3eff4828
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -6251,10 +6251,20 @@ void fft(
    {
        case 20:
            fft_len20( re, im, s );
#ifdef ENHANCED_STEREO_DMX
        case 16:
            fft_lenN( re, im, FFT_RotVector_256, 256, 1, 16, s, 64, 64 );
            break;
        case 32:
            fft_lenN( re, im, FFT_RotVector_256, 256, 1, 32, s, 64, 64 );
            break;
#endif
        case 40:
            fft_lenN( re, im, FFT_RotVector_640, 640, 5, 8, s, 8, 40 );
            break;
        case 50:
            fft_lenN( re, im, FFT_RotVector_400, 400, 5, 10, s, 4, 40 );
            break;
        case 64:
            fft_lenN( re, im, FFT_RotVector_256, 256, 8, 8, s, 8, 64 );
            break;
+15 −0
Original line number Diff line number Diff line
@@ -1660,6 +1660,21 @@ typedef enum
 * Stereo downmix EVS constants
 *----------------------------------------------------------------------------------*/

#define STEREO_DMX_EVS_PHA_LEN_16 48
#define STEREO_DMX_EVS_FAD_LEN_16 160
#define STEREO_DMX_EVS_PHA_LEN_32 96
#define STEREO_DMX_EVS_FAD_LEN_32 320
#define STEREO_DMX_EVS_PHA_LEN_48 96
#define STEREO_DMX_EVS_FAD_LEN_48 480

#define STEREO_DMX_EVS_SUBBAND_SIZE 2
#define STEREO_DMX_EVS_NB_SUBBAND_MAX (L_FRAME48k / (2 * STEREO_DMX_EVS_SUBBAND_SIZE))

#define STEREO_DMX_EVS_PHA_LEN_MAX 96 /* Max of PHA_LEN */
#define STEREO_DMX_EVS_FAD_LEN_MAX 480 /* Max of FAD_LEN */

#define STEREO_DMX_EVS_DATA_LEN_MAX (STEREO_DMX_EVS_PHA_LEN_MAX + L_FRAME48k)

typedef enum
{
    STEREO_DMX_EVS_PHA_IPD,
+14 −10
Original line number Diff line number Diff line
@@ -970,19 +970,21 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure
#ifdef ENHANCED_STEREO_DMX
typedef struct stereo_dmx_evs_correlation_filter_structure
{
    float ipd_ff[L_FRAME48k / 2 + 1];
    float Pr[L_FRAME48k / 2 + 1];
    float Pi[L_FRAME48k / 2 + 1];
    int16_t init_frmCntr;
    float ipd_ff[STEREO_DMX_EVS_NB_SUBBAND_MAX];
    float Pr[STEREO_DMX_EVS_NB_SUBBAND_MAX];
    float Pi[STEREO_DMX_EVS_NB_SUBBAND_MAX];
    float rfft_ipd_coef[L_FRAME48k/2 + 1];

    int16_t pha_len;
    int16_t fad_len;

    float win[L_FRAME48k];
    float fad_g[L_FRAME48k];
    float *p_prev_taps[CPE_CHANNELS], prev_taps[CPE_CHANNELS][L_FRAME48k];
    float *p_curr_taps[CPE_CHANNELS], curr_taps[CPE_CHANNELS][L_FRAME48k];
    float win[STEREO_DMX_EVS_PHA_LEN_MAX];
    float fad_g[STEREO_DMX_EVS_FAD_LEN_MAX];
    float *p_prev_taps[CPE_CHANNELS], prev_taps[CPE_CHANNELS][STEREO_DMX_EVS_PHA_LEN_MAX];
    float *p_curr_taps[CPE_CHANNELS], curr_taps[CPE_CHANNELS][STEREO_DMX_EVS_PHA_LEN_MAX];

    float data_mem[CPE_CHANNELS][L_FRAME48k * 2];
    float data_mem[CPE_CHANNELS][STEREO_DMX_EVS_PHA_LEN_MAX];

    STEREO_DMX_EVS_PHA curr_pha;
    STEREO_DMX_EVS_PHA prev_pha;
@@ -997,9 +999,11 @@ typedef struct stereo_dmx_evs_correlation_filter_structure

    float dmx_pha_ener;
    float dmx_poc_ener;
    float dmx_old_gain;
    float dmx_pha_old_gain;
    float dmx_poc_old_gain;

    float aux_energy[CPE_CHANNELS];
    float trns_aux_energy[CPE_CHANNELS];
    float crst_fctr;

} STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE;

+294 −174

File changed.

Preview size limit exceeded, changes collapsed.