Commit 7972e6ea authored by vaclav's avatar vaclav
Browse files

- add 'ism_mode' parameter to the ivas_interformat_brate()

- remove patch for MDCT stereo 2 x TCX10_CORE (deactivated)
- rename function valid() to valid_ratio_index() + formatting
parent a40cb662
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -683,9 +683,11 @@ ISM_MODE ivas_omasa_ism_mode_select(
#define GAMMA_ISM_LOW_IMP    0.8f
#define GAMMA_ISM_MEDIUM_IMP 1.2f
#define GAMMA_ISM_HIGH_IMP   1.4f
#define GAMMA_ISM_HIGH_IMP2  1.35f

/*! r: adjusted bitrate */
int32_t ivas_interformat_brate(
    const ISM_MODE ism_mode,     /* i  : ISM mode               */
    const int32_t element_brate, /* i  : element bitrate        */
    const int16_t ism_imp        /* i  : ISM importance flag    */
)
@@ -708,9 +710,16 @@ int32_t ivas_interformat_brate(
        nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP );
    }
    else /* ISM_HIGH_IMP */
    {
        if ( ism_mode == ISM_MASA_MODE_ONE_OBJ )
        {
            nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP2 );
        }
        else
        {
            nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP );
        }
    }

    limit_low = MIN_BRATE_SWB_BWE / FRAMES_PER_SEC;
    if ( ism_imp == ISM_INACTIVE_IMP )
+43 −14
Original line number Diff line number Diff line
@@ -422,17 +422,20 @@ void masa_sample_rate_band_correction(
    return;
}


#ifdef MASA_AND_OBJECTS
/*---------------------------------------------------------------
 * valid()
 * valid_ratio_index()
 *
 * Checking validity of the index of an ISM ratio index vector,
 * within the indexing function.
 *---------------------------------------------------------------*/
int16_t valid(                /* o: valid or not 1/0 */

/*! r: valid or not 1/0 */
int16_t valid_ratio_index(
    int16_t index,    /* i  : index to be checked        */
               int16_t K,     /* i: L1 norm to check against */
               int16_t len    /* i: vector length */
    const int16_t K,  /* i  : L1 norm to check against   */
    const int16_t len /* i  : vector length              */
)
{
    int16_t out;
@@ -462,14 +465,17 @@ int16_t valid( /* o: valid or not 1/0 */
    {
        out = 0;
    }

    return out;
}


/*---------------------------------------------------------------
 * reconstruct_ism_ratios()
 *
 * Obtains ISM ratio values from the quantized indexes
 *---------------------------------------------------------------*/

void reconstruct_ism_ratios(
    int16_t *ratio_ism_idx,   /* i  : index vector                 */
    int16_t n_ism,            /* i  : number of components/objects */
@@ -479,22 +485,27 @@ void reconstruct_ism_ratios(
{
    int16_t i;
    float sum;

    sum = 0;
    for ( i = 0; i < n_ism - 1; i++ )
    {
        q_energy_ratio_ism[i] = ratio_ism_idx[i] * step;
        sum += q_energy_ratio_ism[i];
    }

    q_energy_ratio_ism[n_ism - 1] = 1.0f - sum;

    return;
}


/*---------------------------------------------------------------
 * modify_masa_energy_ratios()
 *
 * Updates energy ratios by taking into account the MASA content contribution
 * to the total audio scene
 *---------------------------------------------------------------*/

void modify_masa_energy_ratios(
    IVAS_QMETADATA_HANDLE hQMetaData /* i/o: Metadata handle */
)
@@ -519,13 +530,18 @@ void modify_masa_energy_ratios(
            }
        }
    }

    return;
}


/*---------------------------------------------------------------
 * ivas_get_stereo_panning_gains()
 *
 *

 *---------------------------------------------------------------*/

void ivas_get_stereo_panning_gains(
    float aziDeg,
    float eleDeg,
@@ -559,13 +575,17 @@ void ivas_get_stereo_panning_gains(
        panningGains[0] = sqrtf( A3 );
        panningGains[1] = sqrtf( 1.0f - A3 );
    }

    return;
}


/*---------------------------------------------------------------
 * distribute_evenly_ism()
 *
 * Obtain ISM ratio indexes for even content distribution bbetween objects
 *---------------------------------------------------------------*/

void distribute_evenly_ism(
    int16_t *idx,  /* o: index values */
    int16_t K,     /* i: sum of indexes */
@@ -574,13 +594,16 @@ void distribute_evenly_ism(
{
    int16_t i;
    int16_t sum;

    sum = 0;
    for ( i = 0; i < no_ism; i++ )
    {
        idx[i] = (int16_t) ( K / no_ism );
        sum += idx[i];
    }

    assert( sum <= K );

    i = 0;
    while ( sum < K )
    {
@@ -592,19 +615,24 @@ void distribute_evenly_ism(
        sum++;
        i++;
    }

    return;
}


/*---------------------------------------------------------------
 * calculate_cpe_brate_MASA_ISM()
 *
 * Calculates bitrate for MASA_ISM mode that is not used for separated objects,
 * * but for the CPE part (metadata included)
 *---------------------------------------------------------------*/
int32_t /* o: cpe bitrate value       */
calculate_cpe_brate_MASA_ISM(
    ISM_MODE ism_mode,        /* i: ism mode                */
    int32_t ivas_total_brate, /* i: total bit rate for IVAS */
    int16_t n_ism )           /* i: number of objects       */

/*! r: CPE bitrate value       */
int32_t calculate_cpe_brate_MASA_ISM(
    const ISM_MODE ism_mode,        /* i  : ism mode                */
    const int32_t ivas_total_brate, /* i  : total bit rate for IVAS */
    const int16_t n_ism             /* i  : number of objects       */
)
{
    int32_t cpe_brate;
    int16_t k, sce_id;
@@ -632,6 +660,7 @@ calculate_cpe_brate_MASA_ISM(
    {
        cpe_brate = ivas_total_brate;
    }

    return cpe_brate;
}
#endif
+17 −14
Original line number Diff line number Diff line
@@ -4535,10 +4535,11 @@ void ivas_masa_set_elements(
);

#ifdef MASA_AND_OBJECTS
int16_t valid(
    int16_t index,
    int16_t K,
    int16_t len
/*! r: valid or not 1/0 */
int16_t valid_ratio_index(
    int16_t index,                                              /* i  : index to be checked        */
    const int16_t K,                                            /* i  : L1 norm to check against   */
    const int16_t len                                           /* i  : vector length              */
);

void reconstruct_ism_ratios(
@@ -4572,11 +4573,12 @@ void ivas_qmetadata_encode_extended_gr(
    const uint16_t alphabet_size,                              /* i  : alphabet size                                    */
    const int16_t gr_param);                                   /* i  : GR order                                         */

int32_t                                                        /* o: cpe bitrate value       */
calculate_cpe_brate_MASA_ISM(
    ISM_MODE ism_mode,                                         /* i: ism mode                */
    int32_t ivas_total_brate,                                  /* i: total bit rate for IVAS */
    int16_t n_ism );                                           /* i: number of objects       */
/*! r: CPE bitrate value       */
int32_t calculate_cpe_brate_MASA_ISM(
    const ISM_MODE ism_mode,                                    /* i  : ism mode                                        */
    const int32_t ivas_total_brate,                             /* i  : total bit rate for IVAS                         */
    const int16_t n_ism                                         /* i  : number of objects                               */
);
#endif

void ivas_masa_set_coding_config(
@@ -5174,6 +5176,7 @@ void set_ism_importance_interformat(

/*! r: adjusted bitrate */
int32_t ivas_interformat_brate(
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                */
    const int32_t element_brate,                                /* i  : element bitrate                         */
    const int16_t ism_imp                                       /* i  : ISM importance flag                     */
);
+1 −1
Original line number Diff line number Diff line
@@ -1654,7 +1654,7 @@ static void decode_index_slice(
            j = 0;
            while ( index >= 0 )
            {
                if ( valid( j, K, no_ism - 1 ) )
                if ( valid_ratio_index( j, K, no_ism - 1 ) )
                {
                    index--;
                }
+2 −2
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ void ivas_set_surplus_brate_dec(

    if ( st_ivas->ism_mode == ISM_MASA_MODE_ONE_OBJ )
    {
        *ism_total_brate = ivas_interformat_brate( st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp );
        *ism_total_brate = ivas_interformat_brate( st_ivas->ism_mode, st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp );

        st_ivas->hCPE[0]->brate_surplus = st_ivas->hSCE[0]->element_brate - *ism_total_brate;

@@ -90,7 +90,7 @@ void ivas_set_surplus_brate_dec(
        {
            st_ivas->hSCE[n]->element_brate = element_brate[n];

            *ism_total_brate += ivas_interformat_brate( st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp );
            *ism_total_brate += ivas_interformat_brate( st_ivas->ism_mode, st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp );
        }
        st_ivas->hCPE[0]->brate_surplus = ism_total_brate_ref - *ism_total_brate;

Loading