Commit 994257d5 authored by multrus's avatar multrus
Browse files

[cleanup] accept FIX_532_ISM_MD_INACTIVE

parent 3423da35
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -335,12 +335,8 @@ typedef enum

#define ISM_NB_BITS_METADATA_NOMINAL            ( ( SCE_CORE_16k_LOW_LIMIT - ACELP_16k_LOW_LIMIT ) / FRAMES_PER_SEC ) /* nominal number of metadata bits - used for configuration of Core-Coder modules */

#ifdef FIX_532_ISM_MD_INACTIVE
#define ISM_METADATA_MD_FLAG_BITS               1 /* flag to distinguish between NULL metadata and low-rate ISM_NO_META class */
#define ISM_METADATA_INACTIVE_FLAG_BITS         1 /* flag to signal whether MD are sent in low-rate inactive frame */
#else
#define ISM_METADATA_VAD_FLAG_BITS              1
#endif
#define ISM_METADATA_FLAG_BITS                  2

#define ISM_NO_META                             0
@@ -394,9 +390,7 @@ typedef enum
#define ISM_Q_STEP_LOW                          (ISM_Q_STEP * 2)
#define ISM_Q_STEP_BORDER_LOW                   (ISM_Q_STEP_BORDER * 2)

#ifdef FIX_532_ISM_MD_INACTIVE
#define BRATE_ISM_INACTIVE                      2450 /* CoreCoder bitrate in ISM inactive frames */
#endif

typedef enum 
{
@@ -413,14 +407,9 @@ enum
    IND_ISM_EXTENDED_FLAG = IND_ISM_NUM_OBJECTS + MAX_NUM_OBJECTS,
    IND_ISM_EXTENDED_NDP_FLAG, 
    IND_ISM_METADATA_FLAG,
#ifdef FIX_532_ISM_MD_INACTIVE
    IND_ISM_MD_NULL_FLAG = IND_ISM_METADATA_FLAG + MAX_NUM_OBJECTS,
    IND_ISM_MD_INACTIVE_FLAG = IND_ISM_MD_NULL_FLAG + MAX_NUM_OBJECTS,
    IND_ISM_NOISY_SPEECH_FLAG = IND_ISM_MD_INACTIVE_FLAG + MAX_NUM_OBJECTS,
#else
    IND_ISM_VAD_FLAG = IND_ISM_METADATA_FLAG + MAX_NUM_OBJECTS,
    IND_ISM_NOISY_SPEECH_FLAG = IND_ISM_VAD_FLAG + MAX_NUM_OBJECTS,
#endif
    IND_ISM_SCE_ID_DTX,
    IND_ISM_DTX_COH_SCA,

+0 −62
Original line number Diff line number Diff line
@@ -49,14 +49,7 @@
 * Local constants
 *-----------------------------------------------------------------------*/

#ifdef FIX_532_ISM_MD_INACTIVE
#define BITS_ISM_INACTIVE ( BRATE_ISM_INACTIVE / FRAMES_PER_SEC )
#else
#define FRMS_PER_SECOND ( 1000000000 / FRAME_SIZE_NS )

#define BRATE_ISM_INACTIVE 2450 /* CoreCoder bitrate in ISM inactive frames */
#define BITS_ISM_INACTIVE  ( BRATE_ISM_INACTIVE / FRMS_PER_SECOND )
#endif

#define BETA_ISM_LOW_IMP    0.6f
#define BETA_ISM_MEDIUM_IMP 0.8f
@@ -82,11 +75,7 @@ static void bitbudget_to_brate(

    for ( i = 0; i < N; i++ )
    {
#ifdef FIX_532_ISM_MD_INACTIVE
        y[i] = FRAMES_PER_SEC * x[i];
#else
        y[i] = FRMS_PER_SECOND * x[i];
#endif
    }

    return;
@@ -105,11 +94,7 @@ ivas_error ivas_ism_config(
    const int16_t nchan_ism,                  /* i  : number of objects              */
    ISM_METADATA_HANDLE hIsmMeta[],           /* i/o: ISM metadata handles           */
    const int16_t ism_extended_metadata_flag, /* i  : extended metadata flag         */
#ifdef FIX_532_ISM_MD_INACTIVE
    const int16_t null_metadata_flag[MAX_NUM_OBJECTS], /* i  : NULL MD flag                   */
#else
    const int16_t localVAD[MAX_NUM_OBJECTS], /* i  : local VAD flag                 */
#endif
    const int16_t ism_imp[],   /* i  : ISM importance flags           */
    int32_t element_brate[],   /* o  : element bitrate per object     */
    int32_t total_brate[],     /* o  : total bitrate per object       */
@@ -136,20 +121,12 @@ ivas_error ivas_ism_config(
    {
        for ( ch = 0; ch < n_ISms; ch++ )
        {
#ifdef FIX_532_ISM_MD_INACTIVE
            ism_metadata_flag_global |= ism_imp[ch];
#else
            ism_metadata_flag_global |= hIsmMeta[ch]->ism_metadata_flag;
#endif
        }
    }

    /* decision about bitrates per channel - constant during the session (at one ivas_total_brate) */
#ifdef FIX_532_ISM_MD_INACTIVE
    bits_ism = (int16_t) ( ism_total_brate / FRAMES_PER_SEC );
#else
    bits_ism = (int16_t) ( ism_total_brate / FRMS_PER_SECOND );
#endif
    set_s( bits_element, bits_ism / n_ISms, n_ISms );
    bits_element[n_ISms - 1] += bits_ism % n_ISms;
    bitbudget_to_brate( bits_element, element_brate, n_ISms );
@@ -170,7 +147,6 @@ ivas_error ivas_ism_config(

        for ( ch = 0; ch < n_ISms; ch++ )
        {
#ifdef FIX_532_ISM_MD_INACTIVE
            if ( null_metadata_flag[ch] )
            {
                nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS;
@@ -184,12 +160,6 @@ ivas_error ivas_ism_config(
                    nb_bits_metadata[0] += ISM_METADATA_INACTIVE_FLAG_BITS;
                }
            }
#else
            if ( hIsmMeta[ch]->ism_metadata_flag == 0 )
            {
                nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS;
            }
#endif
        }
    }

@@ -215,11 +185,7 @@ ivas_error ivas_ism_config(
        diff = 0;
        for ( ch = 0; ch < n_ISms; ch++ )
        {
#ifdef FIX_532_ISM_MD_INACTIVE
            if ( ism_imp[ch] == ISM_NO_META )
#else
            if ( hIsmMeta[ch]->ism_metadata_flag == 0 && localVAD[ch] == 0 )
#endif
            {
                diff += bits_CoreCoder[ch] - BITS_ISM_INACTIVE;
                bits_CoreCoder[ch] = BITS_ISM_INACTIVE;
@@ -256,34 +222,18 @@ ivas_error ivas_ism_config(
        {
            int16_t limit;

#ifdef FIX_532_ISM_MD_INACTIVE
            limit = MIN_BRATE_SWB_BWE / FRAMES_PER_SEC;
#else
            limit = MIN_BRATE_SWB_BWE / FRMS_PER_SECOND;
#endif
            if ( element_brate[ch] < MIN_BRATE_SWB_STEREO ) /* replicate function set_bw() -> check the coded audio band-width */
            {
#ifdef FIX_532_ISM_MD_INACTIVE
                limit = MIN_BRATE_WB_BWE / FRAMES_PER_SEC;
#else
                limit = MIN_BRATE_WB_BWE / FRMS_PER_SECOND;
#endif
            }
            else if ( element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) /* replicate function set_ACELP_flag() -> it is not intended to switch the ACELP internal sampling rate within an object */
            {
                /*limit = SCE_CORE_16k_LOW_LIMIT;*/
#ifdef FIX_532_ISM_MD_INACTIVE
                limit = ( ACELP_16k_LOW_LIMIT + SWB_TBE_1k6 ) / FRAMES_PER_SEC;
#else
                limit = ( ACELP_16k_LOW_LIMIT + SWB_TBE_1k6 ) / FRMS_PER_SECOND;
#endif
            }

#ifdef FIX_532_ISM_MD_INACTIVE
            if ( ism_imp[ch] == ISM_NO_META )
#else
            if ( ism_imp[ch] == ISM_NO_META && localVAD[ch] == 0 )
#endif
            {
                tmp = BITS_ISM_INACTIVE;
            }
@@ -330,18 +280,10 @@ ivas_error ivas_ism_config(
        diff = 0;
        for ( ch = 0; ch < n_ISms; ch++ )
        {
#ifdef FIX_532_ISM_MD_INACTIVE
            limit_high = IVAS_512k / FRAMES_PER_SEC;
#else
            limit_high = IVAS_512k / FRMS_PER_SECOND;
#endif
            if ( element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) /* replicate function set_ACELP_flag() -> it is not intended to switch the ACELP internal sampling rate within an object */
            {
#ifdef FIX_532_ISM_MD_INACTIVE
                limit_high = ACELP_12k8_HIGH_LIMIT / FRAMES_PER_SEC;
#else
                limit_high = ACELP_12k8_HIGH_LIMIT / FRMS_PER_SECOND;
#endif
            }

            tmp = (int16_t) min( bits_CoreCoder[ch], limit_high );
@@ -401,11 +343,7 @@ ivas_error ivas_ism_config(
    if ( nb_bits_metadata != NULL )
    {
        int32_t tmpL;
#ifdef FIX_532_ISM_MD_INACTIVE
        tmpL = sum_l( total_brate, n_ISms ) + bits_side * FRAMES_PER_SEC;
#else
        tmpL = sum_l( total_brate, n_ISms ) + bits_side * FRMS_PER_SECOND;
#endif
        if ( sum_l( element_brate, n_ISms ) != tmpL )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "\nError: Mismatch in ISM bit-budget distribution. Exiting!\n" );
+0 −4
Original line number Diff line number Diff line
@@ -893,11 +893,7 @@ ivas_error ivas_ism_config(
    const int16_t nchan_ism,                                    /* i  : number of objects                           */
    ISM_METADATA_HANDLE hIsmMeta[],                             /* i/o: ISM metadata handles                        */
    const int16_t ism_extended_metadata_flag,                   /* i  : extended metadata flag                      */
#ifdef FIX_532_ISM_MD_INACTIVE
    const int16_t null_metadata_flag[MAX_NUM_OBJECTS],          /* i  : NULL MD flag                                */
#else
    const int16_t localVAD[MAX_NUM_OBJECTS],                    /* i  : local VAD flag                              */
#endif
    const int16_t ism_imp[],                                    /* i  : ISM importance flags                        */
    int32_t element_brate[],                                    /* o  : element bitrate per object                  */
    int32_t total_brate[],                                      /* o  : total bitrate per object                    */
+0 −1
Original line number Diff line number Diff line
@@ -149,7 +149,6 @@
#define FIX_545_ASSERT                                  /* VA: fix issue 545, replace assert() with warning message when hitting memory limit in the buffer of indices */
#endif

#define FIX_532_ISM_MD_INACTIVE                         /* VA: issue 532: improve MD coding in ISM inactive frames */
#define FIX_547_NAN_IGF_DEC                             /* FhG: issue 547: fix possible nan in IGF decoder */
#define FIX_529_BWD_ISSUE                               /* VA: issue 529: fix Bandwidth Detector not working reliably for Music and Generic Audio */
#define FIX_557_CRASH_IN_ISM_DTX                        /* VA issue 557: fix crash in 1ISM 48 kbps DTX */
+0 −33
Original line number Diff line number Diff line
@@ -168,12 +168,8 @@ ivas_error ivas_ism_metadata_dec(
    uint16_t i, bstr_meta[MAX_BITS_METADATA], *bstr_orig;
    ISM_METADATA_HANDLE hIsmMetaData;
    int16_t nchan_transport_prev, ism_metadata_flag_global;
#ifdef FIX_532_ISM_MD_INACTIVE
    int16_t null_metadata_flag[MAX_NUM_OBJECTS];
    int16_t lowrate_metadata_flag[MAX_NUM_OBJECTS];
#else
    int16_t localVAD[MAX_NUM_OBJECTS];
#endif
    int16_t ism_imp[MAX_NUM_OBJECTS];
    int16_t nbands, nblocks;
    int16_t md_diff_flag[MAX_NUM_OBJECTS];
@@ -192,10 +188,8 @@ ivas_error ivas_ism_metadata_dec(
    st0->next_bit_pos = 0;
    ism_extmeta_bitstream = 0;
    non_diegetic_flag_global = 0;
#ifdef FIX_532_ISM_MD_INACTIVE
    set_s( null_metadata_flag, 0, nchan_ism );
    set_s( lowrate_metadata_flag, 0, nchan_ism );
#endif

    /* reverse the bitstream for easier reading of indices */
    for ( i = 0; i < min( MAX_BITS_METADATA, last_bit_pos ); i++ )
@@ -281,7 +275,6 @@ ivas_error ivas_ism_metadata_dec(
            ism_metadata_flag_global |= hIsmMeta[ch]->ism_metadata_flag;
        }

#ifdef FIX_532_ISM_MD_INACTIVE
        /* read ISM_NO_META class signalling */
        if ( ism_mode == ISM_MODE_DISC )
        {
@@ -313,20 +306,6 @@ ivas_error ivas_ism_metadata_dec(
                }
            }
        }
#else
        /* read VAD flag */
        for ( ch = 0; ch < *nchan_transport; ch++ )
        {
            if ( hIsmMeta[ch]->ism_metadata_flag == 0 )
            {
                localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS );
            }
            else
            {
                localVAD[ch] = 1;
            }
        }
#endif

        if ( ism_metadata_flag_global )
        {
@@ -353,11 +332,7 @@ ivas_error ivas_ism_metadata_dec(
                flag_abs_orientation = 0;
                flag_abs_radius = 0;

#ifdef FIX_532_ISM_MD_INACTIVE
                if ( hIsmMeta[ch]->ism_metadata_flag || lowrate_metadata_flag[ch] )
#else
                if ( hIsmMeta[ch]->ism_metadata_flag )
#endif
                {
                    if ( non_diegetic_flag_global )
                    {
@@ -525,11 +500,7 @@ ivas_error ivas_ism_metadata_dec(

    if ( !bfi )
    {
#ifdef FIX_532_ISM_MD_INACTIVE
        if ( ( error = ivas_ism_config( ism_total_brate, *nchan_transport, nchan_ism, hIsmMeta, ism_extmeta_bitstream, null_metadata_flag, ism_imp, element_brate, total_brate, nb_bits_metadata ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_ism_config( ism_total_brate, *nchan_transport, nchan_ism, hIsmMeta, ism_extmeta_bitstream, localVAD, ism_imp, element_brate, total_brate, nb_bits_metadata ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
@@ -541,15 +512,11 @@ ivas_error ivas_ism_metadata_dec(
            hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0;
            if ( ism_mode == ISM_MODE_DISC )
            {
#ifdef FIX_532_ISM_MD_INACTIVE
#ifdef FIX_562_ISM2_64KBPS
                if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) ||
                                                     ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) )
#else
                if ( ism_imp[ch] == ISM_NO_META && total_brate[ch] < ACELP_8k00 )
#endif
#else
                if ( hIsmMeta[ch]->ism_metadata_flag == 0 && localVAD[ch] == 0 && ism_metadata_flag_global )
#endif
                {
                    hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1;
Loading