From 46be5f6c5d4997745a001ed895c85d8a508b04c7 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 18 Sep 2024 08:41:41 +0530 Subject: [PATCH] EVS_FLOAT_ENC macro cleanup for EVS fixed path --- lib_com/ivas_prot.h | 3 +- lib_com/options.h | 2 +- lib_enc/ivas_corecoder_enc_reconfig.c | 2 +- lib_enc/ivas_init_enc.c | 48 +++++++---- lib_enc/ivas_sce_enc.c | 29 ++++--- lib_enc/lib_enc.c | 117 +++++++++++++++++--------- 6 files changed, 127 insertions(+), 74 deletions(-) diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index e64cacf4c..3f071999f 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -148,7 +148,8 @@ ivas_error ivas_sba_enc_reconfigure( ); void destroy_sce_enc( - SCE_ENC_HANDLE hSCE /* i/o: SCE encoder structure */ + SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */ + Flag is_evs /* i : Flag to indicate EVS encoder */ ); void destroy_cpe_enc( diff --git a/lib_com/options.h b/lib_com/options.h index 264ea2426..bc5e5f09e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -120,7 +120,7 @@ #define FIX_TMP_714 #define BASOP_NOGLOB_TMP_715 #define EVS_FUNC_MODIFIED -#define EVS_FLOAT_ENC +//#define EVS_FLOAT_ENC #define FIX_667_DISABLE_INITIAL_PLC_SUPPRESSION #define IVAS_CNST #define REMOVE_IVAS_UNUSED_PARAMETERS_WARNING /*temporary operation on unused EVS parameters to remove warnings, these parameters will be used in IVAS */ diff --git a/lib_enc/ivas_corecoder_enc_reconfig.c b/lib_enc/ivas_corecoder_enc_reconfig.c index da56ae4dc..1f7defcbc 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig.c +++ b/lib_enc/ivas_corecoder_enc_reconfig.c @@ -211,7 +211,7 @@ ivas_error ivas_corecoder_enc_reconfig( mvr2r( st_ivas->hSCE[sce_id]->hCoreCoder[0]->input_buff, input_buff[sce_id], len_inp_memory ); } - destroy_sce_enc( st_ivas->hSCE[sce_id] ); + destroy_sce_enc( st_ivas->hSCE[sce_id], ( EQ_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) && !st_ivas->hEncoderConfig->stereo_dmx_evs ) ); st_ivas->hSCE[sce_id] = NULL; } diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index 14f1f6e5e..f19054568 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -735,20 +735,29 @@ ivas_error ivas_init_encoder( if ( ivas_format == MONO_FORMAT ) { st_ivas->nSCE = 1; /* in mono, there is always only one SCE */ + move16(); st_ivas->nCPE = 0; + move16(); st_ivas->nchan_transport = 1; + move16(); sce_id = 0; -#ifdef EVS_FLOAT_ENC - if ( ( error = create_sce_enc( st_ivas, sce_id, ivas_total_brate ) ) != IVAS_ERR_OK ) + move16(); + + test(); + IF( NE_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) || st_ivas->hEncoderConfig->stereo_dmx_evs ) { - return error; + IF( NE_32( ( error = create_sce_enc( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } } -#else - if ( ( error = create_evs_sce_enc( st_ivas, sce_id, ivas_total_brate ) ) != IVAS_ERR_OK ) + ELSE { - return error; + IF( NE_32( ( error = create_evs_sce_enc( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } } -#endif /* prepare stereo downmix for EVS */ if ( hEncoderConfig->stereo_dmx_evs == 1 ) @@ -1357,20 +1366,29 @@ ivas_error ivas_init_encoder_fx( IF( EQ_16( ivas_format, MONO_FORMAT ) ) { st_ivas->nSCE = 1; /* in mono, there is always only one SCE */ + move16(); st_ivas->nCPE = 0; + move16(); st_ivas->nchan_transport = 1; + move16(); sce_id = 0; -#ifndef EVS_FLOAT_ENC - if ( ( error = create_evs_sce_enc( st_ivas, sce_id, ivas_total_brate ) ) != IVAS_ERR_OK ) + move16(); + + test(); + IF( EQ_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) && !st_ivas->hEncoderConfig->stereo_dmx_evs ) { - return error; + IF( NE_32( ( error = create_evs_sce_enc( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } } -#else - IF( ( error = create_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ) != IVAS_ERR_OK ) + ELSE { - return error; + IF( NE_32( ( error = create_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } } -#endif /* prepare stereo downmix for EVS */ IF( hEncoderConfig->stereo_dmx_evs == 1 ) @@ -2024,7 +2042,7 @@ void ivas_destroy_enc( { if ( st_ivas->hSCE[i] != NULL ) { - destroy_sce_enc( st_ivas->hSCE[i] ); + destroy_sce_enc( st_ivas->hSCE[i], ( EQ_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) && !st_ivas->hEncoderConfig->stereo_dmx_evs ) ); st_ivas->hSCE[i] = NULL; } } diff --git a/lib_enc/ivas_sce_enc.c b/lib_enc/ivas_sce_enc.c index 48033d670..c201b8316 100644 --- a/lib_enc/ivas_sce_enc.c +++ b/lib_enc/ivas_sce_enc.c @@ -471,7 +471,7 @@ ivas_error create_sce_enc_fx( return error; } #endif -#ifndef EVS_FLOAT_ENC + /*------------------------------------------------------------------------- * create_evs_sce_enc() * @@ -578,7 +578,7 @@ ivas_error create_evs_sce_enc( return error; } -#endif + /*------------------------------------------------------------------------- * destroy_sce_enc() * @@ -586,25 +586,26 @@ ivas_error create_evs_sce_enc( *-------------------------------------------------------------------------*/ void destroy_sce_enc( - SCE_ENC_HANDLE hSCE /* i/o: SCE encoder structure */ + SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */ + Flag is_evs /* i : Flag to indicate EVS encoder*/ ) { Encoder_State *st; st = hSCE->hCoreCoder[0]; -#ifndef EVS_FLOAT_ENC - if ( st != NULL && hSCE->hCoreCoder[0]->element_mode == EVS_MONO ) + IF( st != NULL ) { - destroy_encoder_fx( hSCE->hCoreCoder[0] ); - st = NULL; - } - else -#endif - if ( st != NULL ) - { - destroy_core_enc( st ); - st = NULL; + IF( EQ_16( st->element_mode, EVS_MONO ) && is_evs ) + { + destroy_encoder_fx( hSCE->hCoreCoder[0] ); + st = NULL; + } + ELSE + { + destroy_core_enc( st ); + st = NULL; + } } ivas_destroy_MD_bstr_enc( &( hSCE->hMetaData ) ); diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index faf701d12..cd614158c 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1562,30 +1562,45 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( if ( ( hEncoderConfig->Opt_RF_ON && ( hEncoderConfig->ivas_total_brate != ACELP_13k20 || hEncoderConfig->input_Fs == 8000 || hEncoderConfig->max_bwidth == NB ) ) || hEncoderConfig->rf_fec_offset == 0 ) { - if ( hEncoderConfig->ivas_total_brate == ACELP_13k20 && hEncoderConfig->ivas_format == MONO_FORMAT ) + test(); + IF( EQ_16( hEncoderConfig->ivas_total_brate, ACELP_13k20 ) && EQ_16( hEncoderConfig->ivas_format, MONO_FORMAT ) ) { st_ivas->codec_mode = MODE1; -#ifdef EVS_FLOAT_ENC - reset_rf_indices( hCoreCoder->hRF, hCoreCoder->L_frame, &( hCoreCoder->rf_target_bits_write ) ); -#else - reset_rf_indices_fx( hCoreCoder ); -#endif + move16(); + test(); + IF( NE_16( hEncoderConfig->element_mode_init, EVS_MONO ) || st_ivas->hEncoderConfig->stereo_dmx_evs ) + { + reset_rf_indices( hCoreCoder->hRF, hCoreCoder->L_frame, &( hCoreCoder->rf_target_bits_write ) ); + } + ELSE + { + reset_rf_indices_fx( hCoreCoder ); + } } hEncoderConfig->Opt_RF_ON = 0; + move16(); hEncoderConfig->rf_fec_offset = 0; + move16(); hIvasEnc->switchingActive = true; + move16(); } if ( hIvasEnc->Opt_RF_ON_loc && hIvasEnc->rf_fec_offset_loc != 0 && L_sub( hEncoderConfig->ivas_total_brate, ACELP_13k20 ) == 0 && L_sub( hEncoderConfig->input_Fs, 8000 ) != 0 && hEncoderConfig->max_bwidth != NB ) { st_ivas->codec_mode = MODE2; - if ( hEncoderConfig->Opt_RF_ON == 0 && hEncoderConfig->ivas_format == MONO_FORMAT ) + move16(); + test(); + if ( hEncoderConfig->Opt_RF_ON == 0 && EQ_16( hEncoderConfig->ivas_format, MONO_FORMAT ) ) { -#ifdef EVS_FLOAT_ENC - reset_rf_indices( hCoreCoder->hRF, hCoreCoder->L_frame, &( hCoreCoder->rf_target_bits_write ) ); -#else - reset_rf_indices_fx( hCoreCoder ); -#endif + test(); + IF( NE_16( hEncoderConfig->element_mode_init, EVS_MONO ) || st_ivas->hEncoderConfig->stereo_dmx_evs ) + { + reset_rf_indices( hCoreCoder->hRF, hCoreCoder->L_frame, &( hCoreCoder->rf_target_bits_write ) ); + } + ELSE + { + reset_rf_indices_fx( hCoreCoder ); + } } hEncoderConfig->Opt_RF_ON = 1; hEncoderConfig->rf_fec_offset = hIvasEnc->rf_fec_offset_loc; @@ -1687,14 +1702,20 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( } } - if ( hIvasEnc->switchingActive && hEncoderConfig->ivas_format == MONO_FORMAT ) + test(); + IF( hIvasEnc->switchingActive && EQ_16( hEncoderConfig->ivas_format, MONO_FORMAT ) ) { -#ifdef EVS_FLOAT_ENC - copy_encoder_config( st_ivas, hCoreCoder, 0 ); -#else - copy_encoder_config_fx( st_ivas, hCoreCoder, 0 ); -#endif + test(); + IF( NE_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) || st_ivas->hEncoderConfig->stereo_dmx_evs ) + { + copy_encoder_config( st_ivas, hCoreCoder, 0 ); + } + ELSE + { + copy_encoder_config_fx( st_ivas, hCoreCoder, 0 ); + } hEncoderConfig->last_ivas_total_brate = hEncoderConfig->ivas_total_brate; + move32(); } /* run the main encoding routine */ @@ -1702,34 +1723,42 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( { hCoreCoder->total_brate = hEncoderConfig->ivas_total_brate; /* needed in case of bitrate switching */ - if ( hEncoderConfig->stereo_dmx_evs == 1 ) + IF( EQ_16( hEncoderConfig->stereo_dmx_evs, 1 ) ) { inputBufferSize /= 2; stereo_dmx_evs_enc( st_ivas->hStereoDmxEVS, hEncoderConfig->input_Fs, inputBuffer, inputBufferSize, hEncoderConfig->is_binaural ); } - if ( hEncoderConfig->Opt_AMR_WB ) + IF( hEncoderConfig->Opt_AMR_WB ) { -#ifdef EVS_FLOAT_ENC - amr_wb_enc( hCoreCoder, inputBuffer, st_ivas->mem_hp20_in[0], inputBufferSize ); -#else - amr_wb_enc_fx( hCoreCoder, inputBuffer, inputBufferSize ); -#endif + IF( NE_16( hEncoderConfig->element_mode_init, EVS_MONO ) || st_ivas->hEncoderConfig->stereo_dmx_evs ) + { + amr_wb_enc( hCoreCoder, inputBuffer, st_ivas->mem_hp20_in[0], inputBufferSize ); + } + ELSE + { + amr_wb_enc_fx( hCoreCoder, inputBuffer, inputBufferSize ); + } } - else + ELSE { -#ifdef EVS_FLOAT_ENC - if ( ( error = evs_enc( hCoreCoder, inputBuffer, st_ivas->mem_hp20_in[0], inputBufferSize ) ) != IVAS_ERR_OK ) + test(); + IF( NE_16( hEncoderConfig->element_mode_init, EVS_MONO ) || st_ivas->hEncoderConfig->stereo_dmx_evs ) { - return error; + IF( NE_32( ( error = evs_enc( hCoreCoder, inputBuffer, st_ivas->mem_hp20_in[0], inputBufferSize ) ), IVAS_ERR_OK ) ) + { + return error; + } } -#else - hCoreCoder->input_frame_fx = inputBufferSize; - if ( ( error = evs_enc_fx( hCoreCoder, inputBuffer, hCoreCoder->mem_hp20_in_fx, inputBufferSize ) ) != IVAS_ERR_OK ) + ELSE { - return error; + hCoreCoder->input_frame_fx = inputBufferSize; + move32(); + IF( NE_32( ( error = evs_enc_fx( hCoreCoder, inputBuffer, hCoreCoder->mem_hp20_in_fx, inputBufferSize ) ), IVAS_ERR_OK ) ) + { + return error; + } } -#endif } } else /* IVAS */ @@ -1741,16 +1770,20 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( } /* write indices into bitstream buffer */ -#ifndef EVS_FLOAT_ENC - if ( hEncoderConfig->ivas_format == MONO_FORMAT && hCoreCoder->element_mode == EVS_MONO ) + test(); + IF( EQ_16( hEncoderConfig->element_mode_init, EVS_MONO ) && !st_ivas->hEncoderConfig->stereo_dmx_evs ) { - /* write indices into bitstream file */ - UWord8 pFrame[( MAX_BITS_PER_FRAME + 7 ) >> 3]; - Word16 pFrame_size = 0; - write_indices_buf_fx( hCoreCoder, hCoreCoder->hBstr, outputBitStream, pFrame, pFrame_size, numOutBits ); + test(); + IF( EQ_16( hEncoderConfig->ivas_format, MONO_FORMAT ) && EQ_16( hCoreCoder->element_mode, EVS_MONO ) ) + { + /* write indices into bitstream file */ + UWord8 pFrame[( MAX_BITS_PER_FRAME + 7 ) >> 3]; + Word16 pFrame_size = 0; + move16(); + write_indices_buf_fx( hCoreCoder, hCoreCoder->hBstr, outputBitStream, pFrame, pFrame_size, numOutBits ); + } } - else -#endif + ELSE { write_indices_ivas( st_ivas, outputBitStream, numOutBits ); } -- GitLab