Commit f66f97e8 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

Merge branch '1646_ref_port_fl11554' into 'ivas-float-update'

[split-non-be] Port MR 1554 into float-pc

See merge request !1725
parents 26d614c0 791bd318
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -180,6 +180,7 @@
#define USE_NEW_HRTF_BINARY_FILE_FORMAT                 /* Orange: to activate when decided to change the hrtf binary file format */
#define FIX_WARNING_RENDER_CONFIG                       /* Orange: fix warning on windows build */
#define NONBE_FIX_991_PARAMBIN_BINARY_HRTF              /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to actiate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on  )*/
#define LC3PLUS_LEA_COMPAT_BITRATES_48_6                /* FhG: treat split-rendering 256kbps lc3plus 10ms 0dof bitrate as sentinel value for LEA compatible 48_6 bitrate (124 kbps per channel)  */
#define NONBE_FIX_1091_PMC_LOW_SIGNAL_BURSTS            /* FhG: fix for #1091, fix limit calculation for the regularized inverse of Kx to avoid bursts in very low signals  */
#define FIX_1053_REVERB_RECONFIGURATION                 /* Philips: issue 1053: fix for dynamic switching of acoustic environment */
#define NONBE_FIX_SBA_SIGNALING_BITS_B                  /* FhG: issue 1061: option B: signal sba order additionally in OSBA */
+8 −0
Original line number Diff line number Diff line
@@ -290,6 +290,14 @@ void isar_set_split_rend_ht_setup(
    float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] );


#ifdef LC3PLUS_LEA_COMPAT_BITRATES_48_6
int32_t isar_get_lc3plus_bitrate(
    const int32_t SplitRendBitRate,
    const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
    const int32_t nChannels,
    const int32_t codecFrameDurationUs );
#endif

ivas_error isar_split_rend_validate_config(
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,
    const int16_t pcm_out_flag );
+15 −0
Original line number Diff line number Diff line
@@ -1744,7 +1744,11 @@ ivas_error split_renderer_open_lc3plus(
    config.channels = BINAURAL_CHANNELS;

    if ( ( error = ISAR_LC3PLUS_ENC_Open( config,
#ifdef LC3PLUS_LEA_COMPAT_BITRATES_48_6
                                          isar_get_lc3plus_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode, config.channels, config.lc3plus_frame_duration_us ),
#else
                                          isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode ),
#endif
                                          &hSplitRendWrapper->hLc3plusEnc ) ) != IVAS_ERR_OK )
    {
        return error;
@@ -1963,7 +1967,18 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
        }
        else
        {
#ifdef LC3PLUS_LEA_COMPAT_BITRATES_48_6
            if ( pBits->pose_correction == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE )
            {
                available_bits = isar_get_lc3plus_bitrate( SplitRendBitRate, hSplitBin->multiBinPoseData.poseCorrectionMode, hSplitBin->hLc3plusEnc->config.channels, hSplitBin->hLc3plusEnc->config.lc3plus_frame_duration_us ) / FRAMES_PER_SEC;
            }
            else
            {
                available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;
            }
#else
            available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;
#endif
            if ( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, in ) ) != IVAS_ERR_OK )
            {
                return error;
+26 −0
Original line number Diff line number Diff line
@@ -562,6 +562,32 @@ int32_t isar_get_lcld_bitrate(
    return -1;
}

#ifdef LC3PLUS_LEA_COMPAT_BITRATES_48_6
/*-------------------------------------------------------------------------
 * Function isar_get_lc3plus_bitrate()
 *
 *
 *------------------------------------------------------------------------*/

int32_t isar_get_lc3plus_bitrate(
    const int32_t SplitRendBitRate,
    const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
    const int32_t nChannels,
    const int32_t codecFrameDurationUs )
{
    int32_t bitrate;
    bitrate = isar_get_lcld_bitrate( SplitRendBitRate, poseCorrectionMode );
    /* Check for LC3plus LEA 48_6 LC3 compatibility mode signalling */
    if ( ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE == poseCorrectionMode && bitrate == 256000 && nChannels == 2 && codecFrameDurationUs == 10000 )
    {


        bitrate = 2 * 126000;
    }
    return bitrate;
}
#endif


/*-------------------------------------------------------------------------
 * Function isar_split_rend_validate_config()
+12 −0
Original line number Diff line number Diff line
@@ -389,7 +389,19 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
                cldfbSynthesis( Cldfb_In_BinReal_p, Cldfb_In_BinImag_p, output[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, hSplitBin->hCldfbHandles->cldfbSyn[ch] );
            }


#ifdef LC3PLUS_LEA_COMPAT_BITRATES_48_6
            if ( pBits->pose_correction == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE )
            {
                available_bits = isar_get_lc3plus_bitrate( SplitRendBitRate, hSplitBin->multiBinPoseData.poseCorrectionMode, hSplitBin->hLc3plusEnc->config.channels, hSplitBin->hLc3plusEnc->config.lc3plus_frame_duration_us ) / FRAMES_PER_SEC;
            }
            else
            {
                available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;
            }
#else
            available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;
#endif
            if ( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, output ) ) != IVAS_ERR_OK )
            {
                return error;