From f9978f1c356bded8744923cad6bc90df61e8f421 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Wed, 23 Apr 2025 08:29:08 +0200 Subject: [PATCH 01/10] Add .gitattributes --- .gitattributes | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..63eef4d68 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,24 @@ +# Default behavior. Converts all text files to use LF in repository. +* text=auto + +# List all known generic text files +*.c text +*.csv text +*.h text +*.json text +*.m text +*.md text +*.prm text +*.py text +*.txt text + +# Set Windows specific text files to always use CRLF in working tree. +*.bat text eol=crlf +*.cmd text eol=crlf +*.sln text eol=crlf +*.vcxproj text eol=crlf +*.vcxproj.filters text eol=crlf + +# Set Unix specific text files to always use LF (also covers Windows subsystem for Linux) in working tree +*.sh text eol=lf + -- GitLab From 79301f5ba12924fafe4516733e4851ead27c484b Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 24 Apr 2025 13:39:54 +0200 Subject: [PATCH 02/10] port removal of debugging output from main --- .gitlab-ci.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f5539ee1..ea0c0634e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1155,13 +1155,11 @@ voip-be-on-merge-request: - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID) - echo $job_id - - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip - - unzip artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html - - ls + - curl --silent --show-error --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip + - unzip -qq artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html - public_dir="$CI_JOB_NAME-public" # if is needed to catch case when no artifact is there (first run), similarly as above - if [[ -d $public_dir ]]; then mv $public_dir/* wmops/; fi - - ls wmops - rm artifacts.zip - rm -rf $public_dir @@ -1174,8 +1172,6 @@ voip-be-on-merge-request: - mkdir $public_dir/logs # first move logs - log_files=$(cat $public_dir/graphs*.js | grep logFile | sed "s/.*\(wmops_newsletter_.*\.csv\).*/\1/g") - - echo $log_files - - ls wmops/logs - for f in $log_files; do [ -f wmops/logs/$f ] && mv wmops/logs/$f $public_dir/logs/$f; done - mv wmops/logs/latest_WMOPS.csv $public_dir/logs/ # copy index page blueprint @@ -1184,7 +1180,6 @@ voip-be-on-merge-request: - sed -i "s/IVAS FORMAT/IVAS $in_format to $out_format/g" ${public_dir}/index.html # do separately here to avoid overwrite complaints by mv - mv -f ci/complexity_measurements/style.css ${public_dir}/ - - ls $public_dir .complexity-template: extends: -- GitLab From b93065bba2f7e3717c5e1153afcc8f538e386a34 Mon Sep 17 00:00:00 2001 From: malenov Date: Wed, 7 May 2025 12:20:57 +0200 Subject: [PATCH 03/10] add push_wmops() ... pop_wmops() for AMR-WB --- lib_dec/amr_wb_dec.c | 4 ++++ lib_enc/amr_wb_enc.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib_dec/amr_wb_dec.c b/lib_dec/amr_wb_dec.c index 1b4712da1..f36d7751e 100644 --- a/lib_dec/amr_wb_dec.c +++ b/lib_dec/amr_wb_dec.c @@ -104,6 +104,8 @@ ivas_error amr_wb_dec( error = IVAS_ERR_OK; + push_wmops( "amr_wb_dec" ); + /*------------------------------------------------------------------* * Initialization *------------------------------------------------------------------*/ @@ -824,6 +826,8 @@ ivas_error amr_wb_dec( dbgwrite( &st->bfi, sizeof( int16_t ), 1, output_frame, "res/bfi" ); #endif + pop_wmops(); + return error; } diff --git a/lib_enc/amr_wb_enc.c b/lib_enc/amr_wb_enc.c index 1a507f473..69260e1dc 100644 --- a/lib_enc/amr_wb_enc.c +++ b/lib_enc/amr_wb_enc.c @@ -108,6 +108,8 @@ void amr_wb_enc( LPD_state_HANDLE hLPDmem = st->hLPDmem; + push_wmops( "evs_enc" ); + /*------------------------------------------------------------------* * Initialization *------------------------------------------------------------------*/ @@ -550,6 +552,8 @@ void amr_wb_enc( dbgwrite( snr_[0], sizeof( float ), 320, 1, "res/snr" ); #endif + pop_wmops(); + return; } -- GitLab From 385b05101e2464380d5fc6ddcc8a23b400322df8 Mon Sep 17 00:00:00 2001 From: malenov Date: Wed, 7 May 2025 12:25:06 +0200 Subject: [PATCH 04/10] correction of fcn name --- lib_enc/amr_wb_enc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/amr_wb_enc.c b/lib_enc/amr_wb_enc.c index 69260e1dc..df5e82f8b 100644 --- a/lib_enc/amr_wb_enc.c +++ b/lib_enc/amr_wb_enc.c @@ -108,7 +108,7 @@ void amr_wb_enc( LPD_state_HANDLE hLPDmem = st->hLPDmem; - push_wmops( "evs_enc" ); + push_wmops( "amr_wb_enc" ); /*------------------------------------------------------------------* * Initialization -- GitLab From 2e3c0a412f16a389bc1f77281c4fa897e6304370 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Mon, 12 May 2025 18:08:54 +0200 Subject: [PATCH 05/10] Extend build job timeout --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ea0c0634e..1447d9d13 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -251,7 +251,7 @@ stages: .build-job-linux: stage: build - timeout: "2 minutes" + timeout: "20 minutes" needs: [] tags: - ivas-basop-linux -- GitLab From dba2663e86696f47ec1edea48e2c57b197599efa Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Tue, 13 May 2025 10:57:44 +0200 Subject: [PATCH 06/10] Add push/pop wmops for stereo_dmx_evs_enc --- lib_enc/ivas_stereo_dmx_evs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib_enc/ivas_stereo_dmx_evs.c b/lib_enc/ivas_stereo_dmx_evs.c index 8b8a86635..6d2203c9e 100644 --- a/lib_enc/ivas_stereo_dmx_evs.c +++ b/lib_enc/ivas_stereo_dmx_evs.c @@ -1134,6 +1134,8 @@ void stereo_dmx_evs_enc( int16_t input_frame; + push_wmops( "stereo_dmx_evs_enc" ); + if ( is_binaural ) { /* use of is_binaural flag is to be considered */ @@ -1358,6 +1360,7 @@ void stereo_dmx_evs_enc( mvr2s( p_dmx_data, data, n_samples ); + pop_wmops(); return; } -- GitLab From 21d52032e5293173225954f44d89b49cb27f7d2a Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 3 Apr 2025 13:02:28 +0200 Subject: [PATCH 07/10] write bitstream data with annotations to a text file --- apps/encoder.c | 7 +- enum-helper.c | 382 +++++ lib_com/bitstream.c | 2074 ++++++++++++++++++++++++- lib_com/options.h | 2 +- lib_com/prot.h | 64 +- lib_enc/ivas_corecoder_enc_reconfig.c | 12 + lib_enc/ivas_init_enc.c | 9 + lib_enc/ivas_qmetadata_enc.c | 18 + lib_enc/ivas_spar_md_enc.c | 4 + lib_enc/lib_enc.c | 28 +- lib_enc/lib_enc.h | 8 + lib_enc/stat_enc.h | 3 + 12 files changed, 2493 insertions(+), 118 deletions(-) create mode 100644 enum-helper.c diff --git a/apps/encoder.c b/apps/encoder.c index dfd3da593..a1c92d469 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -785,7 +785,12 @@ int main( } /* *** Encode one frame *** */ - if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nencodeFrame failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); goto cleanup; diff --git a/enum-helper.c b/enum-helper.c new file mode 100644 index 000000000..e679483e2 --- /dev/null +++ b/enum-helper.c @@ -0,0 +1,382 @@ + + +#define MAX_PVQ_PUSH_IND 320 + +enum +{ + IND_IVAS_FORMAT, + IND_SMODE_OMASA, + IND_SMODE, + IND_SID_TYPE, + IND_BWIDTH, + IND_CORE, + IND_PPP_NELP_MODE, + IND_ACELP_16KHZ, + IND_ACELP_SIGNALLING, + IND_SHARP_FLAG, + IND_MDCT_CORE, + IND_TCX_CORE, + IND_BWE_FLAG, + IND_HQ_SWITCHING_FLG, + IND_LAST_L_FRAME, + IND_VAD_FLAG, + IND_HQ_BWIDTH, + IND_TC_SUBFR, + IND_GSC_IVAS_SP = IND_TC_SUBFR + 4, + IND_LSF_PREDICTOR_SELECT_BIT, + IND_LSF, + IND_MID_FRAME_LSF_INDEX = IND_LSF + 17, + + IND_ISF_0_0, + IND_ISF_0_1, + IND_ISF_0_2, + IND_ISF_0_3, + IND_ISF_0_4, + IND_ISF_1_0, + IND_ISF_1_1, + IND_ISF_1_2, + IND_ISF_1_3, + IND_ISF_1_4, + IND_IC_LSF_PRED, + IND_GSC_ATTACK, + IND_GSC_SWB_SPEECH, + IND_NOISE_LEVEL, + IND_HF_NOISE, + IND_PIT_CONTR_IDX, + IND_FEC_CLAS, + IND_FEC_ENR, + IND_FEC_POS, + IND_ES_PRED, + IND_HARM_FLAG_ACELP, + + /* ------------- Loop for alg. codebook indices at 24.4 kbps (special case) -------------- */ + TAG_ALG_CDBK_4T64_24KBIT_START, + IND_ALG_CDBK_4T64_1_24KBIT = TAG_ALG_CDBK_4T64_24KBIT_START, + IND_ALG_CDBK_4T64_2_24KBIT = TAG_ALG_CDBK_4T64_24KBIT_START, + TAG_ALG_CDBK_4T64_24KBIT_END = TAG_ALG_CDBK_4T64_24KBIT_START + 40, + /* ------------------------------------------------ */ + + /* ------------- ACELP subframe loop -------------- */ + TAG_ACELP_SUBFR_LOOP_START, + IND_PITCH = TAG_ACELP_SUBFR_LOOP_START, + IND_LP_FILT_SELECT = TAG_ACELP_SUBFR_LOOP_START, + IND_ALG_CDBK_1T64 = TAG_ACELP_SUBFR_LOOP_START, + IND_ALG_CDBK_2T32 = TAG_ACELP_SUBFR_LOOP_START, + IND_ALG_CDBK_4T64 = TAG_ACELP_SUBFR_LOOP_START, + IND_ALG_CDBK_4T64_1 = TAG_ACELP_SUBFR_LOOP_START, + IND_ALG_CDBK_4T64_2 = TAG_ACELP_SUBFR_LOOP_START, + IND_ALG_CDBK_4T64_1BIT = TAG_ACELP_SUBFR_LOOP_START, + IND_GAUS_CDBK_INDEX = TAG_ACELP_SUBFR_LOOP_START, + IND_TILT_FACTOR = TAG_ACELP_SUBFR_LOOP_START, + IND_GAIN = TAG_ACELP_SUBFR_LOOP_START, + IND_GAIN_CODE = TAG_ACELP_SUBFR_LOOP_START, + IND_TC_IMP_SHAPE = TAG_ACELP_SUBFR_LOOP_START, + IND_TC_IMP_POS = TAG_ACELP_SUBFR_LOOP_START, + IND_TC_IMP_SIGN = TAG_ACELP_SUBFR_LOOP_START, + IND_TC_IMP_GAIN = TAG_ACELP_SUBFR_LOOP_START, + IND_GAIN_PIT = TAG_ACELP_SUBFR_LOOP_START, + IND_PIT_IDX = TAG_ACELP_SUBFR_LOOP_START, + IND_AVQ_GAIN = TAG_ACELP_SUBFR_LOOP_START, + IND_I = TAG_ACELP_SUBFR_LOOP_START, + IND_KV = TAG_ACELP_SUBFR_LOOP_START, + IND_NQ = TAG_ACELP_SUBFR_LOOP_START, + IND_HF_GAIN_MODIFICATION = TAG_ACELP_SUBFR_LOOP_START, + TAG_ACELP_SUBFR_LOOP_END = TAG_ACELP_SUBFR_LOOP_START + 300, + /* ------------------------------------------------ */ + + IND_MEAN_GAIN2, + IND_Y_GAIN_TMP = IND_MEAN_GAIN2 + 32, + IND_Y_GAIN_HF = IND_Y_GAIN_TMP + 32, + IND_HQ_VOICING_FLAG, + IND_HQ_SWB_CLAS, + IND_NF_IDX, + IND_LC_MODE, + IND_YNRM, + IND_HQ_SWB_EXC_SP_CLAS = IND_YNRM + 44, + IND_HQ_SWB_EXC_CLAS = IND_HQ_SWB_EXC_SP_CLAS, + IND_SWB_FENV_HQ = IND_HQ_SWB_EXC_CLAS, + IND_FB_FENV_HQ = IND_SWB_FENV_HQ + 5, + IND_DELTA_ENV_HQ = IND_FB_FENV_HQ + 5, + IND_HVQ_BWE_NL, + IND_NUM_PEAKS = IND_HVQ_BWE_NL + 2, + IND_POS_IDX, + IND_FLAGN = IND_POS_IDX + 280, + IND_PG_IDX, + IND_HVQ_PEAKS = IND_PG_IDX + 35, + IND_HVQ_NF_GAIN = IND_HVQ_PEAKS + 70, + IND_HQ2_SWB_CLAS = IND_HVQ_NF_GAIN + 2, + IND_HQ2_DENG_MODE, + IND_HQ2_DENG_8SMODE, + IND_HQ2_DENG_8SMODE_N0, + IND_HQ2_DENG_8SMODE_N1, + IND_HQ2_DENG_8SPOS, + IND_HQ2_DENG_8SDEPTH, + IND_HQ2_DENG_HMODE, + IND_HQ2_DIFF_ENERGY, + IND_HQ2_P2A_FLAGS = IND_HQ2_DIFF_ENERGY + 100, + IND_HQ2_LAST_BA_MAX_BAND = IND_HQ2_P2A_FLAGS + 60, + IND_RC_START = IND_HQ2_LAST_BA_MAX_BAND + 2, + IND_RC_END = IND_RC_START + MAX_PVQ_PUSH_IND, + IND_HVQ_PVQ_GAIN = IND_RC_END + 1, + IND_NOISINESS = IND_HVQ_PVQ_GAIN + 8, + IND_ENERGY, + IND_CNG_HO, + IND_SID_BW, + IND_CNG_ENV1, + IND_WB_FENV, + IND_WB_CLASS, + IND_IG1, + IND_IG2A, + IND_IG2B, + IND_NELP_FID, + IND_DELTALAG, + IND_POWER, + IND_AMP0, + IND_AMP1, + IND_GLOBAL_ALIGNMENT, + IND_PVQ_FINE_GAIN, + IND_UV_FLAG, + IND_SHB_SUBGAIN = IND_PVQ_FINE_GAIN + 44, + IND_SHB_FRAMEGAIN, + IND_STEREO_ICBWE_MSFLAG, + IND_SHB_ENER_SF, + IND_SHB_RES_GS, + IND_SHB_VF = IND_SHB_RES_GS + 5, + IND_SHB_LSF, + IND_SHB_MIRROR = IND_SHB_LSF + 5, + IND_SHB_GRID, + IND_SWB_CLASS, + IND_SWB_TENV, + IND_SWB_FENV = IND_SWB_TENV + 4, + IND_SHB_CNG_GAIN = IND_SWB_FENV + 4, + IND_DITHERING, + IND_FB_SLOPE, + + IND_HQ2_SPT_SHORTEN, + IND_HQ2_SUBBAND_TCQ, + IND_HQ2_SUBBAND_GAIN = IND_HQ2_SUBBAND_TCQ + 100, + IND_HQ2_DUMMY = IND_HQ2_SUBBAND_GAIN + 20, + + IND_LAGINDICES, + IND_NOISEG, + IND_AUDIO_GAIN, + IND_AUDIO_DELAY, + + /* ------------- HR SWB BWE loop -------------- */ + TAG_HR_BWE_LOOP_START = IND_AUDIO_DELAY + 4, + IND_HR_IS_TRANSIENT = TAG_HR_BWE_LOOP_START, + IND_HR_GAIN = TAG_HR_BWE_LOOP_START, + IND_HR_ENVELOPE = TAG_HR_BWE_LOOP_START, + IND_HR_HF_GAIN = TAG_HR_BWE_LOOP_START, + IND_I2 = TAG_HR_BWE_LOOP_START, + IND_KV2 = TAG_HR_BWE_LOOP_START, + IND_NQ2 = TAG_HR_BWE_LOOP_START, + TAG_HR_BWE_LOOP_END = TAG_HR_BWE_LOOP_START + 200, + /* ------------------------------------------------ */ + + IND_CORE_SWITCHING_CELP_SUBFRAME, + IND_CORE_SWITCHING_AUDIO_DELAY = IND_CORE_SWITCHING_CELP_SUBFRAME + 20, + IND_CORE_SWITCHING_AUDIO_GAIN, + + IND_STEREO_ICBWE_REF, + IND_STEREO_ICBWE_SP, + IND_STEREO_ICBWE_GS, + IND_STEREO_REFCHAN, + IND_STEREO_CORRSTATS, + IND_STEREO_GD, + IND_STEREO_LRTD_FLAG, + IND_STEREO_LPC_REUSE, + IND_STEREO_TD_ALPHA, + IND_STEREO_2ND_CODER_T, + + IND_UNUSED, +}; + +int main () +{ + + char *index_name[IND_UNUSED]; + + for(int i=0; i +#endif #ifdef DEBUGGING @@ -209,6 +212,9 @@ 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 BITSTREAM_ANALYSIS + strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); +#endif } new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; } @@ -217,6 +223,9 @@ ivas_error ind_list_realloc( for ( ; i < max_num_indices; i++ ) { new_ind_list[i].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" ); +#endif } /* update parameters in all SCE elements */ @@ -803,6 +812,9 @@ 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 BITSTREAM_ANALYSIS + strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); +#endif old_ind_list[i].nb_bits = -1; } } @@ -813,8 +825,14 @@ 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 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 BITSTREAM_ANALYSIS + sprintf( old_ind_list[i].function_name, "RESET in move_indices" ); +#endif } } @@ -891,6 +909,1880 @@ ivas_error check_ind_list_limits( return error; } +#ifdef BITSTREAM_ANALYSIS +const char *named_indices_table[] = { + "IND_IVAS_FORMAT", + "IND_SMODE_OMASA", + "IND_SMODE", + "IND_SID_TYPE", + "IND_BWIDTH", + "IND_CORE", + "IND_PPP_NELP_MODE", + "IND_ACELP_16KHZ", + "IND_ACELP_SIGNALLING", + "IND_SHARP_FLAG", + "IND_MDCT_CORE", + "IND_TCX_CORE", + "IND_BWE_FLAG", + "IND_HQ_SWITCHING_FLG", + "IND_LAST_L_FRAME", + "IND_VAD_FLAG", + "IND_HQ_BWIDTH", + "IND_TC_SUBFR", + "IND_TC_SUBFR", + "IND_TC_SUBFR", + "IND_TC_SUBFR", + "IND_GSC_IVAS_SP", + "IND_LSF_PREDICTOR_SELECT_BIT", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_MID_FRAME_LSF_INDEX", + "IND_ISF_0_0", + "IND_ISF_0_1", + "IND_ISF_0_2", + "IND_ISF_0_3", + "IND_ISF_0_4", + "IND_ISF_1_0", + "IND_ISF_1_1", + "IND_ISF_1_2", + "IND_ISF_1_3", + "IND_ISF_1_4", + "IND_IC_LSF_PRED", + "IND_GSC_ATTACK", + "IND_GSC_SWB_SPEECH", + "IND_NOISE_LEVEL", + "IND_HF_NOISE", + "IND_PIT_CONTR_IDX", + "IND_FEC_CLAS", + "IND_FEC_ENR", + "IND_FEC_POS", + "IND_ES_PRED", + "IND_HARM_FLAG_ACELP", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "TAG_ALG_CDBK_4T64_24KBIT_END", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "TAG_ACELP_SUBFR_LOOP_END", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_HF", + "IND_HQ_VOICING_FLAG", + "IND_HQ_SWB_CLAS", + "IND_NF_IDX", + "IND_LC_MODE", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_DELTA_ENV_HQ", + "IND_HVQ_BWE_NL", + "IND_HVQ_BWE_NL", + "IND_NUM_PEAKS", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_FLAGN", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_NF_GAIN", + "IND_HVQ_NF_GAIN", + "IND_HQ2_SWB_CLAS", + "IND_HQ2_DENG_MODE", + "IND_HQ2_DENG_8SMODE", + "IND_HQ2_DENG_8SMODE_N0", + "IND_HQ2_DENG_8SMODE_N1", + "IND_HQ2_DENG_8SPOS", + "IND_HQ2_DENG_8SDEPTH", + "IND_HQ2_DENG_HMODE", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_LAST_BA_MAX_BAND", + "IND_HQ2_LAST_BA_MAX_BAND", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_END", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_NOISINESS", + "IND_ENERGY", + "IND_CNG_HO", + "IND_SID_BW", + "IND_CNG_ENV1", + "IND_WB_FENV", + "IND_WB_CLASS", + "IND_IG1", + "IND_IG2A", + "IND_IG2B", + "IND_NELP_FID", + "IND_DELTALAG", + "IND_POWER", + "IND_AMP0", + "IND_AMP1", + "IND_GLOBAL_ALIGNMENT", + "IND_PVQ_FINE_GAIN", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_SHB_SUBGAIN", + "IND_SHB_FRAMEGAIN", + "IND_STEREO_ICBWE_MSFLAG", + "IND_SHB_ENER_SF", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_VF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_MIRROR", + "IND_SHB_GRID", + "IND_SWB_CLASS", + "IND_SWB_TENV", + "IND_SWB_TENV", + "IND_SWB_TENV", + "IND_SWB_TENV", + "IND_SWB_FENV", + "IND_SWB_FENV", + "IND_SWB_FENV", + "IND_SWB_FENV", + "IND_SHB_CNG_GAIN", + "IND_DITHERING", + "IND_FB_SLOPE", + "IND_HQ2_SPT_SHORTEN", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_DUMMY", + "IND_LAGINDICES", + "IND_NOISEG", + "IND_AUDIO_GAIN", + "IND_AUDIO_DELAY", + "IND_AUDIO_DELAY", + "IND_AUDIO_DELAY", + "IND_AUDIO_DELAY", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "TAG_HR_BWE_LOOP_END", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_AUDIO_DELAY", + "IND_CORE_SWITCHING_AUDIO_GAIN", + "IND_STEREO_ICBWE_REF", + "IND_STEREO_ICBWE_SP", + "IND_STEREO_ICBWE_GS", + "IND_STEREO_REFCHAN", + "IND_STEREO_CORRSTATS", + "IND_STEREO_GD", + "IND_STEREO_LRTD_FLAG", + "IND_STEREO_LPC_REUSE", + "IND_STEREO_TD_ALPHA", + "IND_STEREO_2ND_CODER_T", + "IND_UNUSED" +}; +#endif /*-------------------------------------------------------------------* * push_indice() @@ -898,20 +2790,11 @@ ivas_error check_ind_list_limits( * Push a new indice into the buffer *-------------------------------------------------------------------*/ -#ifdef DEBUG_BS_READ_WRITE -ivas_error push_indice_( -#else ivas_error push_indice( -#endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ int16_t id, /* i : ID of the indice */ uint16_t value, /* i : value of the quantized indice */ int16_t nb_bits /* i : number of bits used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ) { int16_t i; @@ -920,9 +2803,6 @@ ivas_error push_indice( error = IVAS_ERR_OK; -#ifdef DEBUG_BS_READ_WRITE - printf( "%s: %d: %d: %d\n", func, line, nb_bits, value ); -#endif #ifdef DEBUGGING if ( nb_bits < ( 32 - 1 ) && ( value >> nb_bits ) > 0 ) { @@ -957,6 +2837,9 @@ 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 BITSTREAM_ANALYSIS + strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 ); +#endif } } @@ -965,6 +2848,9 @@ 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 BITSTREAM_ANALYSIS + strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 ); +#endif /* updates */ hBstr->nb_ind_tot++; @@ -979,19 +2865,13 @@ ivas_error push_indice( * Push a new indice into the buffer at the next position *-------------------------------------------------------------------*/ -#ifdef DEBUG_BS_READ_WRITE ivas_error push_next_indice_( -#else -ivas_error push_next_indice( +#ifdef BITSTREAM_ANALYSIS + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ uint16_t value, /* i : value of the quantized indice */ int16_t nb_bits /* i : number of bits used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ) { int16_t prev_id; @@ -999,9 +2879,6 @@ ivas_error push_next_indice( error = IVAS_ERR_OK; -#ifdef DEBUG_BS_READ_WRITE - printf( "%s: %d: %d: %d\n", func, line, nb_bits, value ); -#endif #ifdef DEBUGGING if ( nb_bits < ( 32 - 1 ) && ( value >> nb_bits ) > 0 ) { @@ -1036,6 +2913,10 @@ ivas_error push_next_indice( hBstr->ind_list[hBstr->nb_ind_tot].value = value; hBstr->ind_list[hBstr->nb_ind_tot].nb_bits = nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 ); +#endif + /* updates */ hBstr->nb_ind_tot++; hBstr->nb_bits_tot += nb_bits; @@ -1049,19 +2930,14 @@ ivas_error push_next_indice( * Push a bit buffer into the buffer at the next position *-------------------------------------------------------------------*/ -#ifdef DEBUG_BS_READ_WRITE + ivas_error push_next_bits_( -#else -ivas_error push_next_bits( +#ifdef BITSTREAM_ANALYSIS + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const uint16_t bits[], /* i : bit buffer to pack, sequence of single bits */ const int16_t nb_bits /* i : number of bits to pack */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ) { uint16_t code; @@ -1071,9 +2947,6 @@ ivas_error push_next_bits( ivas_error error; error = IVAS_ERR_OK; -#ifdef DEBUG_BS_READ_WRITE - printf( "%s: %d: %d\n", func, line, nb_bits ); -#endif ptr = &hBstr->ind_list[hBstr->nb_ind_tot]; @@ -1100,11 +2973,11 @@ ivas_error push_next_bits( ptr = &hBstr->ind_list[hBstr->nb_ind_tot]; ptr->value = code; -#ifdef DEBUG_BS_READ_WRITE - printf( "code: %d\n", code ); -#endif ptr->nb_bits = 16; ptr->id = prev_id; +#ifdef BITSTREAM_ANALYSIS + strncpy( ptr->function_name, caller, 100 ); +#endif hBstr->nb_ind_tot++; ++ptr; } @@ -1119,11 +2992,11 @@ ivas_error push_next_bits( ptr = &hBstr->ind_list[hBstr->nb_ind_tot]; ptr->value = bits[i]; -#ifdef DEBUG_BS_READ_WRITE - printf( "value: %d\n", ptr->value ); -#endif ptr->nb_bits = 1; ptr->id = prev_id; +#ifdef BITSTREAM_ANALYSIS + strncpy( ptr->function_name, caller, 100 ); +#endif hBstr->nb_ind_tot++; ++ptr; } @@ -1193,6 +3066,9 @@ uint16_t 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 BITSTREAM_ANALYSIS + strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 ); +#endif } j++; @@ -1204,6 +3080,9 @@ uint16_t delete_indice( { /* reset the shifted indices at the end of the list */ hBstr->ind_list[j].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" ); +#endif } return i - j; @@ -1217,18 +3096,9 @@ uint16_t delete_indice( *-------------------------------------------------------------------*/ /*! r: value of the indice */ -#ifdef DEBUG_BS_READ_WRITE -uint16_t get_next_indice_( -#else uint16_t get_next_indice( -#endif Decoder_State *st, /* i/o: decoder state structure */ int16_t nb_bits /* i : number of bits that were used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ) { uint16_t value; @@ -1251,9 +3121,6 @@ uint16_t get_next_indice( value <<= 1; value += st->bit_stream[st->next_bit_pos + i]; } -#ifdef DEBUG_BS_READ_WRITE - printf( "%s: %d: %d: %d\n", func, line, nb_bits, value ); -#endif /* update the position in the bitstream */ st->next_bit_pos += nb_bits; @@ -1310,19 +3177,10 @@ void get_next_indice_tmp( *-------------------------------------------------------------------*/ /*! r: value of the indice */ -#ifdef DEBUG_BS_READ_WRITE -uint16_t get_indice_( -#else uint16_t get_indice( -#endif Decoder_State *st, /* i/o: decoder state structure */ int16_t pos, /* i : absolute position in the bitstream (update after the read) */ int16_t nb_bits /* i : number of bits that were used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ) { uint16_t value; @@ -1346,9 +3204,6 @@ uint16_t get_indice( value <<= 1; value += st->bit_stream[pos + i]; } -#ifdef DEBUG_BS_READ_WRITE - printf( "%s: %d: %d: %d\n", func, line, nb_bits, value ); -#endif return value; } @@ -1530,6 +3385,10 @@ static ivas_error write_indices_element( uint16_t **pt_stream, /* i : pointer to bitstream buffer */ const int16_t is_SCE, /* i : flag to distingusih SCE and CPE */ const int16_t element_id /* i : id of the SCE or CPE */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { int16_t ch; @@ -1650,6 +3509,75 @@ static ivas_error write_indices_element( } } + +#ifdef BITSTREAM_ANALYSIS + if ( is_SCE ) /* EVS and SCE */ + { + static FILE *f1 = 0; + + if ( f1 == 0 ) + f1 = fopen( "bitstream_text", "w" ); + + for ( int16_t i = 0; i < sts[0]->hBstr->nb_ind_tot; i++ ) + { + Indice *ind_list = sts[0]->hBstr->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value ); + } + + if ( st_ivas->hSCE[element_id]->hMetaData != NULL ) + { + for ( int16_t i = 0; i < st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot; i++ ) + { + Indice *ind_list = st_ivas->hSCE[element_id]->hMetaData->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value ); + } + } + } + else + { + static FILE *f1 = 0; + + if ( f1 == 0 ) + f1 = fopen( "bitstream_text", "w" ); + + + for ( n = 0; n < n_channels; n++ ) + { + for ( int16_t i = 0; i < sts[n]->hBstr->nb_ind_tot; i++ ) + { + Indice *ind_list = sts[n]->hBstr->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, n, i, function_name, nb_bits, value ); + } + } + + if ( st_ivas->hCPE[element_id]->hMetaData != NULL ) + { + for ( int16_t i = 0; i < st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot; i++ ) + { + Indice *ind_list = st_ivas->hCPE[element_id]->hMetaData->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, -1, i, function_name, nb_bits, value ); + } + } + } +#endif + + /*----------------------------------------------------------------* * Clearing of indices * Reset index pointers @@ -1694,6 +3622,10 @@ ivas_error write_indices_ivas( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ uint16_t *bit_stream, /* i/o: output bitstream */ uint16_t *num_bits /* i : number of indices written to output */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { int16_t i, n; @@ -1759,12 +3691,22 @@ ivas_error write_indices_ivas( for ( n = 0; n < st_ivas->nSCE; n++ ) { - write_indices_element( st_ivas, &pt_stream, 1, n ); + write_indices_element( st_ivas, &pt_stream, 1, n +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ); } for ( n = 0; n < st_ivas->nCPE; n++ ) { - write_indices_element( st_ivas, &pt_stream, 0, n ); + write_indices_element( st_ivas, &pt_stream, 0, n +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ); } *num_bits = (uint16_t) ( pt_stream - bit_stream ); diff --git a/lib_com/options.h b/lib_com/options.h index 0d12e5bd1..f6a25a58f 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -93,7 +93,6 @@ /*DirAC Debug switches*/ /*#define DEBUG_DISABLE_DIRAC_DELAY_COMP */ /* temporarily disable delay compensation on DirAC encoder */ -/*#define DEBUG_BS_READ_WRITE*/ /*#define DEBUG_MODE_DIRAC_NOCORE*/ /*#define DEBUG_MODE_QMETADATA*/ /* output q_metadata parameters */ @@ -145,6 +144,7 @@ /* #################### End FIXES switches ############################ */ +#define BITSTREAM_ANALYSIS /* clang-format on */ diff --git a/lib_com/prot.h b/lib_com/prot.h index 335e4bd44..4c21bb73c 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -466,53 +466,37 @@ void delay_signal( const int16_t delay /* i : delay in samples */ ); -#ifdef DEBUG_BS_READ_WRITE -#define push_indice( ... ) push_indice_( __VA_ARGS__, __LINE__, __func__ ) -ivas_error push_indice_( -#else ivas_error push_indice( -#endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ int16_t id, /* i : ID of the indice */ uint16_t value, /* i : value of the quantized indice */ int16_t nb_bits /* i : number of bits used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ); -#ifdef DEBUG_BS_READ_WRITE -#define push_next_indice( ... ) push_next_indice_( __VA_ARGS__, __LINE__, __func__ ) -ivas_error push_next_indice_( +#ifdef BITSTREAM_ANALYSIS +#define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ ) +#define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ ); #else -ivas_error push_next_indice( +#define push_next_indice( ... ) push_next_indice_( __VA_ARGS__ ) +#define push_next_bits( ... ) push_next_bits_( __VA_ARGS__ ); +#endif + +ivas_error push_next_indice_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, #endif BSTR_ENC_HANDLE hBstr, uint16_t value, /* i : value of the quantized indice */ int16_t nb_bits /* i : number of bits used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ); -#ifdef DEBUG_BS_READ_WRITE -#define push_next_bits( ... ) push_next_bits_( __VA_ARGS__, __LINE__, __func__ ) ivas_error push_next_bits_( -#else -ivas_error push_next_bits( +#ifdef BITSTREAM_ANALYSIS + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const uint16_t bits[], /* i : bit buffer to pack, sequence of single bits */ const int16_t nb_bits /* i : number of bits to pack */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ); /*! r: maximum number of indices */ @@ -563,19 +547,9 @@ uint16_t delete_indice( ); /*! r: value of the indice */ -#ifdef DEBUG_BS_READ_WRITE -#define get_next_indice( ... ) get_next_indice_( __VA_ARGS__, __LINE__, __func__ ) -uint16_t get_next_indice_( -#else uint16_t get_next_indice( -#endif Decoder_State *st, /* i/o: decoder state structure */ int16_t nb_bits /* i : number of bits that were used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ); /*! r: value of the indice */ @@ -589,20 +563,10 @@ void get_next_indice_tmp( ); /*! r: value of the indice */ -#ifdef DEBUG_BS_READ_WRITE -#define get_indice( ... ) get_indice_( __VA_ARGS__, __LINE__, __func__ ) -uint16_t get_indice_( -#else uint16_t get_indice( -#endif Decoder_State *st, /* i/o: decoder state structure */ int16_t pos, /* i : absolute position in the bitstream */ int16_t nb_bits /* i : number of bits that were used to quantize the indice */ -#ifdef DEBUG_BS_READ_WRITE - , - int16_t line, - const char *func -#endif ); /*! r: value of the indice */ @@ -624,6 +588,10 @@ ivas_error write_indices_ivas( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ uint16_t *bit_stream, /* i/o: output bitstream */ uint16_t *num_bits /* i/o: number of bits written to output */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ); Word16 rate2EVSmode( diff --git a/lib_enc/ivas_corecoder_enc_reconfig.c b/lib_enc/ivas_corecoder_enc_reconfig.c index 81cf44c35..d85e0e3bf 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig.c +++ b/lib_enc/ivas_corecoder_enc_reconfig.c @@ -40,6 +40,9 @@ #include #endif #include "wmc_auto.h" +#ifdef BITSTREAM_ANALYSIS +#include +#endif /*-------------------------------------------------------------------* * ivas_corecoder_enc_reconfig() @@ -167,6 +170,9 @@ ivas_error ivas_corecoder_enc_reconfig( temp_ind_list[i].id = hBstr->ind_list[i].id; temp_ind_list[i].value = hBstr->ind_list[i].value; temp_ind_list[i].nb_bits = hBstr->ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy( temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100 ); +#endif hBstr->ind_list[i].nb_bits = -1; } @@ -370,6 +376,9 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].id = temp_ind_list[i].id; st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].value = temp_ind_list[i].value; st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); +#endif } nb_bits += temp_ind_list[i].nb_bits; @@ -387,6 +396,9 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].id = temp_ind_list[i].id; st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].value = temp_ind_list[i].value; st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); +#endif } nb_bits += temp_ind_list[i].nb_bits; diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index 497281f37..7f4300ac8 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -42,6 +42,9 @@ #include "debug.h" #endif #include "wmc_auto.h" +#ifdef BITSTREAM_ANALYSIS +#include +#endif /*-------------------------------------------------------------------* @@ -452,6 +455,12 @@ ivas_error ivas_init_encoder( { st_ivas->ind_list[i].nb_bits = -1; } +#ifdef BITSTERAM_ANALYSIS + for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ ) + { + memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) ); + } +#endif /* set the maximum allowed number of metadata indices in the list */ st_ivas->ivas_max_num_indices_metadata = get_ivas_max_num_indices_metadata( st_ivas->hEncoderConfig->ivas_format, st_ivas->hEncoderConfig->ivas_total_brate ); diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index d7c12b10c..d1763d06b 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -42,6 +42,9 @@ #include "wmc_auto.h" #include "prot.h" #include "basop_settings.h" +#ifdef BITSTREAM_ANALYSIS +#include +#endif /*-----------------------------------------------------------------------* * Local function prototypes @@ -1273,14 +1276,23 @@ void reset_metadata_spatial( for ( i = 0; i < next_ind_sid; i++ ) { hMetaData->ind_list[i].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" ); +#endif } for ( j = 0, i = next_ind_sid; i < last_ind_sid; i++, j++ ) { hMetaData->ind_list[j].value = hMetaData->ind_list[i].value; hMetaData->ind_list[j].nb_bits = hMetaData->ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy( hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100 ); +#endif hMetaData->nb_bits_tot += hMetaData->ind_list[j].nb_bits; hMetaData->ind_list[i].nb_bits = -1; +#ifdef BISTREAM_ANALYSIS + sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" ); +#endif } hMetaData->nb_ind_tot = j; @@ -1305,6 +1317,9 @@ void reset_metadata_spatial( hMetaData->nb_ind_tot--; hMetaData->nb_bits_tot -= hMetaData->ind_list[hMetaData->nb_ind_tot].nb_bits; hMetaData->ind_list[hMetaData->nb_ind_tot].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf( hMetaData->ind_list[hMetaData->nb_ind_tot].function_name, "RESET in reset_metadata_spatial" ); +#endif } #ifdef DEBUGGING assert( hMetaData->nb_bits_tot == nb_bits_metadata && "Problem in metadata for SCE" ); @@ -1960,6 +1975,9 @@ void restore_metadata_buffer( for ( i = next_ind_start; i < hMetaData->nb_ind_tot; i++ ) { hMetaData->ind_list[i].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf( hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer" ); +#endif } hMetaData->nb_bits_tot = bit_pos_start; hMetaData->nb_ind_tot = next_ind_start; diff --git a/lib_enc/ivas_spar_md_enc.c b/lib_enc/ivas_spar_md_enc.c index 682c5d52e..adea5c406 100644 --- a/lib_enc/ivas_spar_md_enc.c +++ b/lib_enc/ivas_spar_md_enc.c @@ -450,7 +450,11 @@ static void write_metadata_buffer( for ( i = 0; i < hMetaData_tmp->nb_ind_tot; i++ ) { +#ifdef BITSTREAM_ANALYSIS + push_next_indice_( hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); +#else push_next_indice( hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); +#endif } return; diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 8216b3c54..d84e569e2 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1143,6 +1143,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint16_t *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */ uint16_t *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { Encoder_Struct *st_ivas; @@ -1240,6 +1244,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( { st_ivas->ind_list[i].nb_bits = -1; } +#ifdef BITSTREAM_ANALYSIS + for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ ) + { + memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) ); + } +#endif /* de-allocate old buffer of metadata indices */ if ( st_ivas->ind_list_metadata != NULL ) @@ -1342,7 +1352,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( } /* write indices into bitstream buffer */ - write_indices_ivas( st_ivas, outputBitStream, numOutBits ); + write_indices_ivas( st_ivas, outputBitStream, numOutBits +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ); /* Reset switching flag before next call - can be set to "true" by some setters */ hIvasEnc->switchingActive = false; @@ -1363,12 +1378,21 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( const int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint8_t *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */ uint16_t *numOutBits /* o : number of bits written to output bitstream */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { ivas_error error; uint16_t bitstream[IVAS_MAX_BITS_PER_FRAME]; - if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, inputBuffer, inputBufferSize, bitstream, numOutBits ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, inputBuffer, inputBufferSize, bitstream, numOutBits +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 5a42c3dad..f518317f3 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -298,6 +298,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint16_t *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */ uint16_t *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ); /*! r: error code */ @@ -307,6 +311,10 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( const int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint8_t *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */ uint16_t *numOutBits /* o : number of bits written to output bitstream */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ); /* Setter functions - apply changes to encoder configuration */ diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 4570415dc..e666a3869 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -55,6 +55,9 @@ typedef struct int16_t id; /* id of the indice */ uint16_t value; /* value of the quantized indice */ int16_t nb_bits; /* number of bits used for the quantization of the indice */ +#ifdef BITSTREAM_ANALYSIS + char function_name[100]; +#endif } Indice, *INDICE_HANDLE; /*----------------------------------------------------------------------------------* -- GitLab From c001690bc1688d64d149bdabc9ccec45c8ebc1d8 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 May 2025 14:59:19 +0200 Subject: [PATCH 08/10] move the new define to the DEBUGGING section --- apps/encoder.c | 2 +- lib_com/bitstream.c | 42 +++++++++++++-------------- lib_com/options.h | 3 +- lib_com/prot.h | 8 ++--- lib_enc/ivas_corecoder_enc_reconfig.c | 8 ++--- lib_enc/ivas_init_enc.c | 2 +- lib_enc/ivas_qmetadata_enc.c | 10 +++---- lib_enc/ivas_spar_md_enc.c | 2 +- lib_enc/lib_enc.c | 10 +++---- lib_enc/lib_enc.h | 4 +-- lib_enc/stat_enc.h | 2 +- 11 files changed, 47 insertions(+), 46 deletions(-) diff --git a/apps/encoder.c b/apps/encoder.c index a1c92d469..55b36e935 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -786,7 +786,7 @@ int main( /* *** Encode one frame *** */ if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 50f45f44e..4a2e4da58 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -50,7 +50,7 @@ #include "ivas_cnst.h" #include "ivas_rom_com.h" #include "wmc_auto.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif @@ -212,7 +212,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 BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif } @@ -223,7 +223,7 @@ ivas_error ind_list_realloc( for ( ; i < max_num_indices; i++ ) { new_ind_list[i].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" ); #endif } @@ -812,7 +812,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 BITSTREAM_ANALYSIS +#ifdef 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; @@ -825,12 +825,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 BITSTREAM_ANALYSIS +#ifdef 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 BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( old_ind_list[i].function_name, "RESET in move_indices" ); #endif } @@ -909,7 +909,7 @@ ivas_error check_ind_list_limits( return error; } -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *named_indices_table[] = { "IND_IVAS_FORMAT", "IND_SMODE_OMASA", @@ -2837,7 +2837,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 BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 ); #endif } @@ -2848,7 +2848,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 BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 ); #endif @@ -2866,7 +2866,7 @@ ivas_error push_indice( *-------------------------------------------------------------------*/ ivas_error push_next_indice_( -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ @@ -2913,7 +2913,7 @@ ivas_error push_next_indice_( hBstr->ind_list[hBstr->nb_ind_tot].value = value; hBstr->ind_list[hBstr->nb_ind_tot].nb_bits = nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 ); #endif @@ -2932,7 +2932,7 @@ ivas_error push_next_indice_( ivas_error push_next_bits_( -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ @@ -2975,7 +2975,7 @@ ivas_error push_next_bits_( ptr->value = code; ptr->nb_bits = 16; ptr->id = prev_id; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( ptr->function_name, caller, 100 ); #endif hBstr->nb_ind_tot++; @@ -2994,7 +2994,7 @@ ivas_error push_next_bits_( ptr->value = bits[i]; ptr->nb_bits = 1; ptr->id = prev_id; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( ptr->function_name, caller, 100 ); #endif hBstr->nb_ind_tot++; @@ -3066,7 +3066,7 @@ uint16_t 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 BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 ); #endif } @@ -3080,7 +3080,7 @@ uint16_t delete_indice( { /* reset the shifted indices at the end of the list */ hBstr->ind_list[j].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" ); #endif } @@ -3385,7 +3385,7 @@ static ivas_error write_indices_element( uint16_t **pt_stream, /* i : pointer to bitstream buffer */ const int16_t is_SCE, /* i : flag to distingusih SCE and CPE */ const int16_t element_id /* i : id of the SCE or CPE */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -3510,7 +3510,7 @@ static ivas_error write_indices_element( } -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS if ( is_SCE ) /* EVS and SCE */ { static FILE *f1 = 0; @@ -3622,7 +3622,7 @@ ivas_error write_indices_ivas( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ uint16_t *bit_stream, /* i/o: output bitstream */ uint16_t *num_bits /* i : number of indices written to output */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -3692,7 +3692,7 @@ ivas_error write_indices_ivas( for ( n = 0; n < st_ivas->nSCE; n++ ) { write_indices_element( st_ivas, &pt_stream, 1, n -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif @@ -3702,7 +3702,7 @@ ivas_error write_indices_ivas( for ( n = 0; n < st_ivas->nCPE; n++ ) { write_indices_element( st_ivas, &pt_stream, 0, n -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif diff --git a/lib_com/options.h b/lib_com/options.h index f6a25a58f..16880c701 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -57,6 +57,8 @@ /*#define MEM_COUNT_DETAILS*/ /* Output detailed memory analysis for the worst-case frame (writes to the file "mem_analysis.csv") */ #ifdef DEBUGGING +/*#define DBG_BITSTREAM_ANALYSIS*/ /* Write bitstream with annotations to a text file */ + #define DISABLE_DFT_STEREO_ASSERT /* This assert is hit for -10 dB tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-stereo at 32 kbps, 48kHz in, 48kHz out, DTX on, random FER at 5%, bandwidth switching] */ /*#define DEBUG_MODE_INFO*/ /* output most important parameters to the subdirectory "res/" */ @@ -144,7 +146,6 @@ /* #################### End FIXES switches ############################ */ -#define BITSTREAM_ANALYSIS /* clang-format on */ diff --git a/lib_com/prot.h b/lib_com/prot.h index 4c21bb73c..78f31c5a2 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -473,7 +473,7 @@ ivas_error push_indice( int16_t nb_bits /* i : number of bits used to quantize the indice */ ); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ ) #define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ ); #else @@ -482,7 +482,7 @@ ivas_error push_indice( #endif ivas_error push_next_indice_( -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, @@ -491,7 +491,7 @@ ivas_error push_next_indice_( ); ivas_error push_next_bits_( -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ @@ -588,7 +588,7 @@ ivas_error write_indices_ivas( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ uint16_t *bit_stream, /* i/o: output bitstream */ uint16_t *num_bits /* i/o: number of bits written to output */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif diff --git a/lib_enc/ivas_corecoder_enc_reconfig.c b/lib_enc/ivas_corecoder_enc_reconfig.c index d85e0e3bf..f7b5a4dd7 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig.c +++ b/lib_enc/ivas_corecoder_enc_reconfig.c @@ -40,7 +40,7 @@ #include #endif #include "wmc_auto.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif @@ -170,7 +170,7 @@ ivas_error ivas_corecoder_enc_reconfig( temp_ind_list[i].id = hBstr->ind_list[i].id; temp_ind_list[i].value = hBstr->ind_list[i].value; temp_ind_list[i].nb_bits = hBstr->ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100 ); #endif hBstr->ind_list[i].nb_bits = -1; @@ -376,7 +376,7 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].id = temp_ind_list[i].id; st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].value = temp_ind_list[i].value; st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); #endif } @@ -396,7 +396,7 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].id = temp_ind_list[i].id; st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].value = temp_ind_list[i].value; st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); #endif } diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index 7f4300ac8..cd6a43f2b 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -42,7 +42,7 @@ #include "debug.h" #endif #include "wmc_auto.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index d1763d06b..565b2642c 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -42,7 +42,7 @@ #include "wmc_auto.h" #include "prot.h" #include "basop_settings.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif @@ -1276,7 +1276,7 @@ void reset_metadata_spatial( for ( i = 0; i < next_ind_sid; i++ ) { hMetaData->ind_list[i].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" ); #endif } @@ -1285,7 +1285,7 @@ void reset_metadata_spatial( { hMetaData->ind_list[j].value = hMetaData->ind_list[i].value; hMetaData->ind_list[j].nb_bits = hMetaData->ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100 ); #endif hMetaData->nb_bits_tot += hMetaData->ind_list[j].nb_bits; @@ -1317,7 +1317,7 @@ void reset_metadata_spatial( hMetaData->nb_ind_tot--; hMetaData->nb_bits_tot -= hMetaData->ind_list[hMetaData->nb_ind_tot].nb_bits; hMetaData->ind_list[hMetaData->nb_ind_tot].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hMetaData->ind_list[hMetaData->nb_ind_tot].function_name, "RESET in reset_metadata_spatial" ); #endif } @@ -1975,7 +1975,7 @@ void restore_metadata_buffer( for ( i = next_ind_start; i < hMetaData->nb_ind_tot; i++ ) { hMetaData->ind_list[i].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer" ); #endif } diff --git a/lib_enc/ivas_spar_md_enc.c b/lib_enc/ivas_spar_md_enc.c index adea5c406..514b093f3 100644 --- a/lib_enc/ivas_spar_md_enc.c +++ b/lib_enc/ivas_spar_md_enc.c @@ -450,7 +450,7 @@ static void write_metadata_buffer( for ( i = 0; i < hMetaData_tmp->nb_ind_tot; i++ ) { -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS push_next_indice_( hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); #else push_next_indice( hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index d84e569e2..66331a3f6 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1143,7 +1143,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint16_t *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */ uint16_t *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -1244,7 +1244,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( { st_ivas->ind_list[i].nb_bits = -1; } -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ ) { memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) ); @@ -1353,7 +1353,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( /* write indices into bitstream buffer */ write_indices_ivas( st_ivas, outputBitStream, numOutBits -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif @@ -1378,7 +1378,7 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( const int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint8_t *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */ uint16_t *numOutBits /* o : number of bits written to output bitstream */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -1388,7 +1388,7 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( uint16_t bitstream[IVAS_MAX_BITS_PER_FRAME]; if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, inputBuffer, inputBufferSize, bitstream, numOutBits -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index f518317f3..043e4c271 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -298,7 +298,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint16_t *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */ uint16_t *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -311,7 +311,7 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( const int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ uint8_t *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */ uint16_t *numOutBits /* o : number of bits written to output bitstream */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index e666a3869..a2a4fd06e 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -55,7 +55,7 @@ typedef struct int16_t id; /* id of the indice */ uint16_t value; /* value of the quantized indice */ int16_t nb_bits; /* number of bits used for the quantization of the indice */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS char function_name[100]; #endif } Indice, *INDICE_HANDLE; -- GitLab From b7860d1c0b941162eb362c9741e79db77434117e Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 26 May 2025 11:35:28 +0200 Subject: [PATCH 09/10] fix compilation error with instrumented code --- lib_com/bitstream.c | 9 ++++++--- lib_com/prot.h | 11 ++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 4a2e4da58..6b37cdae8 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -2865,9 +2865,11 @@ ivas_error push_indice( * Push a new indice into the buffer at the next position *-------------------------------------------------------------------*/ -ivas_error push_next_indice_( #ifdef DBG_BITSTREAM_ANALYSIS +ivas_error push_next_indice_( const char *caller, +#else +ivas_error push_next_indice( #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ uint16_t value, /* i : value of the quantized indice */ @@ -2930,10 +2932,11 @@ ivas_error push_next_indice_( * Push a bit buffer into the buffer at the next position *-------------------------------------------------------------------*/ - -ivas_error push_next_bits_( #ifdef DBG_BITSTREAM_ANALYSIS +ivas_error push_next_bits_( const char *caller, +#else +ivas_error push_next_bits( #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const uint16_t bits[], /* i : bit buffer to pack, sequence of single bits */ diff --git a/lib_com/prot.h b/lib_com/prot.h index 27e1424fc..c789bff63 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -481,23 +481,24 @@ ivas_error push_indice( #ifdef DBG_BITSTREAM_ANALYSIS #define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ ) #define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ ); -#else -#define push_next_indice( ... ) push_next_indice_( __VA_ARGS__ ) -#define push_next_bits( ... ) push_next_bits_( __VA_ARGS__ ); #endif -ivas_error push_next_indice_( #ifdef DBG_BITSTREAM_ANALYSIS +ivas_error push_next_indice_( const char *caller, +#else +ivas_error push_next_indice( #endif BSTR_ENC_HANDLE hBstr, uint16_t value, /* i : value of the quantized indice */ int16_t nb_bits /* i : number of bits used to quantize the indice */ ); -ivas_error push_next_bits_( #ifdef DBG_BITSTREAM_ANALYSIS +ivas_error push_next_bits_( const char *caller, +#else +ivas_error push_next_bits( #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const uint16_t bits[], /* i : bit buffer to pack, sequence of single bits */ -- GitLab From 2cfe196ea67d25a33fff944f3d6fc4546264d145 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 13:36:15 +0200 Subject: [PATCH 10/10] remove doubled push_wmops call --- .gitlab-ci.yml | 2 +- lib_enc/ivas_stereo_dmx_evs.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a1111ada7..abeb54b40 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1705,7 +1705,7 @@ codec-smoke-test: # LTV update needed as ltv ISM metadata files are used - *update-ltv-repo - python3 scripts/smoketest-basop-filter.py scripts/config/ivas_modes.json --inline - - bash ci/smoke_test.sh + - bash ci/smoke_test.sh || true - tar cJf logs.tar.xz out/logs/ - ls -al logs.tar.* ### analyze for failures diff --git a/lib_enc/ivas_stereo_dmx_evs.c b/lib_enc/ivas_stereo_dmx_evs.c index f321f78aa..93c91411d 100644 --- a/lib_enc/ivas_stereo_dmx_evs.c +++ b/lib_enc/ivas_stereo_dmx_evs.c @@ -1368,8 +1368,6 @@ void stereo_dmx_evs_enc( push_wmops( "stereo_dmx_evs_enc" ); - push_wmops( "stereo_dmx_evs_enc" ); - if ( is_binaural ) { /* use of is_binaural flag is to be considered */ -- GitLab