diff --git a/lib_com/options.h b/lib_com/options.h index 2512ff1d0cfb05b0488be3f7e68b19779a2f547f..18dc45e90c29ff8b211d94777102f047f11bbc76 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,6 +98,7 @@ #define FIX_2385_GETTCXONLY /* FhG: issue 2385 : harmonizing getTcxonly_ivas_fx() and getTcxonly_ivas_fx() functions */ #define FIX_2196_UNREACHABLE_CODE_IN_OSBA_STEREO_OUTPUT /* FhG: remove unreachable code in ivas_osba_stereo_add_channels */ #define FIX_OUTPUT_FRAME /* VA: harmonize "output_frame" parameter usage to correspond to FLP */ +#define HARMONIZE_ISSUE_2435_WRITETNSDATA /* FhG basop 2435: Harmonize WriteTnsData*_fx(), EncodeTnsData*_fx() */ /* #################### End BE switches ################################## */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 896c3fe72427794d15785ce2e6e698cfd6c5d2cf..8d22557a8417aea3416683345e3d17d923711b68 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -8188,6 +8188,7 @@ void GetParameters_fx( Word16 *pnBits // Q0 ); +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA void EncodeTnsData_ivas_fx( STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ STnsData const *pTnsData, /* i : TNS data struct (quantized param) */ @@ -8195,6 +8196,15 @@ void EncodeTnsData_ivas_fx( Word16 *pnSize, /* o : number of written parameters Q0*/ Word16 *pnBits /* o : number of written bits Q0*/ ); +#else +void EncodeTnsData_ivas_fx( + STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ + STnsData const *pTnsData, /* i : TNS data struct (quantized param) */ + Word16 *stream, /* o : internal data stream Q0 */ + Word16 *pnSize, /* o : number of written parameters Q0 */ + Word16 *pnBits /* o : number of written bits Q0 */ +); +#endif void SetParameters( ParamsBitMap const *paramsBitMap, @@ -10808,6 +10818,7 @@ void ResetTnsData_flt( void ClearTnsFilterCoefficients_flt( STnsFilter *pTnsFilter ); +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA void EncodeTnsData( STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ STnsData const *pTnsData, /* i : TNS data struct (quantized param) */ @@ -10815,6 +10826,7 @@ void EncodeTnsData( Word16 *pnSize, /* o : number of written parameters */ Word16 *pnBits /* o : number of written bits */ ); +#endif void WriteTnsData( const STnsConfig *pTnsConfig, /* i : TNS Configuration struct */ @@ -10823,6 +10835,7 @@ void WriteTnsData( BSTR_ENC_HANDLE hBstr, /* o : bitstream */ Word16 *pnBits /* o : number of written bits */ ); + #ifndef HARMONIZE_READ_DECODE_TNS void ReadTnsData_ivas( STnsConfig const *pTnsConfig, diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c index e73ef35a2246bb1da92f1703eba430b256d4f68e..db451247697fde2b4fcacff5ceff171b98199d0a 100644 --- a/lib_enc/cod_tcx_fx.c +++ b/lib_enc/cod_tcx_fx.c @@ -5506,7 +5506,11 @@ void TNSAnalysisStereo_fx( st->hTcxEnc->tnsData[k].tnsOnWhitenedSpectra = st->hTcxEnc->bTnsOnWhithenedSpectra[k]; move16(); +#ifdef HARMONIZE_ISSUE_2435_WRITETNSDATA + EncodeTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, &st->hTcxEnc->tnsData[k], param_core[ch] + k * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, tnsSize[ch] + k, tnsBits[ch] + k ); +#else EncodeTnsData_ivas_fx( st->hTcxCfg->pCurrentTnsConfig, &st->hTcxEnc->tnsData[k], param_core[ch] + k * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, tnsSize[ch] + k, tnsBits[ch] + k ); +#endif } IF( EQ_16( st->hTcxEnc->transform_type[k], TCX_5 ) ) diff --git a/lib_enc/enc_prm_fx.c b/lib_enc/enc_prm_fx.c index 3a4a043e3f194a9bf89dd08d86786d4354bcf8fc..f72a955a8e8b055e0ac0c7ea7c0b3e7c06d72bd7 100644 --- a/lib_enc/enc_prm_fx.c +++ b/lib_enc/enc_prm_fx.c @@ -749,7 +749,13 @@ void enc_prm_fx( IF( st->hTcxCfg->fIsTNSAllowed ) { +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA + WriteTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, prm + j, &nTnsParams, st, &nTnsBits ); +#else + WriteTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, prm + j, &nTnsParams, st->hBstr, &nTnsBits ); +#endif // !HARMONIZE_ISSUE_2435_WRITETNSDATA + j = add( j, nTnsParams ); /* Q0 */ } @@ -899,8 +905,13 @@ void enc_prm_fx( { SetTnsConfig( st->hTcxCfg, 0, ( last_core == ACELP_CORE ) && ( k == 0 ) ); - +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA WriteTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, prm + j, &nTnsParams, st, &nTnsBits ); +#else + WriteTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, prm + j, &nTnsParams, st->hBstr, &nTnsBits ); +#endif // !HARMONIZE_ISSUE_2435_WRITETNSDATA + + j = add( j, nTnsParams ); } @@ -1208,7 +1219,11 @@ void writeTCXparam_fx( } ELSE { +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA WriteTnsData_ivas_fx( st->hTcxCfg->pCurrentTnsConfig, prm + j, &nTnsParams, hBstr, &nTnsBits ); +#else + WriteTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, prm + j, &nTnsParams, hBstr, &nTnsBits ); +#endif // !HARMONIZE_ISSUE_2435_WRITETNSDATA } IF( no_param_tns ) { diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index ebe4f4aa523bdf4d2f15fa693a93fb036a81a01a..43dda3a78fb4633fad488e23ed3a43f7c62666b9 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -1486,28 +1486,45 @@ Word16 DetectTnsFilt_ivas_fx( Word16 *predictionGain /* o : TNS prediction gain Q=7 */ ); - +#ifdef HARMONIZE_ISSUE_2435_WRITETNSDATA +void EncodeTnsData_fx( + STnsConfig const *pTnsConfig, + STnsData const *pTnsData, + Word16 *stream, + Word16 *pnSize, + Word16 *pnBits ); +#else Word16 EncodeTnsData_fx( STnsConfig const *pTnsConfig, STnsData const *pTnsData, Word16 *stream, Word16 *pnSize, Word16 *pnBits ); +#endif +#ifdef HARMONIZE_ISSUE_2435_WRITETNSDATA Word16 WriteTnsData_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word16 *pnSize, - Encoder_State *st, + BSTR_ENC_HANDLE hBstr, Word16 *pnBits ); +#endif // HARMONIZE_ISSUE_2435_WRITETNSDATA +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA +Word16 WriteTnsData_fx( + STnsConfig const *pTnsConfig, + Word16 const *stream, + Word16 *pnSize, + Encoder_State *st, + Word16 *pnBits ); Word16 WriteTnsData_ivas_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word16 *pnSize, BSTR_ENC_HANDLE hBstr, Word16 *pnBits ); - +#endif // !HARMONIZE_ISSUE_2435_WRITETNSDATA void subband_FFT_fx( Word32 **Sr, /*(i) real part of the CLDFB*/ Word32 **Si, /*(i) imag part of the CLDFB*/ diff --git a/lib_enc/tns_base_enc_fx.c b/lib_enc/tns_base_enc_fx.c index be7c067608e36ab3bfd92cfde03a2925d5580857..1b9f67de7c15eb41aa9fd6648d443e5a8e2157fd 100644 --- a/lib_enc/tns_base_enc_fx.c +++ b/lib_enc/tns_base_enc_fx.c @@ -697,6 +697,7 @@ Word16 DetectTnsFilt_ivas_fx( return ( pTnsData->nFilters > 0 ); } +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA Word16 EncodeTnsData_fx( STnsConfig const *pTnsConfig, STnsData const *pTnsData, Word16 *stream, Word16 *pnSize, Word16 *pnBits ) { @@ -724,7 +725,17 @@ Word16 EncodeTnsData_fx( STnsConfig const *pTnsConfig, STnsData const *pTnsData, return TNS_NO_ERROR; } +#endif +#ifdef HARMONIZE_ISSUE_2435_WRITETNSDATA +void EncodeTnsData_fx( + STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ + STnsData const *pTnsData, /* i : TNS data struct (quantized param) */ + Word16 *stream, /* o : internal data stream Q0*/ + Word16 *pnSize, /* o : number of written parameters Q0*/ + Word16 *pnBits /* o : number of written bits Q0*/ +) +#else void EncodeTnsData_ivas_fx( STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ STnsData const *pTnsData, /* i : TNS data struct (quantized param) */ @@ -732,6 +743,7 @@ void EncodeTnsData_ivas_fx( Word16 *pnSize, /* o : number of written parameters Q0*/ Word16 *pnBits /* o : number of written bits Q0*/ ) +#endif { *pnSize = 0; move16(); @@ -770,7 +782,7 @@ void EncodeTnsData_ivas_fx( return; } - +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA Word16 WriteTnsData_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word16 *pnSize, Encoder_State *st, Word16 *pnBits ) { @@ -794,7 +806,13 @@ Word16 WriteTnsData_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word return TNS_NO_ERROR; } +#endif // !HARMONIZE_ISSUE_2435_WRITETNSDATA + +#ifndef HARMONIZE_ISSUE_2435_WRITETNSDATA Word16 WriteTnsData_ivas_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word16 *pnSize, BSTR_ENC_HANDLE hBstr, Word16 *pnBits ) +#else +Word16 WriteTnsData_fx( STnsConfig const *pTnsConfig, Word16 const *stream, Word16 *pnSize, BSTR_ENC_HANDLE hBstr, Word16 *pnBits ) +#endif // !HARMONIZE_ISSUE_2435_WRITETNSDATA { IF( GT_16( pTnsConfig->nMaxFilters, 1 ) ) {