Commit afde1c1e authored by TYAGIRIS's avatar TYAGIRIS
Browse files

cldfb in lc3plus coding, bug fix for q fact of TD in to lc3plus

parent 5cf2942c
Loading
Loading
Loading
Loading
Loading
+22 −9
Original line number Diff line number Diff line
@@ -474,28 +474,40 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
            num_slots = shr( tmp, sub( 15, tmp_e ) ); // Q0
                                                      // num_slots = (Word16) CLDFB_NO_COL_MAX * ivas_fs  / 20;
            /* CLDFB synthesis of main pose */
            FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
            {
                Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX];
                Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX];
                q1 = 31;
                q2 = 31;
                move16();
                move16();
                FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
                {
                    FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ )
                    {
                        q1 = s_min( getScaleFactor32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q1 );
                        q2 = s_min( getScaleFactor32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q2 );
                    }
                }

                q_final = s_min( q1, q2 );
                q_final = s_min( add( Q_buff_re, q_final ), add( Q_buff_im, q_final ) );
                q_final = sub( q_final, 3 ); // guard bits
                q_final = s_min( q_final, Q25 );

                FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
                {
                    FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ )
                    {
                        Scale_sig32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_re ) );
                        Scale_sig32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_im ) );
                    }
                }
            }

            FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
            {
                Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX];
                Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX];


                FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ )
                {
@@ -514,6 +526,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural(
                hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state = Q_out[ch];
                move16();
            }
            assert( Q_out[0] == Q_out[1] );

#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS
            available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written;