diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 79e774793e74509666cb1babac428ff62e88305a..072bc390c9ecfb30c8a6225f9f32664096054078 100755 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -5296,6 +5296,18 @@ void ivas_mc2sba( const float gain_lfe /* i : gain for LFE, 0=ignore LFE */ ); +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION +void ivas_param_mc_mc2sba_cldfb( + IVAS_OUTPUT_SETUP hTransSetup, /* i : transported MC Format */ + float *hoa_encoder, /* i : HOA3 encoder for the transported MC format */ + const int16_t slot_idx, /* i : current slot in the subframe */ + float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */ + float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */ + const int16_t nBands, /* i : number of synth CLDFB bands */ + const float gain_lfe /* i : gain applied to LFE */ +); +#endif + void ivas_ism2sba( float *buffer_td[], /* i/o: TD signal buffers */ ISM_RENDERER_HANDLE hIsmRendererData, /* i/o: renderer data */ diff --git a/lib_com/options.h b/lib_com/options.h index 94f3cfe7de02f7f862e5b1dc77ba11586e99ca29..04d59401cf871701677c9666785f4eb75b675e3f 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -185,6 +185,8 @@ #define NONBE_FIX_770_PLANAR_SBA_JBM /* FhG : Issue #770: Crash in planar FOA decoding with JBM caused by uninitialized value */ #define NONBE_FIX_760_COHERENCE_MASA /* Nokia: Issue 760: fixes decoder crash for some cases when all energy ratios are 1 */ #define NONBE_FIX_752_OSBA_MISCONFIG_MCT /* FhG: issue 752: misconfiguration of MCT causes crashes for coding with sampling rate under 48kHz at 256kbps*/ +#define NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION /* Dlb : issue 727 : headrotation in MC paramupmix mode*/ + #define NONBE_FIX_780_ISM_STARTS_WITH_SID /* VA: issue 780: fix Crash in ISM decoding when bitstream starts with an SID and output_config is not EXT */ #define NONBE_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE /* FhG: fix for cng in ISM DTX on sudden silence periods - JBM addon (issue 552) */ #define NONBE_FIX_738_SBA_BR_SW_ASAN /* FhG: issue 738: fixes bug when switching to an MCT bitrate and previous frame was ACELP */ diff --git a/lib_dec/ivas_dec.c b/lib_dec/ivas_dec.c index 8d41109c078eaafb3dfbeb19a4f5c2b7a60b3c56..a5fe7aa36c26e31967415d130137f3e80d2793ed 100644 --- a/lib_dec/ivas_dec.c +++ b/lib_dec/ivas_dec.c @@ -902,17 +902,21 @@ ivas_error ivas_dec( } } } - +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION if ( st_ivas->transport_config != st_ivas->intern_config && ( st_ivas->intern_config == AUDIO_CONFIG_FOA || st_ivas->intern_config == AUDIO_CONFIG_HOA2 || st_ivas->intern_config == AUDIO_CONFIG_HOA3 ) ) { ivas_mc2sba( st_ivas->hTransSetup, p_output, p_output, output_frame, st_ivas->hIntSetup.ambisonics_order, GAIN_LFE ); } - +#endif /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + if ( !( st_ivas->hCombinedOrientationData && st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) ) +#else #ifdef SPLIT_REND_WITH_HEAD_ROT if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#endif #endif { ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); diff --git a/lib_dec/ivas_mc_param_dec.c b/lib_dec/ivas_mc_param_dec.c index abcf0af5e0cafd8945f0ea1125f0a68794e10d42..42ab3122637e0fb8ab46396c292d6b1366848123 100644 --- a/lib_dec/ivas_mc_param_dec.c +++ b/lib_dec/ivas_mc_param_dec.c @@ -97,9 +97,9 @@ static void ivas_param_mc_dec_compute_interpolator( const uint16_t bAttackPresen static void param_mc_set_num_synth_bands( const int32_t output_Fs, PARAM_MC_DEC_HANDLE hParamMC ); static ivas_error param_mc_get_diff_proto_info( const float *proto_mtx, const uint16_t nchan_transport, const uint16_t nchan_out_cov, PARAM_MC_DIFF_PROTO_INFO *p_diff_proto_info ); - +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION static void ivas_param_mc_mc2sba_cldfb( IVAS_OUTPUT_SETUP hTransSetup, float *hoa_encoder, const int16_t slot_idx, float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], const int16_t nBands, const float gain_lfe ); - +#endif static void ivas_param_mc_get_param_band_mapping( const int16_t n_target_bands, const int16_t *target_band_grouping, const int16_t n_source_bands, const int16_t *source_band_grouping, PARAM_MC_PARAMETER_BAND_MAPPING *parameter_band_mapping ); static void ivas_param_mc_bs_decode_parameter_values( uint16_t bit_buffer[], int16_t *bit_pos, const int16_t max_bits, int16_t *BER_detect, HANDLE_IVAS_PARAM_MC_METADATA hMetadataPMC, HANDLE_PARAM_MC_PARAMETER_CODING_INFO hParamCodingInfo, const int16_t map_size_wo_lfe, const int16_t map_size, const int16_t num_lfe_bands, const int16_t band_step, const int16_t num_param_bands, float *value_buffer ); @@ -1766,6 +1766,23 @@ void ivas_param_mc_dec_render( if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + mvr2r( Cldfb_RealBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); + mvr2r( Cldfb_ImagBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); + } + } + st_ivas->hSplitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + } + } +#endif ivas_binRenderer( st_ivas->hBinRenderer, #ifdef SPLIT_REND_WITH_HEAD_ROT &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, @@ -2993,7 +3010,7 @@ static ivas_error param_mc_get_diff_proto_info( return IVAS_ERR_OK; } - +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION /*-------------------------------------------------------------------------* * ivas_param_mc_mc2sba_cldfb() * @@ -3068,7 +3085,7 @@ static void ivas_param_mc_mc2sba_cldfb( return; } - +#endif /*-------------------------------------------------------------------------* * ivas_param_mc_bs_decode_parameter_values() diff --git a/lib_dec/ivas_mc_paramupmix_dec.c b/lib_dec/ivas_mc_paramupmix_dec.c index ecccd9b6e12afbe7eb9d249ab72e11c384d597ca..aa7cb29cf7471338b618bccc48f2634821b41366 100644 --- a/lib_dec/ivas_mc_paramupmix_dec.c +++ b/lib_dec/ivas_mc_paramupmix_dec.c @@ -185,15 +185,23 @@ void ivas_mc_paramupmix_dec( int16_t noparamupmix_delay; AUDIO_CONFIG output_config; int16_t subframeIdx, idx_in, index_slot, maxBand; +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + float Cldfb_RealBuffer_subfr[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_subfr[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION float Cldfb_RealBuffer_subfr[MC_PARAMUPMIX_MAX_INPUT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_subfr[MC_PARAMUPMIX_MAX_INPUT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + int16_t idx_lfe; +#endif float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; - int16_t idx_lfe; #else +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION float Cldfb_RealBuffer_subfr[3 + MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_subfr[3 + MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; #endif @@ -311,11 +319,21 @@ void ivas_mc_paramupmix_dec( } idx_in += 2; } - +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + if ( st_ivas->hCombinedOrientationData && st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + ivas_param_mc_mc2sba_cldfb( st_ivas->hTransSetup, hMCParamUpmix->hoa_encoder, slot_idx, Cldfb_RealBuffer_subfr, Cldfb_ImagBuffer_subfr, maxBand, GAIN_LFE ); + } + } +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT /*LFE handling for split rendering cases*/ if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + /*LFE is already handled in ivas_param_mc_mc2sba_cldfb()*/ for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) { ch = st_ivas->hIntSetup.index_lfe[idx_lfe]; @@ -329,6 +347,7 @@ void ivas_mc_paramupmix_dec( } idx_in++; } +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) @@ -367,6 +386,7 @@ void ivas_mc_paramupmix_dec( if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { int16_t pos_idx; +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ ) { if ( st_ivas->hIntSetup.num_lfe > 0 ) @@ -375,12 +395,14 @@ void ivas_mc_paramupmix_dec( v_multc( Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand ); } } +#endif for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) { for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ ) { for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) { +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION if ( st_ivas->hIntSetup.num_lfe > 0 ) { v_add( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], @@ -393,6 +415,7 @@ void ivas_mc_paramupmix_dec( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], maxBand ); } +#endif mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); } @@ -638,7 +661,9 @@ ivas_error ivas_mc_paramupmix_dec_open( assert( 0 && "Number of TC not supported for MC ParamUpmix!" ); #endif } - +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + hMCParamUpmix->hoa_encoder = NULL; +#endif /*-----------------------------------------------------------------* * set input parameters *-----------------------------------------------------------------*/ @@ -659,6 +684,18 @@ ivas_error ivas_mc_paramupmix_dec_open( set_zero( hMCParamUpmix->pcm_delay[i], NS2SA( output_Fs, IVAS_FB_DEC_DELAY_NS ) ); } +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + /* Head or external rotation */ + if ( ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) ) + { + if ( ( hMCParamUpmix->hoa_encoder = (float *) malloc( st_ivas->hTransSetup.nchan_out_woLFE * MAX_INTERN_CHANNELS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC\n" ) ); + } + compute_hoa_encoder_mtx( st_ivas->hTransSetup.ls_azimuth, st_ivas->hTransSetup.ls_elevation, hMCParamUpmix->hoa_encoder, st_ivas->hTransSetup.nchan_out_woLFE, HEAD_ROTATION_HOA_ORDER ); + } +#endif + /* allocate transport channels*/ hMCParamUpmix->free_param_interpolator = 0; hMCParamUpmix->param_interpolator = NULL; @@ -737,6 +774,13 @@ void ivas_mc_paramupmix_dec_close( free( ( *hMCParamUpmix )->param_interpolator ); } } +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + if ( ( *hMCParamUpmix )->hoa_encoder != NULL ) + { + free( ( *hMCParamUpmix )->hoa_encoder ); + ( *hMCParamUpmix )->hoa_encoder = NULL; + } +#endif free( *hMCParamUpmix ); *hMCParamUpmix = NULL; diff --git a/lib_dec/ivas_output_config.c b/lib_dec/ivas_output_config.c index 10491211c09c13a1fa5a58763c51687aa507f5be..b1103bb0e690e729d5f3c1e174dd21c9bbd8528a 100644 --- a/lib_dec/ivas_output_config.c +++ b/lib_dec/ivas_output_config.c @@ -256,10 +256,12 @@ void ivas_renderer_select( /* force HOA3 domain for rotation*/ *internal_config = AUDIO_CONFIG_HOA3; } +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION if ( ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && ( *renderer_type == RENDERER_BINAURAL_FASTCONV ) ) { *internal_config = AUDIO_CONFIG_7_1_4; } +#endif } } else @@ -282,10 +284,12 @@ void ivas_renderer_select( *renderer_type = RENDERER_BINAURAL_FASTCONV_ROOM; } #endif +#ifndef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION if ( ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && ( *renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) { *internal_config = AUDIO_CONFIG_5_1_2; } +#endif } } } diff --git a/lib_dec/ivas_sba_rendering_internal.c b/lib_dec/ivas_sba_rendering_internal.c index aef59a576ed2448715aaa464e284925fdf46e7f1..bc9ce29ca2114d26a6a2d173f33e912ea2845474 100644 --- a/lib_dec/ivas_sba_rendering_internal.c +++ b/lib_dec/ivas_sba_rendering_internal.c @@ -212,6 +212,82 @@ void ivas_mc2sba( return; } +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION +/*-------------------------------------------------------------------------* + * ivas_param_mc_mc2sba_cldfb() + * + * MC signals transformed into SBA in CLDFB domain + * used for binaural rendering with head rotation + *-------------------------------------------------------------------------*/ + +void ivas_param_mc_mc2sba_cldfb( + IVAS_OUTPUT_SETUP hTransSetup, /* i : transported MC Format */ + float *hoa_encoder, /* i : HOA3 encoder for the transported MC format */ + const int16_t slot_idx, /* i : current slot in the subframe */ + float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */ + float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */ + const int16_t nBands, /* i : number of synth CLDFB bands */ + const float gain_lfe /* i : gain applied to LFE */ +) +{ + int16_t idx_ch, idx_band; + int16_t idx_lfe, idx_in, idx_out; + float Cldfb_RealBuffer_tmp[MAX_INTERN_CHANNELS][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_tmp[MAX_INTERN_CHANNELS][CLDFB_NO_CHANNELS_MAX]; + float *gains; + int16_t sba_num_chans; + + /* Init*/ + sba_num_chans = MAX_INTERN_CHANNELS; + + for ( idx_ch = 0; idx_ch < sba_num_chans; idx_ch++ ) + { + set_zero( Cldfb_RealBuffer_tmp[idx_ch], CLDFB_NO_CHANNELS_MAX ); + set_zero( Cldfb_ImagBuffer_tmp[idx_ch], CLDFB_NO_CHANNELS_MAX ); + } + + idx_lfe = 0; + idx_in = 0; + for ( idx_ch = 0; idx_ch < hTransSetup.nchan_out_woLFE + hTransSetup.num_lfe; idx_ch++ ) + { + if ( ( hTransSetup.num_lfe > 0 ) && ( idx_ch == hTransSetup.index_lfe[idx_lfe] ) ) + { + if ( gain_lfe > 0.f ) + { + /* Add LFE to Omni Channel i.e. W (Just first Band) */ + Cldfb_RealBuffer_tmp[0][0] += gain_lfe * Cldfb_RealBuffer[idx_ch][slot_idx][0]; + Cldfb_ImagBuffer_tmp[0][0] += gain_lfe * Cldfb_ImagBuffer[idx_ch][slot_idx][0]; + } + if ( idx_lfe < ( hTransSetup.num_lfe - 1 ) ) + { + idx_lfe++; + } + } + else + { + gains = hoa_encoder + idx_in * sba_num_chans; + for ( idx_out = 0; idx_out < sba_num_chans; idx_out++ ) + { + for ( idx_band = 0; idx_band < nBands; idx_band++ ) + { + Cldfb_RealBuffer_tmp[idx_out][idx_band] += ( *gains ) * Cldfb_RealBuffer[idx_ch][slot_idx][idx_band]; + Cldfb_ImagBuffer_tmp[idx_out][idx_band] += ( *gains ) * Cldfb_ImagBuffer[idx_ch][slot_idx][idx_band]; + } + gains++; + } + idx_in++; + } + } + + for ( idx_ch = 0; idx_ch < sba_num_chans; idx_ch++ ) + { + mvr2r( Cldfb_RealBuffer_tmp[idx_ch], Cldfb_RealBuffer[idx_ch][slot_idx], nBands ); + mvr2r( Cldfb_ImagBuffer_tmp[idx_ch], Cldfb_ImagBuffer[idx_ch][slot_idx], nBands ); + } + + return; +} +#endif /*-------------------------------------------------------------------* * ivas_sba_remapTCs() diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index 9cc26a06ce585d27a2252a731c5f35afcfd2a03b..5f946d48ada02810e6abb68eea36b4e3da7f31b3 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -550,7 +550,9 @@ typedef struct ivas_mc_paramupmix_dec_data_structure float alpha_sf[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS]; float beta_sf[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS]; int16_t free_param_interpolator; - +#ifdef NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION + float *hoa_encoder; +#endif } MC_PARAMUPMIX_DEC_DATA, *MC_PARAMUPMIX_DEC_HANDLE;