Loading lib_com/ivas_prot_fx.h +13 −8 Original line number Diff line number Diff line Loading @@ -2060,23 +2060,28 @@ UWord32 ivas_syn_output_fx( Word16 *synth_out /* o : integer 16 bits synthesis signal */ ); #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio_in, /* i : interleaved audio buffer */ Word32 *audio_out[], /* o : pointers to each channel of deinterleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length /* i : frame length (one channel) */ ); #else void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio, /* i/o: audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ #else const Word16 n_samp_full /* i : full frame length (one channel) */ #endif ); #endif #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_deinterleaved_to_interleaved_fx( Word32 *audio, /* i/o: audio buffer */ Word32 *audio_in[], /* i : pointers to each channel of deinterleaved audio buffer */ Word32 *audio_out, /* o : interleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ const Word16 frame_length /* i : frame length (one channel) */ ); #else void ivas_buffer_deinterleaved_to_interleaved_fx( Loading lib_com/ivas_tools_fx.c +47 −21 Original line number Diff line number Diff line Loading @@ -160,15 +160,43 @@ UWord32 ivas_syn_output_fx( * Convert an interleaved buffer of audio channels to deinterleaved one *-------------------------------------------------------------------*/ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio_in, /* i : interleaved audio buffer */ Word32 *audio_out[], /* o : pointers to each channel of deinterleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length /* i : frame length (one channel) */ ) { Word16 ch, s; Word32 buffer[MAX_TRANSPORT_CHANNELS][MAX_JBM_L_FRAME48k]; /* temp buffer needed when "*audio_in" and "*audio_out[]" point to the same memory */ FOR( ch = 0; ch < n_channels; ch++ ) { FOR( s = 0; s < frame_length; s++ ) { buffer[ch][s] = audio_in[s * n_channels + ch]; move32(); } } FOR( ch = 0; ch < n_channels; ch++ ) { FOR( s = 0; s < frame_length; s++ ) { audio_out[ch][s] = buffer[ch][s]; move32(); } } return; } #else void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio, /* i/o: audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ #else const Word16 n_samp_full /* i : full frame length (one channel) */ #endif ) { Word16 offset, ch, m; Loading @@ -188,15 +216,12 @@ void ivas_buffer_interleaved_to_deinterleaved_fx( FOR( ch = 0; ch < n_channels; ch++ ) { Copy32( buffer[ch], audio + offset, frame_length ); #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER offset = add( offset, deinterleaved_stride ); #else offset = add( offset, n_samp_full ); #endif } return; } #endif /*-------------------------------------------------------------------* Loading @@ -207,28 +232,29 @@ void ivas_buffer_interleaved_to_deinterleaved_fx( #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_deinterleaved_to_interleaved_fx( Word32 *audio, /* i/o: audio buffer */ Word32 *audio_in[], /* i : pointers to each channel of deinterleaved audio buffer */ Word32 *audio_out, /* o : interleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ const Word16 frame_length /* i : frame length (one channel) */ ) { Word16 offset, ch, m; Word32 buffer[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; Word16 ch, s; Word32 buffer[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; /* temp buffer needed when "*audio_in[]" and "*audio_out" point to the same memory */ offset = 0; move16(); FOR( ch = 0; ch < n_channels; ch++ ) { Copy32( audio + offset, buffer[ch], frame_length ); offset = add( offset, deinterleaved_stride ); FOR( s = 0; s < frame_length; s++ ) { buffer[ch][s] = audio_in[ch][s]; move32(); } } FOR( ch = 0; ch < n_channels; ch++ ) { FOR( m = 0; m < frame_length; m++ ) FOR( s = 0; s < frame_length; s++ ) { audio[m * n_channels + ch] = buffer[ch][m]; audio_out[s * n_channels + ch] = buffer[ch][s]; move32(); } } Loading lib_dec/ivas_dec_fx.c +0 −4 Original line number Diff line number Diff line Loading @@ -1262,10 +1262,6 @@ static ivas_error ivas_dec_tc_audio_allocate_fx( move16(); } #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER hTcBuffer->tc_stride = n_samp_full; move16(); #endif nsamp_to_allocate = imult1616( s_max( hTcBuffer->nchan_transport_rend, hTcBuffer->nchan_buffer_full ), n_samp_full ); IF( Opt_tsm ) Loading lib_dec/ivas_stat_dec.h +9 −12 Original line number Diff line number Diff line Loading @@ -1001,9 +1001,6 @@ typedef struct decoder_tc_buffer_structure Word32 *tc_buffer_old_fx[MAX_INTERN_CHANNELS]; /* TC audio samples not rendered in the previous frame */ Word32 *tc_buffer_fx; /* the buffer itself */ Word32 *tc_fx[MAX_INTERN_CHANNELS]; /* pointers into the buffer to the beginning of each tc */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER Word16 tc_stride; /* Stride (offset) between subsequent channel pointers in tc_fx */ #endif Word16 q_tc_fx; /* TC channels Q-factor */ TC_BUFFER_MODE tc_buffer_mode; /* mode of the buffer (no buffering, render buffering, out buffering) */ Word16 nchan_transport_rend; /* number of TCs provided to the renderer */ Loading lib_dec/lib_dec_fx.c +2 −2 Original line number Diff line number Diff line Loading @@ -3935,7 +3935,7 @@ ivas_error IVAS_DEC_GetSamplesDecoder( /* convert deinterleaved decoded TC audio channels buffer to an interleaved one */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER ivas_buffer_deinterleaved_to_interleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, hIvasDec->nSamplesFrame, st_ivas->hTcBuffer->tc_stride ); ivas_buffer_deinterleaved_to_interleaved_fx( st_ivas->p_output_fx, st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, hIvasDec->nSamplesFrame ); #else ivas_buffer_deinterleaved_to_interleaved_fx( st_ivas->p_output_fx, nTransportChannels, hIvasDec->nSamplesFrame, st_ivas->hTcBuffer->tc_buffer_fx ); #endif Loading @@ -3959,7 +3959,7 @@ ivas_error IVAS_DEC_GetSamplesDecoder( /* convert interleaved time-scaled TC audio channels buffer to deinterleaved one */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER ivas_buffer_interleaved_to_deinterleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, nSamplesTcsScaled, st_ivas->hTcBuffer->tc_stride ); ivas_buffer_interleaved_to_deinterleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, st_ivas->p_output_fx, nTransportChannels, nSamplesTcsScaled ); #else ivas_buffer_interleaved_to_deinterleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, nSamplesTcsScaled, NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) ); #endif Loading Loading
lib_com/ivas_prot_fx.h +13 −8 Original line number Diff line number Diff line Loading @@ -2060,23 +2060,28 @@ UWord32 ivas_syn_output_fx( Word16 *synth_out /* o : integer 16 bits synthesis signal */ ); #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio_in, /* i : interleaved audio buffer */ Word32 *audio_out[], /* o : pointers to each channel of deinterleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length /* i : frame length (one channel) */ ); #else void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio, /* i/o: audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ #else const Word16 n_samp_full /* i : full frame length (one channel) */ #endif ); #endif #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_deinterleaved_to_interleaved_fx( Word32 *audio, /* i/o: audio buffer */ Word32 *audio_in[], /* i : pointers to each channel of deinterleaved audio buffer */ Word32 *audio_out, /* o : interleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ const Word16 frame_length /* i : frame length (one channel) */ ); #else void ivas_buffer_deinterleaved_to_interleaved_fx( Loading
lib_com/ivas_tools_fx.c +47 −21 Original line number Diff line number Diff line Loading @@ -160,15 +160,43 @@ UWord32 ivas_syn_output_fx( * Convert an interleaved buffer of audio channels to deinterleaved one *-------------------------------------------------------------------*/ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio_in, /* i : interleaved audio buffer */ Word32 *audio_out[], /* o : pointers to each channel of deinterleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length /* i : frame length (one channel) */ ) { Word16 ch, s; Word32 buffer[MAX_TRANSPORT_CHANNELS][MAX_JBM_L_FRAME48k]; /* temp buffer needed when "*audio_in" and "*audio_out[]" point to the same memory */ FOR( ch = 0; ch < n_channels; ch++ ) { FOR( s = 0; s < frame_length; s++ ) { buffer[ch][s] = audio_in[s * n_channels + ch]; move32(); } } FOR( ch = 0; ch < n_channels; ch++ ) { FOR( s = 0; s < frame_length; s++ ) { audio_out[ch][s] = buffer[ch][s]; move32(); } } return; } #else void ivas_buffer_interleaved_to_deinterleaved_fx( Word32 *audio, /* i/o: audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ #else const Word16 n_samp_full /* i : full frame length (one channel) */ #endif ) { Word16 offset, ch, m; Loading @@ -188,15 +216,12 @@ void ivas_buffer_interleaved_to_deinterleaved_fx( FOR( ch = 0; ch < n_channels; ch++ ) { Copy32( buffer[ch], audio + offset, frame_length ); #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER offset = add( offset, deinterleaved_stride ); #else offset = add( offset, n_samp_full ); #endif } return; } #endif /*-------------------------------------------------------------------* Loading @@ -207,28 +232,29 @@ void ivas_buffer_interleaved_to_deinterleaved_fx( #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER void ivas_buffer_deinterleaved_to_interleaved_fx( Word32 *audio, /* i/o: audio buffer */ Word32 *audio_in[], /* i : pointers to each channel of deinterleaved audio buffer */ Word32 *audio_out, /* o : interleaved audio buffer */ const Word16 n_channels, /* i : number of channels */ const Word16 frame_length, /* i : frame length (one channel) */ const Word16 deinterleaved_stride /* i : offset between subsequent channels in deinterleaved layout */ const Word16 frame_length /* i : frame length (one channel) */ ) { Word16 offset, ch, m; Word32 buffer[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; Word16 ch, s; Word32 buffer[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; /* temp buffer needed when "*audio_in[]" and "*audio_out" point to the same memory */ offset = 0; move16(); FOR( ch = 0; ch < n_channels; ch++ ) { Copy32( audio + offset, buffer[ch], frame_length ); offset = add( offset, deinterleaved_stride ); FOR( s = 0; s < frame_length; s++ ) { buffer[ch][s] = audio_in[ch][s]; move32(); } } FOR( ch = 0; ch < n_channels; ch++ ) { FOR( m = 0; m < frame_length; m++ ) FOR( s = 0; s < frame_length; s++ ) { audio[m * n_channels + ch] = buffer[ch][m]; audio_out[s * n_channels + ch] = buffer[ch][s]; move32(); } } Loading
lib_dec/ivas_dec_fx.c +0 −4 Original line number Diff line number Diff line Loading @@ -1262,10 +1262,6 @@ static ivas_error ivas_dec_tc_audio_allocate_fx( move16(); } #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER hTcBuffer->tc_stride = n_samp_full; move16(); #endif nsamp_to_allocate = imult1616( s_max( hTcBuffer->nchan_transport_rend, hTcBuffer->nchan_buffer_full ), n_samp_full ); IF( Opt_tsm ) Loading
lib_dec/ivas_stat_dec.h +9 −12 Original line number Diff line number Diff line Loading @@ -1001,9 +1001,6 @@ typedef struct decoder_tc_buffer_structure Word32 *tc_buffer_old_fx[MAX_INTERN_CHANNELS]; /* TC audio samples not rendered in the previous frame */ Word32 *tc_buffer_fx; /* the buffer itself */ Word32 *tc_fx[MAX_INTERN_CHANNELS]; /* pointers into the buffer to the beginning of each tc */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER Word16 tc_stride; /* Stride (offset) between subsequent channel pointers in tc_fx */ #endif Word16 q_tc_fx; /* TC channels Q-factor */ TC_BUFFER_MODE tc_buffer_mode; /* mode of the buffer (no buffering, render buffering, out buffering) */ Word16 nchan_transport_rend; /* number of TCs provided to the renderer */ Loading
lib_dec/lib_dec_fx.c +2 −2 Original line number Diff line number Diff line Loading @@ -3935,7 +3935,7 @@ ivas_error IVAS_DEC_GetSamplesDecoder( /* convert deinterleaved decoded TC audio channels buffer to an interleaved one */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER ivas_buffer_deinterleaved_to_interleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, hIvasDec->nSamplesFrame, st_ivas->hTcBuffer->tc_stride ); ivas_buffer_deinterleaved_to_interleaved_fx( st_ivas->p_output_fx, st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, hIvasDec->nSamplesFrame ); #else ivas_buffer_deinterleaved_to_interleaved_fx( st_ivas->p_output_fx, nTransportChannels, hIvasDec->nSamplesFrame, st_ivas->hTcBuffer->tc_buffer_fx ); #endif Loading @@ -3959,7 +3959,7 @@ ivas_error IVAS_DEC_GetSamplesDecoder( /* convert interleaved time-scaled TC audio channels buffer to deinterleaved one */ #ifdef FIX_2396_CONSTANT_STRIDE_IN_TC_BUFFER ivas_buffer_interleaved_to_deinterleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, nSamplesTcsScaled, st_ivas->hTcBuffer->tc_stride ); ivas_buffer_interleaved_to_deinterleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, st_ivas->p_output_fx, nTransportChannels, nSamplesTcsScaled ); #else ivas_buffer_interleaved_to_deinterleaved_fx( st_ivas->hTcBuffer->tc_buffer_fx, nTransportChannels, nSamplesTcsScaled, NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) ); #endif Loading