Commit 147f3eea authored by eichenseer's avatar eichenseer
Browse files

Refactoring of ParamISM (issue 768) under switch PARAM_ISM_REFACTOR.

parent a54a59b1
Loading
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1034,10 +1034,17 @@ void ivas_param_ism_enc(
    const int16_t input_frame                                   /* i  : input frame length per channel              */
);

#ifndef PARAM_ISM_REFACTOR
void ivas_param_ism_enc_close(
    DIRAC_ENC_HANDLE *hDirAC,                                   /* i/o: encoder DirAC handle                        */
    const int32_t input_Fs                                      /* i  : input sampling_rate                         */
);
#else
void ivas_param_ism_enc_close(
    PARAM_ISM_CONFIG_HANDLE *hParamIsm,                         /* i/o: ParamISM handle                             */
    const int32_t input_Fs                                      /* i  : input sampling_rate                         */
);
#endif

void ivas_ism_metadata_close(
    ISM_METADATA_HANDLE hIsmMetaData[],                         /* i/o  : object metadata handles                   */
@@ -1076,7 +1083,11 @@ ivas_error ivas_param_ism_dec_open(
);

void ivas_param_ism_dec_close(
#ifndef PARAM_ISM_REFACTOR
    DIRAC_DEC_HANDLE *hDirAC,                                   /* i/o: decoder DirAC handle                        */
#else
    PARAM_ISM_DEC_HANDLE *hParamIsmDec,                         /* i/o: decoder ParamISM handle                     */
#endif
    SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out,  /* i/o: common spatial renderer data                */
    const AUDIO_CONFIG output_config                            /* i  : output audio configuration                  */
);
+35 −30
Original line number Diff line number Diff line
@@ -150,36 +150,6 @@ typedef struct

} ECSQ_instance;

/*----------------------------------------------------------------------------------*
 * PARAMETRIC ISM encoder/decoder (common) structure
 *----------------------------------------------------------------------------------*/

typedef struct ivas_param_ism_data_structure
{
    int16_t nbands;
    int16_t nblocks[MAX_PARAM_ISM_NBANDS];
    int16_t band_grouping[MAX_PARAM_ISM_NBANDS + 1];

    int16_t azi_index[MAX_NUM_OBJECTS];
    int16_t ele_index[MAX_NUM_OBJECTS];

    int16_t obj_indices[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS][MAX_PARAM_ISM_WAVE];
    int16_t power_ratios_idx[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS];

    int16_t last_az_sgn[MAX_NUM_OBJECTS];
    int16_t last_az_diff[MAX_NUM_OBJECTS];
    int16_t last_el_sgn[MAX_NUM_OBJECTS];
    int16_t last_el_diff[MAX_NUM_OBJECTS];

    int16_t flag_noisy_speech;
    int16_t noisy_speech_buffer[PARAM_ISM_HYS_BUF_SIZE];
    int16_t flag_equal_energy;

    float last_dmx_gain;
    float last_cardioid_left[MAX_NUM_OBJECTS];

} PARAM_ISM_CONFIG_DATA, *PARAM_ISM_CONFIG_HANDLE;


/*----------------------------------------------------------------------------------*
 * Declaration of DirAC common (encoder & decoder) structure
@@ -813,4 +783,39 @@ typedef struct ivas_fb_mixer_state_structure
} IVAS_FB_MIXER_DATA, *IVAS_FB_MIXER_HANDLE;


/*----------------------------------------------------------------------------------*
 * PARAMETRIC ISM encoder/decoder (common) structure
 *----------------------------------------------------------------------------------*/

typedef struct ivas_param_ism_data_structure
{
#ifdef PARAM_ISM_REFACTOR
    IVAS_FB_MIXER_HANDLE hFbMixer;

#endif
    int16_t nbands;
    int16_t nblocks[MAX_PARAM_ISM_NBANDS];
    int16_t band_grouping[MAX_PARAM_ISM_NBANDS + 1];

    int16_t azi_index[MAX_NUM_OBJECTS];
    int16_t ele_index[MAX_NUM_OBJECTS];

    int16_t obj_indices[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS][MAX_PARAM_ISM_WAVE];
    int16_t power_ratios_idx[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS];

    int16_t last_az_sgn[MAX_NUM_OBJECTS];
    int16_t last_az_diff[MAX_NUM_OBJECTS];
    int16_t last_el_sgn[MAX_NUM_OBJECTS];
    int16_t last_el_diff[MAX_NUM_OBJECTS];

    int16_t flag_noisy_speech;
    int16_t noisy_speech_buffer[PARAM_ISM_HYS_BUF_SIZE];
    int16_t flag_equal_energy;

    float last_dmx_gain;
    float last_cardioid_left[MAX_NUM_OBJECTS];

} PARAM_ISM_CONFIG_DATA, *PARAM_ISM_CONFIG_HANDLE;


#endif /* IVAS_STAT_COM */
+2 −0
Original line number Diff line number Diff line
@@ -158,6 +158,8 @@
#define OSBA_SPLIT_RENDERING
#endif

#define PARAM_ISM_REFACTOR                              /* FhG: Issue 768: Refactoring to decouple hDirAC and hParamISM */

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

/* #################### Start NON-BE switches ############################ */
+5 −0
Original line number Diff line number Diff line
@@ -188,8 +188,13 @@ ivas_error ivas_dec(
        }
        else if ( st_ivas->ism_mode == ISM_MODE_PARAM )
        {
#ifndef PARAM_ISM_REFACTOR
            if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, st_ivas->hDirAC->hParamIsm, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt,
                                                  st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, st_ivas->hParamIsmDec->hParamIsm, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt,
                                                  st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }
+2 −0
Original line number Diff line number Diff line
@@ -85,8 +85,10 @@ static ivas_error ivas_dirac_dec_config_internal(
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC Config\n" ) );
        }

#ifndef PARAM_ISM_REFACTOR
        hDirAC->hParamIsm = NULL;
        hDirAC->hParamIsmRendering = NULL;
#endif
        st_ivas->hDirAC = hDirAC;
    }

Loading