From c60d747cc447c60bc2351d643c75f96685d8699c Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 5 Jun 2023 11:03:19 +0200 Subject: [PATCH 1/2] formal improvements within ARITH_HUFF_CODER_CHANGES: empty lines, 'const' function input arguments, comments --- lib_com/ivas_cnst.h | 4 +- lib_com/ivas_dirac_com.c | 18 +++-- lib_com/ivas_prot.h | 134 +++++++++++++++++++++++++++++------ lib_com/ivas_spar_com.c | 3 + lib_dec/ivas_spar_md_dec.c | 3 +- lib_enc/ivas_entropy_coder.c | 36 +++++----- lib_enc/ivas_sba_enc.c | 16 ++++- lib_enc/ivas_spar_encoder.c | 11 ++- lib_enc/ivas_spar_md_enc.c | 45 ++++++------ 9 files changed, 190 insertions(+), 80 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 9557f7aef1..ccdad599dc 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1018,14 +1018,14 @@ typedef enum #define IVAS_SPAR_HOA3_NP_CHS 8 /* number of higher order non-planar channels */ -#define SPAR_NUM_CODING_STRAT_BITS ( 3 ) +#define SPAR_NUM_CODING_STRAT_BITS 3 /* AGC constants */ #define AGC_BITS_PER_CH 3 #define AGC_EMAX 0 #ifdef ARITH_HUFF_CODER_CHANGES #define AGC_SIGNALLING_BITS 1 -#define IVAS_SPAR_ARITH_OVERSHOOT_BITS (16) +#define IVAS_SPAR_ARITH_OVERSHOOT_BITS 16 #endif /* Common SPAR metadata constants */ diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index 091215ac63..b8441871e0 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -377,13 +377,20 @@ void ivas_dirac_config_bands( return; } + #ifdef ARITH_HUFF_CODER_CHANGES +/*-------------------------------------------------------------------* + * ivas_sba_get_max_md_bits() + * + * Return maximum SBA DirAC metadata bit-budget and nominal bit-budget + *-------------------------------------------------------------------*/ + void ivas_get_dirac_sba_max_md_bits( const int32_t sba_total_brate, int16_t *bits_frame_nominal, int16_t *metadata_max_bits, int16_t *qmetadata_max_bit_req, - int16_t nbands ) + const int16_t nbands ) { if ( sba_total_brate <= IVAS_13k2 ) { @@ -442,6 +449,7 @@ void ivas_get_dirac_sba_max_md_bits( } #endif + /*------------------------------------------------------------------------- * ivas_dirac_sba_config() * @@ -547,13 +555,9 @@ ivas_error ivas_dirac_sba_config( } #endif } + #ifdef ARITH_HUFF_CODER_CHANGES - ivas_get_dirac_sba_max_md_bits( - sba_total_brate, - &hQMetaData->bits_frame_nominal, - &hQMetaData->metadata_max_bits, - &hQMetaData->qmetadata_max_bit_req, - hQMetaData->q_direction[0].cfg.nbands ); + ivas_get_dirac_sba_max_md_bits( sba_total_brate, &hQMetaData->bits_frame_nominal, &hQMetaData->metadata_max_bits, &hQMetaData->qmetadata_max_bit_req, hQMetaData->q_direction[0].cfg.nbands ); #else if ( sba_total_brate <= IVAS_13k2 ) { diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 2804668e0f..4f2bbedf0c 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -110,18 +110,23 @@ ivas_error mct_enc_reconfigure( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ const uint16_t b_nchan_change /* i : flag indicating different channel count */ ); + ivas_error ivas_spar_md_enc_init ( - ivas_spar_md_enc_state_t *hMdEnc, /* o : MD encoder handle */ - const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ - const int16_t sba_order /* i : Ambisonic (SBA) order */ + ivas_spar_md_enc_state_t *hMdEnc, /* o : MD encoder handle */ + const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ + const int16_t sba_order /* i : Ambisonic (SBA) order */ ); + ivas_error ivas_sba_enc_reconfigure( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ); + #ifdef ARITH_HUFF_CODER_CHANGES +/*! r: maximum SBA metadata bit-budget */ int16_t ivas_sba_get_max_md_bits( - Encoder_Struct *st_ivas ); + Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ +); #endif void destroy_sce_enc( @@ -3637,7 +3642,8 @@ void ivas_get_dirac_sba_max_md_bits( int16_t *bits_frame_nominal, int16_t *metadata_max_bits, int16_t *qmetadata_max_bit_req, - int16_t nbands ); + const int16_t nbands +); #endif ivas_error ivas_dirac_sba_config( @@ -5024,33 +5030,117 @@ int16_t ivas_get_bits_to_encode( int32_t val ); -void ivas_huffman_encode( ivas_huffman_cfg_t *huff_cfg, int16_t in, int16_t *hcode, int16_t *hlen ); -void ivas_spar_huff_coeffs_com_init( ivas_huff_coeffs_t *pHuff_coeffs, ivas_spar_md_com_cfg *pSpar_cfg, const int16_t table_idx, const int16_t enc_dec ); -void ivas_spar_arith_coeffs_com_init( ivas_arith_coeffs_t *pArith_coeffs, ivas_spar_md_com_cfg *pSpar_cfg, const int16_t table_idx, const int16_t enc_dec ); +void ivas_huffman_encode( + ivas_huffman_cfg_t *huff_cfg, + int16_t in, + int16_t *hcode, + int16_t *hlen +); + +void ivas_spar_huff_coeffs_com_init( + ivas_huff_coeffs_t *pHuff_coeffs, + ivas_spar_md_com_cfg *pSpar_cfg, + const int16_t table_idx, + const int16_t enc_dec +); + +void ivas_spar_arith_coeffs_com_init( + ivas_arith_coeffs_t *pArith_coeffs, + ivas_spar_md_com_cfg *pSpar_cfg, + const int16_t table_idx, + const int16_t enc_dec +); + #ifdef ARITH_HUFF_CODER_CHANGES int16_t ivas_arith_encode_cmplx_cell_array( #else void ivas_arith_encode_cmplx_cell_array( #endif -ivas_arith_t *pArith_re, ivas_arith_t *pArith_re_diff, const int16_t *pDo_diff, const int16_t nB, int16_t *pSymbol_re, int16_t *pSymbol_old_re, ivas_cell_dim_t *pCell_dims, BSTR_ENC_HANDLE hMetaData, const int16_t any_diff + + ivas_arith_t *pArith_re, + ivas_arith_t *pArith_re_diff, + const int16_t *pDo_diff, + const int16_t nB, + int16_t *pSymbol_re, + int16_t *pSymbol_old_re, + ivas_cell_dim_t *pCell_dims, + BSTR_ENC_HANDLE hMetaData, + const int16_t any_diff #ifdef ARITH_HUFF_CODER_CHANGES - , int32_t wc_strat_arith + , + const int16_t wc_strat_arith #endif ); -ivas_error ivas_huffman_decode( ivas_huffman_cfg_t *huff_cfg, Decoder_State *st0, int16_t *dec_out ); -void ivas_arith_decode_cmplx_cell_array( ivas_arith_t *pArith_re, ivas_arith_t *pArith_re_diff, Decoder_State *st0, ivas_cell_dim_t *pCell_dims, int16_t *pDo_diff, const int16_t nB, int16_t *pSymbol_re, int16_t *pSymbol_re_old ); -void ivas_ari_start_decoding_14bits_ext_1_lfe( Decoder_State *st, Tastat *s, int16_t *extra_bits_read ); -uint16_t ivas_ari_decode_14bits_bit_ext_1_lfe( Decoder_State *st, Tastat *s, const uint16_t *cum_freq, int16_t *extra_bits_read ); -void ivas_ari_done_decoding_14bits_ext_1_lfe( Decoder_State *st, const int16_t extra_bits_read ); -void ivas_ari_done_encoding_14bits( BSTR_ENC_HANDLE hBstr, Tastat *s ); -void ivas_ari_encode_14bits_ext( BSTR_ENC_HANDLE hBstr, Tastat *s, int32_t symbol, const uint16_t *cum_freq ); +ivas_error ivas_huffman_decode( + ivas_huffman_cfg_t *huff_cfg, + Decoder_State *st0, + int16_t *dec_out +); + +void ivas_arith_decode_cmplx_cell_array( + ivas_arith_t *pArith_re, + ivas_arith_t *pArith_re_diff, + Decoder_State *st0, + ivas_cell_dim_t *pCell_dims, + int16_t *pDo_diff, const int16_t nB, + int16_t *pSymbol_re, + int16_t *pSymbol_re_old +); + +void ivas_ari_start_decoding_14bits_ext_1_lfe( + Decoder_State *st, + Tastat *s, + int16_t *extra_bits_read +); + +uint16_t ivas_ari_decode_14bits_bit_ext_1_lfe( + Decoder_State *st, Tastat *s, + const uint16_t *cum_freq, + int16_t *extra_bits_read +); + +void ivas_ari_done_decoding_14bits_ext_1_lfe( + Decoder_State *st, + const int16_t extra_bits_read +); + +void ivas_ari_done_encoding_14bits( + BSTR_ENC_HANDLE hBstr, Tastat *s +); + +void ivas_ari_encode_14bits_ext( + BSTR_ENC_HANDLE hBstr, + Tastat *s, + int32_t symbol, + const uint16_t *cum_freq +); + +void ivas_wrap_arround( + int16_t *pArr, + const int16_t min_val, + const int16_t max_val, + const int16_t length +); + +void ivas_get_cum_freq_model( + const int16_t *pFreq_model, + const int16_t length, + int16_t *pCum_freq_model +); -void ivas_wrap_arround( int16_t *pArr, const int16_t min_val, const int16_t max_val, const int16_t length ); -void ivas_get_cum_freq_model( const int16_t *pFreq_model, const int16_t length, int16_t *pCum_freq_model ); -int16_t ivas_map_num_pred_r_to_idx( const int16_t num_quant_points_pred_r, const int16_t active_w_flag ); -int16_t ivas_map_num_drct_r_to_idx( const int16_t num_quant_points_drct_r ); -int16_t ivas_map_num_decd_r_to_idx( const int16_t num_quant_points_decd_r ); +int16_t ivas_map_num_pred_r_to_idx( + const int16_t num_quant_points_pred_r, + const int16_t active_w_flag +); + +int16_t ivas_map_num_drct_r_to_idx( + const int16_t num_quant_points_drct_r +); + +int16_t ivas_map_num_decd_r_to_idx( + const int16_t num_quant_points_decd_r +); /* Quantization utilities */ void ivas_quantise_real_values( diff --git a/lib_com/ivas_spar_com.c b/lib_com/ivas_spar_com.c index 8e7da38580..e91947fa49 100644 --- a/lib_com/ivas_spar_com.c +++ b/lib_com/ivas_spar_com.c @@ -2153,6 +2153,7 @@ void ivas_spar_set_bitrate_config( int16_t quant_strat; int16_t bands_bw; #endif + pSpar_md_cfg->nchan_transport = ivas_spar_br_table_consts[table_idx].nchan_transport; for ( i = 0; i < pSpar_md_cfg->nchan_transport; i++ ) @@ -2191,6 +2192,7 @@ void ivas_spar_set_bitrate_config( pSpar_md_cfg->tgt_bits_per_blk -= md_coding_bits_header; pSpar_md_cfg->max_bits_per_blk -= md_coding_bits_header; + #ifdef ARITH_HUFF_CODER_CHANGES if ( ivas_total_brate < IVAS_24k4 ) { @@ -2276,6 +2278,7 @@ void ivas_spar_set_bitrate_config( pSpar_md_cfg->max_md_bits_spar = pSpar_md_cfg->max_bits_per_blk + agc_bits + pca_bits; } #endif + return; } diff --git a/lib_dec/ivas_spar_md_dec.c b/lib_dec/ivas_spar_md_dec.c index 03f014ecfd..c850f5cc5c 100755 --- a/lib_dec/ivas_spar_md_dec.c +++ b/lib_dec/ivas_spar_md_dec.c @@ -489,8 +489,7 @@ ivas_error ivas_spar_md_dec_init( ivas_spar_set_bitrate_config( &hMdDec->spar_md_cfg, hMdDec->table_idx, hMdDec->spar_md.num_bands #ifdef ARITH_HUFF_CODER_CHANGES , - hMdDec->spar_hoa_dirac2spar_md_flag, - 0, 0, 0 + hMdDec->spar_hoa_dirac2spar_md_flag, 0, 0, 0 #endif ); diff --git a/lib_enc/ivas_entropy_coder.c b/lib_enc/ivas_entropy_coder.c index 830a05e41a..98d9b3f305 100644 --- a/lib_enc/ivas_entropy_coder.c +++ b/lib_enc/ivas_entropy_coder.c @@ -128,6 +128,7 @@ static ivas_error ivas_get_dyn_freq_model( * * Arith encoding of an array of symbols *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t ivas_arith_encode_array( #else @@ -139,7 +140,7 @@ static void ivas_arith_encode_array( const int16_t in_len #ifdef ARITH_HUFF_CODER_CHANGES , - int32_t wc_strat_arith + const int16_t wc_strat_arith #endif ) { @@ -158,6 +159,7 @@ static void ivas_arith_encode_array( return -1; } #endif + push_next_indice( hMetaData, model_index, pArith->dyn_model_bits ); } else @@ -188,6 +190,7 @@ static void ivas_arith_encode_array( } #endif } + #ifdef ARITH_HUFF_CODER_CHANGES return 0; #else @@ -201,6 +204,7 @@ static void ivas_arith_encode_array( * * Differential arith encoding *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t ivas_arithCoder_encode_array_diff( #else @@ -213,7 +217,7 @@ static void ivas_arithCoder_encode_array_diff( BSTR_ENC_HANDLE hMetaData #ifdef ARITH_HUFF_CODER_CHANGES , - int32_t wc_strat_arith + const int16_t wc_strat_arith #endif ) { @@ -232,8 +236,7 @@ static void ivas_arithCoder_encode_array_diff( ivas_wrap_arround( pIn_old_scratch, pArith_diff->vals[0], pArith_diff->vals[pArith_diff->range - 1], length ); #ifdef ARITH_HUFF_CODER_CHANGES - arith_result = ivas_arith_encode_array( pIn_old_scratch, pArith_diff, hMetaData, length, - wc_strat_arith ); + arith_result = ivas_arith_encode_array( pIn_old_scratch, pArith_diff, hMetaData, length, wc_strat_arith ); if ( arith_result < 0 ) { return -1; @@ -242,6 +245,7 @@ static void ivas_arithCoder_encode_array_diff( ivas_arith_encode_array( pIn_old_scratch, pArith_diff, hMetaData, length ); #endif } + #ifdef ARITH_HUFF_CODER_CHANGES return 0; #else @@ -280,6 +284,7 @@ void ivas_huffman_encode( * * Arithmetic encode a cell array *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t arith_encode_cell_array( #else @@ -292,7 +297,7 @@ static void arith_encode_cell_array( int16_t *pSymbol #ifdef ARITH_HUFF_CODER_CHANGES , - int32_t wc_strat_arith + const int16_t wc_strat_arith #endif ) { @@ -314,8 +319,7 @@ static void arith_encode_cell_array( if ( pArith->range > 1 ) { #ifdef ARITH_HUFF_CODER_CHANGES - arith_result = ivas_arith_encode_array( pSymbol, pArith, hMetaData, total_symbol_len, - wc_strat_arith ); + arith_result = ivas_arith_encode_array( pSymbol, pArith, hMetaData, total_symbol_len, wc_strat_arith ); if ( arith_result < 0 ) { return -1; @@ -339,6 +343,7 @@ static void arith_encode_cell_array( * * Arithmetic encode a cell array - differential *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t arith_encode_cell_array_diff( #else @@ -352,7 +357,7 @@ static void arith_encode_cell_array_diff( int16_t *pSymbol #ifdef ARITH_HUFF_CODER_CHANGES , - int32_t wc_strat_arith + const int16_t wc_strat_arith #endif ) { @@ -374,8 +379,7 @@ static void arith_encode_cell_array_diff( if ( pArith_diff->range > 1 ) { #ifdef ARITH_HUFF_CODER_CHANGES - arith_result = ivas_arithCoder_encode_array_diff( pArith_diff, pSymbol, pSymbol_old, total_symbol_len, hMetaData, - wc_strat_arith ); + arith_result = ivas_arithCoder_encode_array_diff( pArith_diff, pSymbol, pSymbol_old, total_symbol_len, hMetaData, wc_strat_arith ); if ( arith_result < 0 ) { return -1; @@ -399,6 +403,7 @@ static void arith_encode_cell_array_diff( * * Arithmetic encode a cell array *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES int16_t ivas_arith_encode_cmplx_cell_array( #else @@ -415,7 +420,7 @@ void ivas_arith_encode_cmplx_cell_array( const int16_t any_diff #ifdef ARITH_HUFF_CODER_CHANGES , - int32_t wc_strat_arith + const int16_t wc_strat_arith #endif ) { @@ -494,15 +499,13 @@ void ivas_arith_encode_cmplx_cell_array( #endif #ifdef ARITH_HUFF_CODER_CHANGES - arith_result = arith_encode_cell_array( cell_dim, hMetaData, nB, pArith_re, input, - wc_strat_arith ); + arith_result = arith_encode_cell_array( cell_dim, hMetaData, nB, pArith_re, input, wc_strat_arith ); if ( arith_result < 0 ) { return -1; } - arith_result = arith_encode_cell_array_diff( cell_dim_diff, hMetaData, nB, pArith_re_diff, input_old, input_new, - wc_strat_arith ); + arith_result = arith_encode_cell_array_diff( cell_dim_diff, hMetaData, nB, pArith_re_diff, input_old, input_new, wc_strat_arith ); if ( arith_result < 0 ) { return -1; @@ -516,8 +519,7 @@ void ivas_arith_encode_cmplx_cell_array( else { #ifdef ARITH_HUFF_CODER_CHANGES - arith_result = arith_encode_cell_array( pCell_dims, hMetaData, nB, pArith_re, pSymbol_re, - wc_strat_arith ); + arith_result = arith_encode_cell_array( pCell_dims, hMetaData, nB, pArith_re, pSymbol_re, wc_strat_arith ); if ( arith_result < 0 ) { return -1; diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index e01de98741..30d5184d65 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -272,6 +272,7 @@ ivas_error ivas_sba_enc_reconfigure( mvs2s( hDirAC->dirac_to_spar_md_bands, hSpar->dirac_to_spar_md_bands, DIRAC_MAX_NBANDS ); #endif hSpar->enc_param_start_band = hDirAC->hConfig->enc_param_start_band; + /*-----------------------------------------------------------------* * Allocate, initialize, and configure SCE/CPE/MCT handles *-----------------------------------------------------------------*/ @@ -285,12 +286,22 @@ ivas_error ivas_sba_enc_reconfigure( return error; } + #ifdef ARITH_HUFF_CODER_CHANGES +/*-------------------------------------------------------------------* + * ivas_sba_get_max_md_bits() + * + * Return maximum SBA metadata bit-budget + *-------------------------------------------------------------------*/ + +/*! r: maximum SBA metadata bit-budget */ int16_t ivas_sba_get_max_md_bits( - Encoder_Struct *st_ivas ) + Encoder_Struct *st_ivas /* i/o: Encoder struct */ +) { int16_t max_md_bits; int16_t max_bits; + if ( ivas_get_hodirac_flag( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ) ) { max_bits = 2000; @@ -299,7 +310,9 @@ int16_t ivas_sba_get_max_md_bits( { max_bits = 500; } + max_md_bits = min( st_ivas->hQMetaData->metadata_max_bits + 1, max_bits ); // TODO: remove 500 once max MD bits has been defined at all bitrates in DirAC + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) #else @@ -308,6 +321,7 @@ int16_t ivas_sba_get_max_md_bits( { max_md_bits += st_ivas->hSpar->hMdEnc->spar_md_cfg.max_md_bits_spar; } + return max_md_bits; } #endif diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index 5956ef03dd..08dc96f472 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -478,8 +478,7 @@ static ivas_error ivas_spar_enc_process( input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); sba_order = min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ); - nchan_inp = ivas_sba_get_nchan_metadata( sba_order, - hEncoderConfig->ivas_total_brate ); + nchan_inp = ivas_sba_get_nchan_metadata( sba_order, hEncoderConfig->ivas_total_brate ); assert( nchan_inp <= hEncoderConfig->nchan_inp ); int16_t active_w_vlbr; @@ -679,17 +678,15 @@ static ivas_error ivas_spar_enc_process( } else { - ivas_spar_set_bitrate_config( &hSpar->hMdEnc->spar_md_cfg, table_idx, - ( hSpar->hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND + ivas_spar_set_bitrate_config( &hSpar->hMdEnc->spar_md_cfg, table_idx, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND #ifdef ARITH_HUFF_CODER_CHANGES , - hSpar->hMdEnc->spar_hoa_dirac2spar_md_flag, - 1, hEncoderConfig->Opt_PCA_ON, - hSpar->AGC_Enable + hSpar->hMdEnc->spar_hoa_dirac2spar_md_flag, 1, hEncoderConfig->Opt_PCA_ON, hSpar->AGC_Enable #endif ); } } + /*-----------------------------------------------------------------------------------------* * Covariance process *-----------------------------------------------------------------------------------------*/ diff --git a/lib_enc/ivas_spar_md_enc.c b/lib_enc/ivas_spar_md_enc.c index 50ef2f0348..d5282176cb 100644 --- a/lib_enc/ivas_spar_md_enc.c +++ b/lib_enc/ivas_spar_md_enc.c @@ -76,6 +76,7 @@ static int16_t ivas_get_huffman_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR #else static void ivas_get_huffman_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR_ENC_HANDLE hMetaData, const int16_t nB, const int16_t qsi, const int16_t planarCP, const int16_t bands_bw ); #endif + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t ivas_get_arith_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR_ENC_HANDLE hMetaData, const int16_t *pDo_diff, const int16_t bands_bw, const int16_t nB, const int16_t qsi, const int16_t planarCP, const int16_t strat, const int32_t ivas_total_brate ); #else @@ -89,6 +90,7 @@ static void ivas_select_next_strat( ivas_strats_t prior_strat, ivas_strats_t cs[ static void ivas_store_prior_coeffs( ivas_spar_md_enc_state_t *hMdEnc, const int16_t num_bands, const int16_t strat, const int16_t dtx_vad, const int16_t qsi ); static void ivas_write_spar_md_bitstream( ivas_spar_md_enc_state_t *hMdEnc, const int16_t nB, const int16_t bands_bw, BSTR_ENC_HANDLE hMetaData, const int32_t ivas_total_brate, const int16_t strat, const int16_t qsi, const int16_t planarCP ); + static void ivas_spar_quant_pred_coeffs_dtx( ivas_spar_md_t *pSpar_md, const float *pValues, const int16_t ndm, int16_t *pIndex, const int16_t dim1, float *pQuant ); static void ivas_quant_p_per_band_dtx( float *pP_mat, const int16_t num_dec, const int16_t num_dmx, int16_t *ppIdx_pd, float *pP_out, const int16_t num_ch ); @@ -309,6 +311,7 @@ void ivas_spar_md_enc_close( * * SPAR MD encoder initialization *-----------------------------------------------------------------------------------------*/ + ivas_error ivas_spar_md_enc_init( ivas_spar_md_enc_state_t *hMdEnc, /* o : MD encoder handle */ const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ @@ -321,17 +324,14 @@ ivas_error ivas_spar_md_enc_init( int16_t num_channels, i, j, k; ivas_sba_get_spar_hoa_md_flag( sba_order, hEncoderConfig->ivas_total_brate, &hMdEnc->spar_hoa_md_flag, &hMdEnc->spar_hoa_dirac2spar_md_flag ); - num_channels = ivas_sba_get_nchan_metadata( sba_order, - hEncoderConfig->ivas_total_brate ); + num_channels = ivas_sba_get_nchan_metadata( sba_order, hEncoderConfig->ivas_total_brate ); ivas_sba_get_spar_hoa_ch_ind( num_channels, hEncoderConfig->ivas_total_brate, hMdEnc->HOA_md_ind ); table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); - ivas_spar_set_bitrate_config( &hMdEnc->spar_md_cfg, table_idx, - ( hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND + ivas_spar_set_bitrate_config( &hMdEnc->spar_md_cfg, table_idx, ( hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND #ifdef ARITH_HUFF_CODER_CHANGES , - hMdEnc->spar_hoa_dirac2spar_md_flag, - 1, hEncoderConfig->Opt_PCA_ON, + hMdEnc->spar_hoa_dirac2spar_md_flag, 1, hEncoderConfig->Opt_PCA_ON, #ifndef DEBUG_AGC_ENCODER_CMD_OPTION ivas_agc_enc_get_flag( ivas_spar_br_table_consts[table_idx].nchan_transport ) #else @@ -609,12 +609,14 @@ ivas_error ivas_spar_md_enc_process( #ifdef ARITH_HUFF_CODER_CHANGES /*extra 16 bits for arithmetic coder as overshoot check is after a symbol is written*/ md_indices_allocated = hMdEnc->spar_md_cfg.max_bits_per_blk + IVAS_SPAR_ARITH_OVERSHOOT_BITS; - ind_list_tmp = (Indice *) malloc( sizeof( Indice ) * md_indices_allocated ); + if ( ( ind_list_tmp = (Indice *) malloc( sizeof( Indice ) * md_indices_allocated ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD encoder indices" ); + } #endif num_quant_strats = hMdEnc->spar_md_cfg.num_quant_strats; - num_ch = ivas_sba_get_nchan_metadata( sba_order, - hEncoderConfig->ivas_total_brate ); + num_ch = ivas_sba_get_nchan_metadata( sba_order, hEncoderConfig->ivas_total_brate ); active_w = hMdEnc->spar_md_cfg.active_w; nchan_transport = hMdEnc->spar_md_cfg.nchan_transport; @@ -984,6 +986,7 @@ ivas_error ivas_spar_md_enc_process( reset_indices_enc( &hMetaData_tmp, MAX_BITS_METADATA ); #endif ivas_write_spar_md_bitstream( hMdEnc, num_bands, bands_bw, &hMetaData_tmp, hEncoderConfig->ivas_total_brate, strat, qsi, planarCP ); + #ifdef ARITH_HUFF_CODER_CHANGES /*write to main buffer if its a valid bitstream*/ if ( hMetaData_tmp.nb_bits_tot > 0 ) @@ -1031,6 +1034,7 @@ ivas_error ivas_spar_md_enc_process( } } +#ifdef DEBUGGING #ifdef ARITH_HUFF_CODER_CHANGES if ( dtx_vad == 1 ) { @@ -1041,6 +1045,8 @@ ivas_error ivas_spar_md_enc_process( { assert( qsi == 0 ); } +#endif + /* Reuse mixer matrix values for unsent bands */ if ( ( hEncoderConfig->ivas_total_brate < IVAS_24k4 ) && ( code_strat > 3 ) ) { @@ -1462,17 +1468,14 @@ static void ivas_write_spar_md_bitstream( #ifdef ARITH_HUFF_CODER_CHANGES entropy_coding_result = #endif - ivas_get_huffman_coded_bs( hMdEnc, hMetaData, nB, qsi, planarCP, - bands_bw ); + ivas_get_huffman_coded_bs( hMdEnc, hMetaData, nB, qsi, planarCP, bands_bw ); } else { #ifdef ARITH_HUFF_CODER_CHANGES entropy_coding_result = #endif - ivas_get_arith_coded_bs( hMdEnc, hMetaData, do_diff, bands_bw, nB, qsi, planarCP, - strat, - ivas_total_brate ); + ivas_get_arith_coded_bs( hMdEnc, hMetaData, do_diff, bands_bw, nB, qsi, planarCP, strat, ivas_total_brate ); } #ifdef ARITH_HUFF_CODER_CHANGES @@ -1491,6 +1494,7 @@ static void ivas_write_spar_md_bitstream( * * Generate huffman coded bitstream *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t ivas_get_huffman_coded_bs( #else @@ -1620,6 +1624,7 @@ static void ivas_get_huffman_coded_bs( * * Generate arithmetic coded bitstream *-----------------------------------------------------------------------------------------*/ + #ifdef ARITH_HUFF_CODER_CHANGES static int16_t ivas_get_arith_coded_bs( #else @@ -1722,8 +1727,7 @@ static void ivas_get_arith_coded_bs( #ifdef ARITH_HUFF_CODER_CHANGES arith_result = ivas_arith_encode_cmplx_cell_array( &hMdEnc->arith_coeffs.pred_arith_re[qsi], &hMdEnc->arith_coeffs.pred_arith_re_diff[qsi], pDo_diff, nB, - symbol_arr_re, symbol_arr_old_re, pred_cell_dims, hMetaData, any_diff, - hMdEnc->spar_md_cfg.max_bits_per_blk ); + symbol_arr_re, symbol_arr_old_re, pred_cell_dims, hMetaData, any_diff, hMdEnc->spar_md_cfg.max_bits_per_blk ); if ( arith_result < 0 ) { return -1; @@ -1775,8 +1779,7 @@ static void ivas_get_arith_coded_bs( #ifdef ARITH_HUFF_CODER_CHANGES arith_result = ivas_arith_encode_cmplx_cell_array( &hMdEnc->arith_coeffs.drct_arith_re[qsi], &hMdEnc->arith_coeffs.drct_arith_re_diff[qsi], pDo_diff, nB, - symbol_arr_re, symbol_arr_old_re, drct_cell_dims, hMetaData, any_diff, - hMdEnc->spar_md_cfg.max_bits_per_blk ); + symbol_arr_re, symbol_arr_old_re, drct_cell_dims, hMetaData, any_diff, hMdEnc->spar_md_cfg.max_bits_per_blk ); if ( arith_result < 0 ) { return -1; @@ -1786,7 +1789,6 @@ static void ivas_get_arith_coded_bs( symbol_arr_re, symbol_arr_old_re, drct_cell_dims, hMetaData, any_diff ); #endif - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, decd_cell_dims, DECD_COEFF, planarCP ); if ( any_diff == 1 ) @@ -1801,10 +1803,10 @@ static void ivas_get_arith_coded_bs( decd_cell_dims[i].dim1 = decd_cell_dims[i].dim1 - IVAS_SPAR_HOA3_NP_CHS; } } + #ifdef ARITH_HUFF_CODER_CHANGES arith_result = ivas_arith_encode_cmplx_cell_array( &hMdEnc->arith_coeffs.decd_arith_re[qsi], &hMdEnc->arith_coeffs.decd_arith_re_diff[qsi], pDo_diff, nB, - symbol_arr_re, symbol_arr_old_re, decd_cell_dims, hMetaData, any_diff, - hMdEnc->spar_md_cfg.max_bits_per_blk ); + symbol_arr_re, symbol_arr_old_re, decd_cell_dims, hMetaData, any_diff, hMdEnc->spar_md_cfg.max_bits_per_blk ); if ( arith_result < 0 ) { return -1; @@ -1814,7 +1816,6 @@ static void ivas_get_arith_coded_bs( symbol_arr_re, symbol_arr_old_re, decd_cell_dims, hMetaData, any_diff ); #endif - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, decx_cell_dims, DECX_COEFF, planarCP ); if ( any_diff == 1 ) -- GitLab From 544d452ac2cee675f19ec0e7a9eb88681637698b Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 7 Jun 2023 07:33:45 +0200 Subject: [PATCH 2/2] clang-format --- lib_com/ivas_dirac_com.c | 116 +++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index 6ec7965a3e..90ed71875a 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -180,21 +180,21 @@ ivas_error ivas_dirac_config( } - hConfig->dec_param_estim = TRUE; - if ( hConfig->dec_param_estim == TRUE ) - { - hConfig->enc_param_start_band = spar_dirac_split_band; - } + hConfig->dec_param_estim = TRUE; + if ( hConfig->dec_param_estim == TRUE ) + { + hConfig->enc_param_start_band = spar_dirac_split_band; + } - if ( ivas_get_hodirac_flag( ivas_total_brate, sba_order ) ) - { - hConfig->dec_param_estim = FALSE; - hConfig->enc_param_start_band = 0; + if ( ivas_get_hodirac_flag( ivas_total_brate, sba_order ) ) + { + hConfig->dec_param_estim = FALSE; + hConfig->enc_param_start_band = 0; - set_c( (int8_t *) hQMetaData->twoDirBands, (int8_t) 1, hQMetaData->q_direction[0].cfg.nbands ); - hQMetaData->numTwoDirBands = (uint8_t) hQMetaData->q_direction[0].cfg.nbands; - } + set_c( (int8_t *) hQMetaData->twoDirBands, (int8_t) 1, hQMetaData->q_direction[0].cfg.nbands ); + hQMetaData->numTwoDirBands = (uint8_t) hQMetaData->q_direction[0].cfg.nbands; } + } if ( ivas_format == SBA_FORMAT ) { @@ -390,10 +390,10 @@ void ivas_get_dirac_sba_max_md_bits( ivas_error ivas_dirac_sba_config( IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - int16_t *element_mode, /* i/o: element mode of the core coder */ - int32_t sba_total_brate, /* i : SBA total bitrate */ - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int16_t nbands /* i : number of frequency bands */ + int16_t *element_mode, /* i/o: element mode of the core coder */ + int32_t sba_total_brate, /* i : SBA total bitrate */ + const int16_t sba_order, /* i : Ambisonic (SBA) order */ + const int16_t nbands /* i : number of frequency bands */ ) { int16_t nbands_coded; @@ -404,60 +404,60 @@ ivas_error ivas_dirac_sba_config( hQMetaData->is_masa_ivas_format = 0; hodirac_flag = ivas_get_hodirac_flag( sba_total_brate, sba_order ); - /* map the bitrate for SID frame */ - if ( sba_total_brate == IVAS_SID_5k2 ) - { - if ( *element_mode == IVAS_SCE ) - { - sba_total_brate = ACELP_24k40; - } - else - { - sba_total_brate = ACELP_48k; - } - } - - ivas_set_qmetadata_maxbit_req( hQMetaData, SBA_FORMAT ); - - if ( sba_total_brate <= IVAS_16k4 ) + /* map the bitrate for SID frame */ + if ( sba_total_brate == IVAS_SID_5k2 ) + { + if ( *element_mode == IVAS_SCE ) { - hQMetaData->useLowerRes = 1; + sba_total_brate = ACELP_24k40; } else { - hQMetaData->useLowerRes = 0; + sba_total_brate = ACELP_48k; } + } + + ivas_set_qmetadata_maxbit_req( hQMetaData, SBA_FORMAT ); + + if ( sba_total_brate <= IVAS_16k4 ) + { + hQMetaData->useLowerRes = 1; + } + else + { + hQMetaData->useLowerRes = 0; + } - nbands_coded = nbands; - if ( sba_total_brate <= (int32_t) ( (float) IVAS_192k / (float) SPAR_DIRAC_SPLIT_START_BAND ) ) + nbands_coded = nbands; + if ( sba_total_brate <= (int32_t) ( (float) IVAS_192k / (float) SPAR_DIRAC_SPLIT_START_BAND ) ) + { + hQMetaData->useLowerBandRes = 1; + nbands_coded = nbands / 2 + nbands % 2; + } + else + { + hQMetaData->useLowerBandRes = 0; + if ( hodirac_flag == 0 ) { - hQMetaData->useLowerBandRes = 1; - nbands_coded = nbands / 2 + nbands % 2; + nbands_coded = nbands - 1; /* always combine the last two bands */ } - else + } + + { + int16_t no_dirs = 1; + if ( hodirac_flag ) { - hQMetaData->useLowerBandRes = 0; - if ( hodirac_flag == 0 ) - { - nbands_coded = nbands - 1; /* always combine the last two bands */ - } + no_dirs = 2; } + if ( ( error = ivas_qmetadata_allocate_memory( hQMetaData, nbands_coded, no_dirs, 0 ) ) != IVAS_ERR_OK ) { - int16_t no_dirs = 1; - if ( hodirac_flag ) - { - no_dirs = 2; - } - - if ( ( error = ivas_qmetadata_allocate_memory( hQMetaData, nbands_coded, no_dirs, 0 ) ) != IVAS_ERR_OK ) - { - return error; - } - } - ivas_get_dirac_sba_max_md_bits( sba_total_brate, &hQMetaData->bits_frame_nominal, &hQMetaData->metadata_max_bits, &hQMetaData->qmetadata_max_bit_req, hQMetaData->q_direction[0].cfg.nbands ); + return error; + } + } + ivas_get_dirac_sba_max_md_bits( sba_total_brate, &hQMetaData->bits_frame_nominal, &hQMetaData->metadata_max_bits, &hQMetaData->qmetadata_max_bit_req, hQMetaData->q_direction[0].cfg.nbands ); - return error; + return error; } @@ -693,7 +693,7 @@ void deindex_spherical_component( *-----------------------------------------------------------------*/ void calculate_hodirac_sector_parameters( - DIRAC_ENC_HANDLE hDirAC, /* i : DirAC handle */ + DIRAC_ENC_HANDLE hDirAC, /* i : DirAC handle */ float RealBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], /* i : signal vector (L+1)^2 x N_bins, real part */ float ImagBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], /* i : signal vector, imaginary part */ const float beta, /* i : forgetting factor for average filtering */ -- GitLab