Loading lib_dec/lib_dec.c +3 −2 Original line number Diff line number Diff line Loading @@ -1258,8 +1258,9 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( ivas_set_split_rend_setup( hSplitBinRend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hCombinedOrientationData, hSplitRendBits ); numPoses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; if ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || hIvasDec->st_ivas->hRenderConfig->split_rend_config.dof == 0 ) if ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || hIvasDec->st_ivas->hRenderConfig->split_rend_config.dof == 0 ) ) { numSamplesPerChannelToSplitEncode = (int16_t) ( output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); numSamplesPerChannelCacheSize = numSamplesPerChannelToDecode - numSamplesPerChannelToSplitEncode; Loading lib_rend/lib_rend.c +26 −14 Original line number Diff line number Diff line Loading @@ -7787,6 +7787,14 @@ static ivas_error renderSplitBinauralWithPostRot( COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; SPLIT_POST_REND_WRAPPER *hSplitBin; int8_t isPostRendInputCldfb; #ifdef API_5MS int16_t chnlIdx, slotIdx, smplIdx; int16_t preRendFrameSize_ms; int16_t outBufNumSamplesPerChannel, outBufNumColPerChannel; int16_t numSamplesPerChannelCacheSize, numColPerChannelCacheSize; float *readPtr, *writePtr; #endif isPostRendInputCldfb = 0; Loading Loading @@ -7876,12 +7884,14 @@ static ivas_error renderSplitBinauralWithPostRot( { isPostRendInputCldfb = 1; } int16_t chnlIdx, slotIdx, smplIdx; int16_t pre_rend_frame_size_ms = bits.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ? hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 : 20; int16_t numSamplesPerChannelCacheSize = *splitBinInput->base.ctx.pOutSampleRate * ( pre_rend_frame_size_ms - bits.codec_frame_size_ms ) / 1000; int16_t out_buffer_num_samples_per_channel = outAudio.config.numSamplesPerChannel; int16_t out_buffer_num_col_per_channel = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; int16_t numColPerChannelCacheSize = CLDFB_NO_COL_MAX - out_buffer_num_col_per_channel; preRendFrameSize_ms = bits.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ? hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 : 20; outBufNumSamplesPerChannel = outAudio.config.numSamplesPerChannel; numSamplesPerChannelCacheSize = *splitBinInput->base.ctx.pOutSampleRate * ( preRendFrameSize_ms - bits.codec_frame_size_ms ) / 1000; outBufNumColPerChannel = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; numColPerChannelCacheSize = CLDFB_NO_COL_MAX - outBufNumColPerChannel; if ( splitBinInput->numCachedSamples == 0 ) { Loading Loading @@ -7910,7 +7920,6 @@ static ivas_error renderSplitBinauralWithPostRot( } /* cache the remaining 15ms */ splitBinInput->numCachedSamples = numColPerChannelCacheSize; float *writePtr; writePtr = splitBinInput->bufferData; for ( slotIdx = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) { Loading Loading @@ -7938,10 +7947,10 @@ static ivas_error renderSplitBinauralWithPostRot( #ifdef API_5MS /* cache the remaining 15ms */ splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize; mvr2r( &tmpCrendBuffer[0][out_buffer_num_samples_per_channel], mvr2r( &tmpCrendBuffer[0][outBufNumSamplesPerChannel], splitBinInput->bufferData, numSamplesPerChannelCacheSize ); mvr2r( &tmpCrendBuffer[1][out_buffer_num_samples_per_channel], mvr2r( &tmpCrendBuffer[1][outBufNumSamplesPerChannel], splitBinInput->bufferData + numSamplesPerChannelCacheSize, numSamplesPerChannelCacheSize ); #endif Loading @@ -7954,7 +7963,6 @@ static ivas_error renderSplitBinauralWithPostRot( if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD ) { int16_t readOffset = ( numColPerChannelCacheSize - splitBinInput->numCachedSamples ); float *readPtr; readPtr = splitBinInput->bufferData; isPostRendInputCldfb = 1; Loading @@ -7974,14 +7982,18 @@ static ivas_error renderSplitBinauralWithPostRot( } } splitBinInput->numCachedSamples -= out_buffer_num_col_per_channel; splitBinInput->numCachedSamples -= outBufNumColPerChannel; } else { int16_t readOffset = numSamplesPerChannelCacheSize - splitBinInput->numCachedSamples; mvr2r( splitBinInput->bufferData + readOffset, tmpCrendBuffer[0], out_buffer_num_samples_per_channel ); mvr2r( numSamplesPerChannelCacheSize + splitBinInput->bufferData + readOffset, tmpCrendBuffer[1], out_buffer_num_samples_per_channel ); splitBinInput->numCachedSamples -= out_buffer_num_samples_per_channel; mvr2r( splitBinInput->bufferData + readOffset, tmpCrendBuffer[0], outBufNumSamplesPerChannel ); mvr2r( splitBinInput->bufferData + readOffset + numSamplesPerChannelCacheSize, tmpCrendBuffer[1], outBufNumSamplesPerChannel ); splitBinInput->numCachedSamples -= outBufNumSamplesPerChannel; } } #endif Loading Loading
lib_dec/lib_dec.c +3 −2 Original line number Diff line number Diff line Loading @@ -1258,8 +1258,9 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( ivas_set_split_rend_setup( hSplitBinRend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hCombinedOrientationData, hSplitRendBits ); numPoses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; if ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || hIvasDec->st_ivas->hRenderConfig->split_rend_config.dof == 0 ) if ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || hIvasDec->st_ivas->hRenderConfig->split_rend_config.dof == 0 ) ) { numSamplesPerChannelToSplitEncode = (int16_t) ( output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); numSamplesPerChannelCacheSize = numSamplesPerChannelToDecode - numSamplesPerChannelToSplitEncode; Loading
lib_rend/lib_rend.c +26 −14 Original line number Diff line number Diff line Loading @@ -7787,6 +7787,14 @@ static ivas_error renderSplitBinauralWithPostRot( COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; SPLIT_POST_REND_WRAPPER *hSplitBin; int8_t isPostRendInputCldfb; #ifdef API_5MS int16_t chnlIdx, slotIdx, smplIdx; int16_t preRendFrameSize_ms; int16_t outBufNumSamplesPerChannel, outBufNumColPerChannel; int16_t numSamplesPerChannelCacheSize, numColPerChannelCacheSize; float *readPtr, *writePtr; #endif isPostRendInputCldfb = 0; Loading Loading @@ -7876,12 +7884,14 @@ static ivas_error renderSplitBinauralWithPostRot( { isPostRendInputCldfb = 1; } int16_t chnlIdx, slotIdx, smplIdx; int16_t pre_rend_frame_size_ms = bits.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ? hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 : 20; int16_t numSamplesPerChannelCacheSize = *splitBinInput->base.ctx.pOutSampleRate * ( pre_rend_frame_size_ms - bits.codec_frame_size_ms ) / 1000; int16_t out_buffer_num_samples_per_channel = outAudio.config.numSamplesPerChannel; int16_t out_buffer_num_col_per_channel = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; int16_t numColPerChannelCacheSize = CLDFB_NO_COL_MAX - out_buffer_num_col_per_channel; preRendFrameSize_ms = bits.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ? hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 : 20; outBufNumSamplesPerChannel = outAudio.config.numSamplesPerChannel; numSamplesPerChannelCacheSize = *splitBinInput->base.ctx.pOutSampleRate * ( preRendFrameSize_ms - bits.codec_frame_size_ms ) / 1000; outBufNumColPerChannel = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; numColPerChannelCacheSize = CLDFB_NO_COL_MAX - outBufNumColPerChannel; if ( splitBinInput->numCachedSamples == 0 ) { Loading Loading @@ -7910,7 +7920,6 @@ static ivas_error renderSplitBinauralWithPostRot( } /* cache the remaining 15ms */ splitBinInput->numCachedSamples = numColPerChannelCacheSize; float *writePtr; writePtr = splitBinInput->bufferData; for ( slotIdx = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) { Loading Loading @@ -7938,10 +7947,10 @@ static ivas_error renderSplitBinauralWithPostRot( #ifdef API_5MS /* cache the remaining 15ms */ splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize; mvr2r( &tmpCrendBuffer[0][out_buffer_num_samples_per_channel], mvr2r( &tmpCrendBuffer[0][outBufNumSamplesPerChannel], splitBinInput->bufferData, numSamplesPerChannelCacheSize ); mvr2r( &tmpCrendBuffer[1][out_buffer_num_samples_per_channel], mvr2r( &tmpCrendBuffer[1][outBufNumSamplesPerChannel], splitBinInput->bufferData + numSamplesPerChannelCacheSize, numSamplesPerChannelCacheSize ); #endif Loading @@ -7954,7 +7963,6 @@ static ivas_error renderSplitBinauralWithPostRot( if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD ) { int16_t readOffset = ( numColPerChannelCacheSize - splitBinInput->numCachedSamples ); float *readPtr; readPtr = splitBinInput->bufferData; isPostRendInputCldfb = 1; Loading @@ -7974,14 +7982,18 @@ static ivas_error renderSplitBinauralWithPostRot( } } splitBinInput->numCachedSamples -= out_buffer_num_col_per_channel; splitBinInput->numCachedSamples -= outBufNumColPerChannel; } else { int16_t readOffset = numSamplesPerChannelCacheSize - splitBinInput->numCachedSamples; mvr2r( splitBinInput->bufferData + readOffset, tmpCrendBuffer[0], out_buffer_num_samples_per_channel ); mvr2r( numSamplesPerChannelCacheSize + splitBinInput->bufferData + readOffset, tmpCrendBuffer[1], out_buffer_num_samples_per_channel ); splitBinInput->numCachedSamples -= out_buffer_num_samples_per_channel; mvr2r( splitBinInput->bufferData + readOffset, tmpCrendBuffer[0], outBufNumSamplesPerChannel ); mvr2r( splitBinInput->bufferData + readOffset + numSamplesPerChannelCacheSize, tmpCrendBuffer[1], outBufNumSamplesPerChannel ); splitBinInput->numCachedSamples -= outBufNumSamplesPerChannel; } } #endif Loading