Commit 2fbd5586 authored by vaclav's avatar vaclav
Browse files

Merge branch 'Framework-maintenance-20220902' into 'main'

Framework maintenance 20220902

See merge request !104
parents 039cea34 69ff8238
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1618,7 +1618,7 @@ static void usage_enc( void )
    fprintf( stdout, "                      where 0 = adaptive, 3-100 = fixed in number of frames,\n" );
    fprintf( stdout, "                      default is deactivated\n" );
    fprintf( stdout, "-dtx                : Activate DTX mode with a SID update rate of 8 frames\n" );
    fprintf( stdout, "                      Note: DTX is currently supported in EVS, DFT/TD stereo, 1 ISm, \n" );
    fprintf( stdout, "                      Note: DTX is currently supported in EVS, stereo, 1 ISm, \n" );
    fprintf( stdout, "                      SBA (up to 128kbps) and MASA (up to 128kbps)\n" );
    fprintf( stdout, "-rf p o             : Activate channel-aware mode for WB and SWB signal at 13.2kbps, \n" );
    fprintf( stdout, "                      where FEC indicator, p: LO or HI, and FEC offset, o: 2, 3, 5, or 7 in number of frames.\n" );
+5 −5
Original line number Diff line number Diff line
@@ -2063,7 +2063,7 @@ ivas_error read_indices(
        }
        else if ( k == SIZE_IVAS_BRATE_TBL )
        {
            /*temp change for spar DTX*/
            /*temp change for SPAR DTX*/
            if ( total_brate == IVAS_SID_5k )
            {
                st_ivas->element_mode_init = -1;
@@ -2116,7 +2116,7 @@ ivas_error read_indices(
        }
        else
        {
            sid_upd_bad = 1; /* this frame type may happen in ETSI/3GPP CS cases ,  a corrupt sid frames  */
            sid_upd_bad = 1; /* this frame type may happen in ETSI/3GPP CS cases, a corrupt SID frames  */
        }
    }

@@ -2201,7 +2201,7 @@ ivas_error read_indices(
                          /* total_brate= 0  */
    }

    /* handle bad/lost speech frame(and CS bad sid frame) in the decoders CNG synthesis settings pair (total_brate, bfi) */
    /* handle bad/lost speech frame(and CS bad SID frame) in the decoders CNG synthesis settings pair (total_brate, bfi) */
    if ( ( ( *CNG != 0 ) && ( ( speech_bad != 0 ) || ( speech_lost != 0 ) ) ) || /* SP_BAD or SPEECH_LOST)   --> stay in CNG */
         ( sid_upd_bad != 0 ) )                                                  /* SID_UPD_BAD              --> start CNG */
    {
@@ -2320,7 +2320,7 @@ static Word32 read_indices_mime_handle_dtx(
    {
        if ( st->bfi )
        {
            sid_upd_bad = 1; /*  corrupt sid_first, signaled as bad sid  */
            sid_upd_bad = 1; /*  corrupt sid_first, signaled as bad SID  */
        }
        else
        {
@@ -2378,7 +2378,7 @@ static Word32 read_indices_mime_handle_dtx(
    }

    /* in CNG  */
    /* handle bad speech frame(and bad sid frame) in the decoders CNG synthesis settings pair (total_brate, bfi)  */
    /* handle bad speech frame(and bad SID frame) in the decoders CNG synthesis settings pair (total_brate, bfi)  */
    if ( ( *CNG != 0 && ( speech_bad || speech_lost || no_data ) ) || /* SP_BAD or SPEECH_LOST)   --> stay in CNG */
         sid_upd_bad )                                                /* SID_UPD_BAD               --> start/stay  CNG   */
    {
+2 −2
Original line number Diff line number Diff line
@@ -1098,8 +1098,8 @@ static ivas_error ivas_filterbank_setup(

        for ( j = 0; j < IVAS_MAX_NUM_FB_BANDS; j++ )
        {
            pFb->fb_bin_to_band.p_short_stride_num_bins_per_band[j] = 0;  /* aka num_active_bins per spar band */
            pFb->fb_bin_to_band.p_short_stride_start_bin_per_band[j] = 0; /* first considered bin index per spar band */
            pFb->fb_bin_to_band.p_short_stride_num_bins_per_band[j] = 0;  /* aka num_active_bins per SPAR band */
            pFb->fb_bin_to_band.p_short_stride_start_bin_per_band[j] = 0; /* first considered bin index per SPAR band */
            pFb->fb_bin_to_band.pp_short_stride_bin_to_band[j] = NULL;
            for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ )
            {
+24 −42
Original line number Diff line number Diff line
@@ -794,8 +794,8 @@ void ivas_param_ism_enc(
);

void ivas_param_ism_enc_close(
    DIRAC_ENC_HANDLE hDirAC                                     /* i/o: encoder DirAC handle                        */
   ,const int32_t input_Fs                                      /* i  : input sampling_rate                         */
    DIRAC_ENC_HANDLE hDirAC,                                    /* i/o: encoder DirAC handle                        */
    const int32_t input_Fs                                      /* i  : input sampling_rate                         */
);

void ivas_param_ism_stereo_dmx(
@@ -2155,7 +2155,7 @@ void stereo_mdct_core_dec(
void splitAvailableBits(
    const int16_t total_bits,                                   /* i  : total available bits for TCX coding     */
    const int16_t split_ratio,                                  /* i  : split ratio                             */
    const int16_t isSBAStereoMode,                              /* i  : signal core coding for sba              */
    const int16_t isSBAStereoMode,                              /* i  : signal core coding for SBA              */
    int16_t *bits_ch0,                                          /* o  : bits for channel 0                      */
    int16_t *bits_ch1                                           /* o  : bits for channel 1                      */
);
@@ -2173,7 +2173,7 @@ void parse_stereo_from_bitstream(
    STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct,                    /* i/o: MDCT stereo decoder structure           */
    Decoder_State **sts,                                        /* i/o: decoder state structure                 */
    const int16_t mct_on,                                       /* i  : flag mct block (1) or stereo (0)        */
    const int16_t isSBAStereoMode,                              /* i: flag core coding for sba         */
    const int16_t isSBAStereoMode,                              /* i  : flag core coding for SBA                */
    Decoder_State *st0,                                         /* i/o: decoder state structure for Bstr        */
    int16_t ms_mask[NB_DIV][MAX_SFB]                            /* o  : bandwise MS mask                        */
);
@@ -2508,8 +2508,7 @@ ivas_error stereo_memory_enc(
    const int32_t input_Fs,                                     /* i  : input sampling rate                     */
    const int16_t max_bwidth,                                   /* i  : maximum audio bandwidth                 */
    float *tdm_last_ratio,                                      /* o  : TD stereo last ratio                    */
    const IVAS_FORMAT ivas_format                               /* i  : IVAS format                             */
    ,
    const IVAS_FORMAT ivas_format,                              /* i  : IVAS format                             */
    const int16_t nchan_transport                               /* i  : number transport chans                  */

);
@@ -3363,8 +3362,8 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls(
    float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals                        */
    float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals                        */
    DIRAC_DEC_HANDLE hDirAC,                                    /* i/o: DirAC handle                                */
    float *reference_power_smooth
    , float qualityBasedSmFactor
    float *reference_power_smooth,
    float qualityBasedSmFactor
);

void ivas_dirac_dec_get_response(
@@ -3865,8 +3864,7 @@ void ivas_spar_dec_upmixer(
/* MD module */
ivas_error ivas_spar_md_enc_open(
    ivas_spar_md_enc_state_t **hMdEnc,                          /* i/o: SPAR MD encoder handle                  */
    const ENCODER_CONFIG_HANDLE hEncoderConfig                  /* i  : configuration structure                 */
    ,
    const ENCODER_CONFIG_HANDLE hEncoderConfig,                 /* i  : configuration structure                 */
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
);

@@ -3879,8 +3877,7 @@ ivas_error ivas_spar_md_enc_process(
    const ENCODER_CONFIG_HANDLE hEncoderConfig,                 /* i  : configuration structure                 */
    ivas_spar_md_enc_in_buf_t *pIn_buf,
    BSTR_ENC_HANDLE hMetaData,                                  /* i/o: MetaData handle                         */
    const int16_t dtx_silence_mode
    ,
    const int16_t dtx_silence_mode,
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
);

@@ -4878,8 +4875,7 @@ void ivas_HRTF_binary_close(
    TDREND_HRFILT_FiltSet_t **hHrtfTD                           /* i/o: TD renderer HRTF handle                 */
);

/*! r: TD Renderer result code. */
ivas_error DefaultBSplineModel(
void DefaultBSplineModel(
    TDREND_HRFILT_FiltSet_t *HrFiltSet_p,                       /* o  : Loaded HR filter set                    */
    const int32_t output_Fs                                     /* i  : Output sampling rate                    */
);
@@ -4892,7 +4888,7 @@ void ivas_td_binaural_close(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd          /* i/o: TD binaural object renderer handle      */
);

ivas_error ObjRenderIVASFrame(
void ObjRenderIVASFrame(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    float output[][L_FRAME48k],                                 /* i/o: SCE channels / Binaural synthesis       */
    const int16_t output_frame                                  /* i  : output frame length                     */
@@ -4944,35 +4940,30 @@ ivas_error TDREND_REND_RenderSourceHRFilt(

/* ----- Object renderer - sources ----- */
 
/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_SRC_SetPos(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const int16_t SrcInd,                                       /* i  : Source index                            */
    const float *Vec_p                                          /* i  : Position vector                         */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_SRC_SetDir(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const int16_t SrcInd,                                       /* i  : Source index                            */
    const float *Vec_p                                          /* i  : Direction vector                        */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_SRC_SetDirAtten(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const int16_t SrcInd,                                       /* i  : Source index                            */
    const TDREND_DirAtten_t *DirAtten_p                         /* i  : Directional attenuation specifier       */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_SRC_SetPlayState(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const int16_t SrcInd,                                       /* i  : Source index                            */
    const TDREND_PlayStatus_t PlayStatus                        /* i  : Play state                              */
);


void TDREND_SRC_REND_UpdateFiltersFromSpatialParams(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    TDREND_SRC_REND_t *SrcRend_p,                               /* i/o: Source object                           */
@@ -4980,7 +4971,6 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams(
    const int32_t output_Fs                                     /* i  : Output sample rate                      */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_SRC_Alloc(
    TDREND_SRC_t **Src_pp                                       /* i/o: Source                                  */
);
@@ -5034,7 +5024,6 @@ int16_t TDREND_SPATIAL_EvalOrthonormOrient(

/* ----- Object renderer - mix ----- */

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_AddSrc(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    int16_t *SrcInd,                                            /* o  : Source index                            */
@@ -5042,19 +5031,16 @@ ivas_error TDREND_MIX_AddSrc(
    const int32_t output_Fs                                     /* i  : Output sampling rate                    */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_SetDistAttenModel(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const TDREND_DistAttenModel_t DistAttenModel                /* i  : Distance attenuation model              */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_LIST_SetPos(
void TDREND_MIX_LIST_SetPos(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const float *Pos_p                                          /* i  : Listener's position                     */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_LIST_SetOrient(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    const float *FrontVec_p,                                    /* i  : Listener's orientation front vector     */
@@ -5065,7 +5051,6 @@ void TDREND_MIX_Dealloc(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd           /* i/o: TD renderer handle                      */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_MIX_Init(
    BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd,          /* i/o: TD renderer handle                      */
    TDREND_HRFILT_FiltSet_t **hHrtfTD,                          /* i/o: HRTF data (initialized in case of NULL) */
@@ -5075,21 +5060,18 @@ ivas_error TDREND_MIX_Init(

 /* ----- Object renderer - sfx ----- */

/*! r: TD Renderer result code. */
ivas_error TDREND_SFX_SpatBin_Initialize(
    SFX_SpatBin_t *SfxSpatBin_p,                                /* i/o: Spatial parameters handle               */
    const int32_t output_Fs                                     /* i  : Output sampling rate                    */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_SFX_SpatBin_SetParams(
void TDREND_SFX_SpatBin_SetParams(
    SFX_SpatBin_t *SfxSpatBin_p,                                /* i/o: Spatial parameters struct to be updated */
    const SFX_SpatBin_Params_t *NewParam_p,                     /* i  : New parameters struct                   */
    const int32_t output_Fs                                     /* i  : Output sample rate                      */
);

/*! r: TD Renderer result code. */
ivas_error TDREND_SFX_SpatBin_Execute_Main(
void TDREND_SFX_SpatBin_Execute_Main(
    SFX_SpatBin_t *SfxSpatBin_p,                                /* i/o: Spatial parameters handle                  */
    const float *InBuffer_p,                                    /* i  : Input buffer                               */
    const int16_t output_frame,                                 /* i  : frame length                               */
+16 −12
Original line number Diff line number Diff line
@@ -903,11 +903,11 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] =
{
/* When AGC is ON additional (AGC_BITS_PER_CH+1) bits may be taken from each core-coder channel
   so minimum core-coder bitrate per channel can be min core-coder bitrates as per the table - AGC_BITS_PER_CH */
    { 24400, 0, 1, FB, 24000, 1, WYXZ, 1, 0,
    { { 16400, 14850, 24350 } },
    { 24400, 0, 1, FB, 24000, 1, WYXZ, 1, 0,{ { 16400, 14850, 24350 } },
    { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 },

    { 32000, 0, 1, FB, 24000, 1, WYXZ, 1, 0,{{ 24000, 20450, 31950 }},{ { 21, 1, 5, 1 },{ 15, 1, 5, 1 },{ 15, 1, 3, 1 } }, 0, 0, 0 },
    { 32000, 0, 1, FB, 24000, 1, WYXZ, 1, 0,{ { 24000, 20450, 31950 } },
    { { 21, 1, 5, 1 },{ 15, 1, 5, 1 },{ 15, 1, 3, 1 } }, 0, 0, 0 },

    { 48000, 0, 1, FB, 24000, 2, WYXZ, 0, 0,{ { 24000, 21000, 31950 },{ 16000, 15000, 20400 } },
    { { 15, 7, 5, 1 },{ 15, 7, 3, 1 },{ 7, 7, 3, 1 } }, 1, 0, 0 },
@@ -955,8 +955,6 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] =

    { 512000, 0, 3, FB, 24000, 4, WYXZ, 0, 0,{ { 128000, 128000, 128000 },{ 128000, 128000, 128000 },{ 127200, 122550, 128000 },{ 76300, 73550, 128000 } },  // not yet optimized
    { { 31, 11, 11, 1 },{ 1, 1, 1, 1 },{ 1, 1, 1, 1 } }, 1, 2, 0 },


};

const ivas_freq_models_t ivas_arith_pred_r_consts[TOTAL_PRED_QUANT_STRATS_ARITH] =
@@ -3363,6 +3361,7 @@ const float ivas_mdft_coeff_cos_twid_960[IVAS_960_PT_LEN + 1] =
    0.00654493796735196f,  0.00490871880799808f,  0.00327248650652671f,  0.00163624544362412f,
    0.00000000000000000f
};

const float ivas_mdft_coeff_cos_twid_640[IVAS_640_PT_LEN + 1] = 
{
    1.00000000000000f,    0.999996988037278f,    0.999987952167257f,    0.999972892444367f,
@@ -3524,9 +3523,10 @@ const float ivas_mdft_coeff_cos_twid_640[IVAS_640_PT_LEN +1] =
    0.0392598157590687f,   0.0368072229413588f,   0.0343544083996823f,   0.0319013869096110f,
    0.0294481732479634f,   0.0269947821927155f,   0.0245412285229123f,   0.0220875270185784f,
    0.0196336924606283f,   0.0171797396307788f,   0.0147256833114584f,   0.0122715382857199f,
    0.00981731933714973f,  0.00736304124977978f,  0.00490871880799808f,  0.00245436679646048f
   ,0.00000000000000000f
    0.00981731933714973f,  0.00736304124977978f,  0.00490871880799808f,  0.00245436679646048f,
    0.00000000000000000f
};

const float ivas_mdft_coeff_cos_twid_320[IVAS_320_PT_LEN + 1] = 
{
    1.00000000000000f,     0.999987952167257f,    0.999951808959328f,    0.999891571247108f,
@@ -3608,9 +3608,10 @@ const float ivas_mdft_coeff_cos_twid_320[IVAS_320_PT_LEN + 1] =
    0.0784590957278450f,   0.0735645635996675f,   0.0686682588843738f,   0.0637702995616845f,
    0.0588708036511890f,   0.0539698892095020f,   0.0490676743274181f,   0.0441642771270675f,
    0.0392598157590687f,   0.0343544083996823f,   0.0294481732479634f,   0.0245412285229123f,
    0.0196336924606283f,   0.0147256833114584f,   0.00981731933714973f,  0.00490871880799808f
   ,0.0000000000000000f
    0.0196336924606283f,   0.0147256833114584f,   0.00981731933714973f,  0.00490871880799808f,
    0.0000000000000000f
};

const float ivas_mdft_coeff_cos_twid_240[IVAS_240_PT_LEN + 1] = 
{
     1.0000000000f,  0.9999785817f,  0.9999143276f,  0.9998072405f,  0.9996573250f,  0.9994645875f, 
@@ -3685,6 +3686,7 @@ const float ivas_mdft_coeff_cos_twid_160[IVAS_160_PT_LEN + 1] =
     0.0980171403f,  0.0882423705f,  0.0784590957f,  0.0686682589f,  0.0588708037f,  0.0490676743f, 
     0.0392598158f,  0.0294481732f,  0.0196336925f,  0.0098173193f,  0.000000000f
};

const float ivas_mdft_coeff_cos_twid_80[IVAS_80_PT_LEN + 1] = 
{
     1.0000000000f,  0.9998072405f,  0.9992290362f,  0.9982656102f,  0.9969173337f,  0.9951847267f, 
@@ -3702,6 +3704,7 @@ const float ivas_mdft_coeff_cos_twid_80[IVAS_80_PT_LEN + 1] =
     0.1564344650f,  0.1370123417f,  0.1175373975f,  0.0980171403f,  0.0784590957f,  0.0588708037f, 
     0.0392598158f,  0.0196336925f,  0.000000000f
};

const float ivas_mdft_coeff_cos_twid_40[IVAS_40_PT_LEN + 1] = 
{
     1.0000000000f,  0.9992290362f,  0.9969173337f,  0.9930684570f,  0.9876883406f,  0.9807852804f, 
@@ -3712,6 +3715,7 @@ const float ivas_mdft_coeff_cos_twid_40[IVAS_40_PT_LEN + 1] =
     0.3826834324f,  0.3461170571f,  0.3090169944f,  0.2714404499f,  0.2334453639f,  0.1950903220f, 
     0.1564344650f,  0.1175373975f,  0.0784590957f,  0.0392598158f,  0.000000000f
};

const float ivas_sin_twiddle_480[IVAS_480_PT_LEN >> 1] = 
{
    -0.000818122995607253f, -0.00736304124977957f,  -0.0139076440957708f,   -0.0204516511845773f,
Loading