Commit 923d397d authored by TYAGIRIS's avatar TYAGIRIS
Browse files

q factor fix with TD in to pre renderer

parent e731929c
Loading
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -3129,8 +3129,6 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
    Word16 Q_in = Q_sig, q_final = 0;
    move16();
    move16();
    // float Cldfb_In_BinReal[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
    // float Cldfb_In_BinImag[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
    UWord8 useLc3plus;
    Word32 *in_delayed_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS];
    Word16 i;
@@ -3154,12 +3152,11 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
        {
            /* Artificially delay input to head pose correction analysis by LC3plus coding delay, so that audio and metadata are in sync after decoding */
            mvl2l( hSplitBin->lc3plusDelayBuffers_fx[i] + frame_size, hSplitBin->lc3plusDelayBuffers_fx[i], (Word16) hSplitBin->lc3plusDelaySamples );
            // mvr2r( hSplitBin->lc3plusDelayBuffers[i] + frame_size, hSplitBin->lc3plusDelayBuffers[i], (int16_t) hSplitBin->lc3plusDelaySamples );
            in_delayed_fx[i] = hSplitBin->lc3plusDelayBuffers_fx[i];
            // in_delayed[i] = hSplitBin->lc3plusDelayBuffers[i];
            Scale_sig32( hSplitBin->lc3plusDelayBuffers_fx[i], (Word16) hSplitBin->lc3plusDelaySamples, sub( Q_in, hSplitBin->lc3plusDelayBuffers_q ) );
            mvl2l( in_fx[i], hSplitBin->lc3plusDelayBuffers_fx[i] + hSplitBin->lc3plusDelaySamples, frame_size );
            // mvr2r(in[i], hSplitBin->lc3plusDelayBuffers[i] + hSplitBin->lc3plusDelaySamples, frame_size);
        }
        hSplitBin->lc3plusDelayBuffers_q = Q_in;
    }
    ELSE
    {
@@ -3180,12 +3177,13 @@ ivas_error isar_renderMultiTDBinToSplitBinaural(
    IF( ( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) || ( !useLc3plus && !pcm_out_flag ) )
    {
        Word32 in_delayed_cldfb[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k] = { 0 };
        Word16 gd_bits = sub( Q_sig, Q11 );
        FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; i++ )
        {
            Copy32( in_delayed_fx[i], in_delayed_cldfb[i], L_FRAME48k );
            Scale_sig32( in_delayed_cldfb[i], L_FRAME48k, -4 );
            Scale_sig32( in_delayed_cldfb[i], L_FRAME48k, -gd_bits );
        }
        Q_sig = sub( Q_sig, 4 );
        Q_sig = sub( Q_sig, gd_bits );
        num_slots = ( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ? CLDFB_NO_COL_MAX : ( hSplitBin->hSplitBinLCLDEnc->iNumBlocks * hSplitBin->hSplitBinLCLDEnc->iNumIterations );
        move32();
        num_cldfb_bands = hSplitBin->hCldfbHandles->cldfbAna[0]->no_channels;
+8 −5
Original line number Diff line number Diff line
@@ -7167,6 +7167,8 @@ static ivas_error renderMcToSplitBinaural(
    Word16 exp = *outAudio.pq_fact;
    move16();
    CREND_HANDLE hCrend;
    IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs;
    Word16 q_fact_orig;
#ifdef SPLIT_REND_WITH_HEAD_ROT
    hCrend = mcInput->crendWrapper->hCrend[0];
#else
@@ -7219,17 +7221,18 @@ static ivas_error renderMcToSplitBinaural(
        tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) );
    }

    FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ )
    {
        Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[i], &Quaternions_orig[i] );
    }

    FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ )
    {
        /* Update head positions */
        IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs;
        Word16 q_fact_orig;
        FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ )
        {
            Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[i], &Quaternions_orig[i] );

            Quaternions_abs.w_fx = L_negate( 12582912 ); // Q22
            q_fact_orig = combinedOrientationDataLocal.Quaternions[i].q_fact;
            q_fact_orig = Quaternions_orig[i].q_fact;
            modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Q22 );
            /*euler*/
            Quat2EulerDegree_fx( combinedOrientationDataLocal.Quaternions[i],