Commit aa2932b6 authored by Fabian Bauer's avatar Fabian Bauer
Browse files

Merge branch 'main' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into...

Merge branch 'main' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into 1796-replace-shl_o-by-overflow-free-alternatives
parents f9133c0c f802b4b7
Loading
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -758,12 +758,7 @@ int main(
        }

        /* *** Encode one frame *** */
        if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits
#ifdef DBG_BITSTREAM_ANALYSIS
                                                     ,
                                                     frame
#endif
                                                     ) ) != IVAS_ERR_OK )
        if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nencodeFrame failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
            goto cleanup;
+23 −42
Original line number Diff line number Diff line
@@ -48,9 +48,12 @@
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "prot_fx_enc.h"
#ifdef DEBUGGING
#include "debug.h"
#ifdef DBG_BITSTREAM_ANALYSIS
#include <string.h>
#endif
#endif

#define STEP_MAX_NUM_INDICES 100 /* increase the maximum number of allowed indices in the list by this amount */

@@ -201,7 +204,7 @@ ivas_error ind_list_realloc(
        {
            new_ind_list[i].id = old_ind_list[i].id;
            new_ind_list[i].value = old_ind_list[i].value;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
            strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
#endif
            move16();
@@ -215,7 +218,7 @@ ivas_error ind_list_realloc(
    FOR( ; i < max_num_indices; i++ )
    {
        new_ind_list[i].nb_bits = -1;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
        sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" );
#endif
        move16();
@@ -808,7 +811,7 @@ void move_indices(
            new_ind_list[i].value = old_ind_list[i].value;
            new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;

#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
            strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
#endif
            old_ind_list[i].nb_bits = -1;
@@ -821,12 +824,12 @@ void move_indices(
            new_ind_list[i].id = old_ind_list[i].id;
            new_ind_list[i].value = old_ind_list[i].value;
            new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
            strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
#endif

            old_ind_list[i].nb_bits = -1;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
            sprintf( old_ind_list[i].function_name, "RESET in move_indices" );
#endif
        }
@@ -897,7 +900,7 @@ ivas_error check_ind_list_limits(
    return error;
}

#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
const char *named_indices_table[] = {
    "IND_IVAS_FORMAT",
    "IND_SMODE_OMASA",
@@ -2817,7 +2820,7 @@ ivas_error push_indice(
            hBstr->ind_list[j].id = hBstr->ind_list[j - 1].id;
            hBstr->ind_list[j].nb_bits = hBstr->ind_list[j - 1].nb_bits;
            hBstr->ind_list[j].value = hBstr->ind_list[j - 1].value;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
            strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 );
#endif
            move16();
@@ -2831,7 +2834,7 @@ ivas_error push_indice(
    hBstr->ind_list[i].id = id;
    hBstr->ind_list[i].value = value;
    hBstr->ind_list[i].nb_bits = nb_bits;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
    strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 );
#endif
    move16();
@@ -2852,13 +2855,11 @@ ivas_error push_indice(
 *
 * Push a new indice into the buffer at the next position
 *-------------------------------------------------------------------*/
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
ivas_error push_next_indice_(
    const char *caller,
#else
ivas_error push_next_indice(
#endif
#ifdef DBG_BITSTREAM_ANALYSIS
    const char *caller,
#endif
    BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle                    */
    UWord16 value,         /* i  : value of the quantized indice               */
@@ -2897,7 +2898,7 @@ ivas_error push_next_indice(
    move16();
    move16();

#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
    strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 );
#endif

@@ -2914,13 +2915,11 @@ ivas_error push_next_indice(
 * push_next_bits()
 * Push a bit buffer into the buffer at the next position
 *-------------------------------------------------------------------*/
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
ivas_error push_next_bits_(
    const char *caller,
#else
ivas_error push_next_bits(
#endif
#ifdef DBG_BITSTREAM_ANALYSIS
    const char *caller,
#endif
    BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle                     */
    const UWord16 bits[],  /* i  : bit buffer to pack, sequence of single bits  */
@@ -2965,7 +2964,7 @@ ivas_error push_next_bits(
        ptr->value = code;
        ptr->nb_bits = 16;
        ptr->id = prev_id;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
        strncpy( ptr->function_name, caller, 100 );
#endif
        hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
@@ -2989,7 +2988,7 @@ ivas_error push_next_bits(
        ptr->value = bits[i];
        ptr->nb_bits = 1;
        ptr->id = prev_id;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
        strncpy( ptr->function_name, caller, 100 );
#endif
        hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
@@ -3066,7 +3065,7 @@ UWord16 delete_indice(
            hBstr->ind_list[j].id = hBstr->ind_list[i].id;
            hBstr->ind_list[j].value = hBstr->ind_list[i].value;
            hBstr->ind_list[j].nb_bits = hBstr->ind_list[i].nb_bits;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
            strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 );
#endif
        }
@@ -3080,7 +3079,7 @@ UWord16 delete_indice(
    {
        /* reset the shifted indices at the end of the list */
        hBstr->ind_list[j].nb_bits = -1;
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
        sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" );
#endif
    }
@@ -3319,10 +3318,6 @@ static ivas_error write_indices_element_fx(
    UWord16 **pt_stream,     /* i  : pointer to bitstream buffer                                     */
    const Word16 is_SCE,     /* i  : flag to distingusih SCE and CPE                                 */
    const Word16 element_id  /* i  : id of the SCE or CPE                                            */
#ifdef DBG_BITSTREAM_ANALYSIS
    ,
    int32_t frame
#endif
)
{
    Word16 ch;
@@ -3429,7 +3424,7 @@ static ivas_error write_indices_element_fx(
        }
    }

#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
    if ( is_SCE ) /* EVS and SCE */
    {
        static FILE *f1 = 0;
@@ -3539,10 +3534,6 @@ ivas_error write_indices_ivas_fx(
    Encoder_Struct *st_ivas, /* i/o: encoder state structure             */
    UWord16 *bit_stream,     /* i/o: output bitstream                    */
    UWord16 *num_bits        /* i  : number of indices written to output */
#ifdef DBG_BITSTREAM_ANALYSIS
    ,
    int32_t frame
#endif
)
{
    Word16 i, n;
@@ -3566,22 +3557,12 @@ ivas_error write_indices_ivas_fx(

    FOR( n = 0; n < st_ivas->nSCE; n++ )
    {
        write_indices_element_fx( st_ivas, &pt_stream, 1, n
#ifdef DBG_BITSTREAM_ANALYSIS
                                  ,
                                  frame
#endif
        );
        write_indices_element_fx( st_ivas, &pt_stream, 1, n );
    }

    FOR( n = 0; n < st_ivas->nCPE; n++ )
    {
        write_indices_element_fx( st_ivas, &pt_stream, 0, n
#ifdef DBG_BITSTREAM_ANALYSIS
                                  ,
                                  frame
#endif
        );
        write_indices_element_fx( st_ivas, &pt_stream, 0, n );
    }

    *num_bits = (UWord16) ( pt_stream - bit_stream );
+5 −0
Original line number Diff line number Diff line
@@ -1595,7 +1595,12 @@ void decoder_tcx_imdct_fx(
    Word32 x_fx[N_MAX],
    Word16 q_x,
    Word16 xn_buf_fx[],
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
    Word16 *q_win,
    Word16 *q_winFB,
#else
    Word16 q_win,
#endif
    const UWord16 kernelType, /* i  : TCX transform kernel type               */
    const Word16 fUseTns,     /* i  : flag that is set if TNS data is present */
    Word16 synth_fx[],        /* i/o: synth[-M..L_frame]                      */
+4 −0
Original line number Diff line number Diff line
@@ -98,6 +98,10 @@
#define MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of dmx calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Requires MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */


#define FIX_1348_BIT_PRECISION_IMPROVEMENT
#define FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
#define FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD

#define FIX_USAN_BASOP_UTIL_DIVIDE3232          /* Eri: Fix USAN error in BASOP_Util_Divide3232_Scale_newton by adding explicit type cast for -1 in hex */

#define FIX_1740_MISING_POP_WMOPS               /* VA: fix issue 1740: missing pop_wmops() */
+25 −11
Original line number Diff line number Diff line
@@ -9447,9 +9447,19 @@ void IMDCT_fx( Word32 *x, Word16 x_e, Word16 *old_syn_overl, Word16 *syn_Overl_T
void IMDCT_ivas_fx(
    Word32 *x_fx,
    Word16 q_x,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
    Word16 *old_syn_overl_fx,
    Word16 *Q_old_syn_overl_fx,
    Word16 *syn_Overl_TDAC_fx,
    Word16 *Q_syn_Overl_TDAC_fx,
#else
    Word16 *old_syn_overl_fx,
    Word16 *syn_Overl_TDAC_fx,
#endif
    Word16 *xn_buf_fx,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
    Word16 q_xn_buf_fx,
#endif
    const Word16 *tcx_aldo_window_1_fx,
    const PWord16 *tcx_aldo_window_1_trunc_fx,
    const PWord16 *tcx_aldo_window_2_fx,
@@ -9470,11 +9480,19 @@ void IMDCT_ivas_fx(
    const Word16 frame_cnt,
    const Word16 bfi,
    Word16 *old_out_fx,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
    Word16 *q_old_out_fx,
#endif
    const Word16 FB_flag,
    Decoder_State *st,
    const Word16 fullbandScale,
    Word16 *acelp_zir_fx,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
    Word16 *q_acelp_zir_fx,
    Word16 *pq_win );
#else
    Word16 q_win );
#endif
void v_mult16_fixed(
    const Word16 x1[], /* i  : Input vector 1                                   */
@@ -10642,31 +10660,27 @@ ivas_error config_acelp1_fx(
    const Word16 GSC_IVAS_mode             /* i  : GSC IVAS mode                   */
);
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
#define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ )
#define push_next_bits( ... )   push_next_bits_( __func__, __VA_ARGS__ );
#endif
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
ivas_error push_next_indice_(
    const char *caller,
#else
ivas_error push_next_indice(
#endif
#ifdef DBG_BITSTREAM_ANALYSIS
    const char *caller,
#endif
    BSTR_ENC_HANDLE hBstr,
    UWord16 value, /* i  : value of the quantized indice          */
    Word16 nb_bits /* i  : number of bits used to quantize the indice */
);
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
ivas_error push_next_bits_(
    const char *caller,
#else
ivas_error push_next_bits(
#endif
#ifdef DBG_BITSTREAM_ANALYSIS
    const char *caller,
#endif
    BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle               */
    const UWord16 bits[],  /* i  : bit buffer to pack, sequence of single bits */
@@ -10990,7 +11004,7 @@ ivas_error push_indice(
);
ivas_error push_next_indice_(
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
    const char *caller,
#endif
    BSTR_ENC_HANDLE hBstr,
@@ -10999,7 +11013,7 @@ ivas_error push_next_indice_(
);
ivas_error push_next_bits_(
#ifdef DBG_BITSTREAM_ANALYSIS
#if defined( DEBUGGING ) && defined( DBG_BITSTREAM_ANALYSIS )
    const char *caller,
#endif
    BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle               */
Loading