Commit 5925dc71 authored by vaclav's avatar vaclav
Browse files

make 'nchan_ism' parameter part of st_ivas/hEncoderConfig; under NCHAN_ISM_PARAMETER

parent 8e2fe898
Loading
Loading
Loading
Loading
+30 −15
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ static void bitbudget_to_brate(
ivas_error ivas_ism_config(
    const int32_t ism_total_brate,           /* i  : ISms total bitrate             */
    const int16_t nchan_transport,           /* i  : number of transport channels   */
    const int16_t num_obj,                   /* i  : number of objects            */
    const int16_t nchan_ism,                 /* i  : number of objects              */
    ISM_METADATA_HANDLE hIsmMeta[],          /* i/o: ISM metadata handles           */
    const int16_t localVAD[MAX_NUM_OBJECTS], /* i  : local VAD flag                 */
    const int16_t ism_imp[],                 /* i  : ISM importance flags           */
@@ -137,7 +137,7 @@ ivas_error ivas_ism_config(
            nb_bits_metadata[0] += ISM_EXTENDED_METADATA_BITS;
        }
#endif
        nb_bits_metadata[0] += n_ISms * ISM_METADATA_FLAG_BITS + num_obj;
        nb_bits_metadata[0] += n_ISms * ISM_METADATA_FLAG_BITS + nchan_ism;

        for ( ch = 0; ch < n_ISms; ch++ )
        {
@@ -453,12 +453,23 @@ float ism_dequant_meta(
 * ---------------------------------------------------------------*/

void ivas_param_ism_config(
    PARAM_ISM_CONFIG_HANDLE hParamIsm /* i/o: IVAS Param ISM Config Structure      */ )
    PARAM_ISM_CONFIG_HANDLE hParamIsm /* i/o: IVAS Param ISM Config Structure      */
#ifdef NCHAN_ISM_PARAMETER
    ,
    const int16_t nchan_obj /* i  : number of ISM channels                      */
#endif
)
{
#ifdef NCHAN_ISM_PARAMETER
    int16_t i;

    hParamIsm->nbands = MAX_PARAM_ISM_NBANDS;
#else
    int16_t i, num_obj;

    hParamIsm->nbands = MAX_PARAM_ISM_NBANDS;
    num_obj = hParamIsm->num_obj;
#endif

    for ( i = 0; i < hParamIsm->nbands; i++ )
    {
@@ -466,7 +477,11 @@ void ivas_param_ism_config(
    }

    /* for elevation zero compute the max azi quantization indices */
#ifdef NCHAN_ISM_PARAMETER
    for ( i = 0; i < nchan_obj; i++ )
#else
    for ( i = 0; i < num_obj; i++ )
#endif
    {
        hParamIsm->last_az_diff[i] = 0;
        hParamIsm->last_az_sgn[i] = 1;
@@ -513,14 +528,14 @@ ISM_MODE ivas_ism_mode_select(
 *-------------------------------------------------------------------*/

void update_last_metadata(
    const int16_t num_obj,          /* i  : number of objects           */
    const int16_t nchan_ism,        /* i  : number of objects           */
    ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles        */
    const int16_t updt_flag[]       /* i  : last metadata update flag   */
)
{
    int16_t ch;

    for ( ch = 0; ch < num_obj; ch++ )
    for ( ch = 0; ch < nchan_ism; ch++ )
    {
        if ( updt_flag[ch] == 1 )
        {
@@ -540,7 +555,7 @@ void update_last_metadata(
 *----------------------------------------------------------------*/

void ivas_get_ism_sid_quan_bitbudget(
    const int16_t num_obj,    /* i  : number of objects                 */
    const int16_t nchan_ism,  /* i  : number of objects                 */
    int16_t *nBits_azimuth,   /* o  : number of Q bits for azimuth      */
    int16_t *nBits_elevation, /* o  : number of Q bits for elevation    */
    float *q_step,            /* o  : quantization step                 */
@@ -556,7 +571,7 @@ void ivas_get_ism_sid_quan_bitbudget(
    *nBits_coh = ISM_DTX_COH_SCA_BITS;
    *nBits_sce_id = 1;

    if ( num_obj >= 3 )
    if ( nchan_ism >= 3 )
    {
        *nBits_azimuth = ISM_DTX_AZI_BITS_LOW;
        *nBits_elevation = ISM_DTX_ELE_BITS_LOW;
+24 −11
Original line number Diff line number Diff line
@@ -747,8 +747,8 @@ void dtx_read_padding_bits(

ivas_error ivas_ism_config(
    const int32_t ism_total_brate,                              /* i  : ISms total bitrate                          */
    const int16_t num_trans_ch,                                 /* i  : number of trans channels                    */
    const int16_t num_obj,                                      /* i  : number of objects                           */
    const int16_t nchan_transport,                              /* i  : number of transport channels                */
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
    const int16_t localVAD[MAX_NUM_OBJECTS],                    /* i  : local VAD flag                              */
    const int16_t ism_imp[],                                    /* i  : ISM importance flags                        */
@@ -818,6 +818,9 @@ ivas_error ivas_ism_enc(

ivas_error ivas_ism_metadata_enc(
    const int32_t ism_total_brate,                              /* i  : ISms total bitrate                          */
#ifdef NCHAN_ISM_PARAMETER
    const int16_t nchan_ism,                                    /* i  : number of ISM channels                      */
#endif
    const int16_t nchan_transport,                              /* i  : number of transport channels                */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
    SCE_ENC_HANDLE hSCE[],                                      /* i/o: SCE encoder handles                         */
@@ -835,6 +838,9 @@ ivas_error ivas_ism_metadata_enc(

ivas_error ivas_ism_metadata_dec(
    const int32_t ism_total_brate,                              /* i  : ISms total bitrate                          */
#ifdef NCHAN_ISM_PARAMETER
    const int16_t nchan_ism,                                    /* i  : number of ISM channels                      */
#endif
    int16_t *nchan_transport,                                   /* o  : number of transport channels                */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
    SCE_DEC_HANDLE hSCE[],                                      /* i/o: SCE decoder handles                         */
@@ -881,6 +887,10 @@ void ivas_param_ism_stereo_dmx(

void ivas_param_ism_config(
    PARAM_ISM_CONFIG_HANDLE hParamIsm                           /* i/o: IVAS Param ISM Config Structure             */
#ifdef NCHAN_ISM_PARAMETER
    ,
    const int16_t nchan_ism                                     /* i  : number of ISM channels                      */
#endif
);

ivas_error ivas_ism_enc_config(
@@ -888,11 +898,14 @@ ivas_error ivas_ism_enc_config(
);

ivas_error ivas_ism_dec_config(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                      */
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                      */
#ifdef DISCRETE_ISM_DTX_CNG
    const ISM_MODE last_ism_mode,                               /* i/o: last ISM mode                               */
    ,
    const ISM_MODE last_ism_mode                                /* i/o: last ISM mode                               */
#endif
#ifndef NCHAN_ISM_PARAMETER
    ,const int16_t num_obj                                       /* i  : number of objects in the bitstream          */
#endif
    const int16_t num_obj                                       /* i  : number of objects in the bitstream          */
);

ivas_error ivas_param_ism_dec_open(
@@ -930,7 +943,7 @@ int16_t ivas_ism_dtx_enc(
#ifdef FIX_DTX_BRATE_LIMIT
    const int32_t ivas_total_brate,                             /* i  : IVAS total bitrate                          */
#endif
    const int16_t num_obj,                                      /* i  : number of objects                           */
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    const int16_t nchan_transport,                              /* i  : number of transport channels                */
    int16_t vad_flag[MAX_NUM_OBJECTS],                          /* i  : VAD flag                                    */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
@@ -954,7 +967,7 @@ ivas_error ivas_ism_dtx_dec(
void ivas_ism_metadata_sid_enc(
    ISM_DTX_HANDLE hISMDTX,                                     /* i/o: ISM DTX handle                              */
    const int16_t flag_noisy_speech,                            /* i  : noisy speech flag                           */
    const int16_t num_obj,                                      /* i  : number of objects                           */
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    const int16_t nchan_transport,                              /* i  : number of transport channels                */
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                    */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
@@ -977,7 +990,7 @@ void ivas_ism_metadata_sid_dec(
    SCE_DEC_HANDLE hSCE[MAX_SCE],                               /* i/o: SCE encoder structure                       */
    const int32_t ism_total_brate,                              /* i  : ISms total bitrate                          */
    const int16_t bfi,                                          /* i  : bfi flag                                    */
    const int16_t num_obj,                                      /* i  : number of objects                           */
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    const int16_t nchan_transport,                              /* i  : number of transport channels                */
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                    */
    int16_t *flag_noisy_speech,                                 /* o  : noisy speech flag                           */
@@ -1011,13 +1024,13 @@ void ivas_ism_coh_estim_dtx_enc(

#ifdef DISCRETE_ISM_DTX_CNG
void update_last_metadata(
    const int16_t num_obj,                                      /* i  : number of objects                           */
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
    const int16_t updt_flag[]                                   /* i  : last metadata update flag                   */
);

void ivas_get_ism_sid_quan_bitbudget(
    const int16_t num_obj,                                      /* i  : number of objects                           */
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    int16_t *nBits_azimuth,                                     /* o  : number of Q bits for azimuth                */
    int16_t *nBits_elevation,                                   /* o  : number of Q bits for elevation              */
    float *q_step,                                              /* o  : quantization step                           */
@@ -4709,7 +4722,7 @@ void ivas_ism2sba(
    float buffer_td[][L_FRAME48k],                              /* i/o: TD signal buffers                               */
    ISM_RENDERER_HANDLE hIsmRendererData,                       /* i/o: renderer data                                   */
    const ISM_METADATA_HANDLE hIsmMetaData[],                   /* i  : object metadata                                 */
    const int16_t num_objects,                                  /* i  : number of objects                               */
    const int16_t nchan_ism,                                    /* i  : number of objects                               */
    const int16_t output_frame,                                 /* i  : output frame length per channel                 */
    const int16_t sba_order                                     /* i  : SBA order                                       */
);
+2 −0
Original line number Diff line number Diff line
@@ -155,7 +155,9 @@ 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];
#ifndef NCHAN_ISM_PARAMETER
    int16_t num_obj;
#endif

    int16_t azi_index[MAX_NUM_OBJECTS];
    int16_t ele_index[MAX_NUM_OBJECTS];
+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@
#ifdef DISCRETE_ISM_DTX_CNG
#define FORCE_EST                                       /* FhG: force ACELP noise estimation in ISM mode for first 100 frames to prevent all-zero CNG */
#endif
#define NCHAN_ISM_PARAMETER                             /* VA: make 'nchan_ism' parameter part of st_ivas/hEncoderConfig */


/* ################## End DEVELOPMENT switches ######################### */
+13 −0
Original line number Diff line number Diff line
@@ -149,8 +149,13 @@ ivas_error ivas_dec(
        }
        else if ( st_ivas->ism_mode == ISM_MODE_PARAM )
        {
            // VE: call ivas_ism_metadata_dec() with 'st_ivas' - TBD
#ifdef DISCRETE_ISM_DTX_CNG
#ifdef NCHAN_ISM_PARAMETER
            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 ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, &( 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 ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }
@@ -161,7 +166,11 @@ ivas_error ivas_dec(
        else /* ISM_MODE_DISC */
        {
#ifdef DISCRETE_ISM_DTX_CNG
#ifdef NCHAN_ISM_PARAMETER
            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, NULL ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }
@@ -220,7 +229,11 @@ ivas_error ivas_dec(
            else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV )
            {
                /* Convert to Ambisonics; used also for ISM->HOA3->binaural rendering */
#ifdef NCHAN_ISM_PARAMETER
                ivas_ism2sba( output, st_ivas->hIsmRendererData, st_ivas->hIsmMetaData, st_ivas->nchan_ism, output_frame, st_ivas->hIntSetup.ambisonics_order );
#else
                ivas_ism2sba( output, st_ivas->hIsmRendererData, st_ivas->hIsmMetaData, st_ivas->nchan_transport, output_frame, st_ivas->hIntSetup.ambisonics_order );
#endif
            }

            /* Binaural rendering */
Loading