Commit 48d35918 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

basop updates in few functions

parent 61b5fdca
Loading
Loading
Loading
Loading
Loading
+60 −2
Original line number Diff line number Diff line
@@ -1422,6 +1422,64 @@ ivas_error openCldfb_ivas(
    return IVAS_ERR_OK;
}

#ifdef IVAS_FLOAT_FIXED
ivas_error openCldfb_ivas_fx(
    HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle                */
    CLDFB_TYPE type,                   /* i  : analysis or synthesis             */
    const Word32 sampling_rate,       /* i  : sampling rate                     */
    CLDFB_PROTOTYPE prototype          /* i  : CLDFB version (1.25ms/5ms delay)  */
)
{
    HANDLE_CLDFB_FILTER_BANK hs;
    Word16 buf_len;

    IF ( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL )
    {
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" );
    }

    hs->type = type;
    move16();
    hs->prototype = prototype;
    move16();

    configureCldfb_ivas( hs, sampling_rate );
    hs->memory_flt = NULL;
    hs->memory_length = 0;
    move16();

    IF ( EQ_32( type, CLDFB_ANALYSIS ) )
    {
        buf_len = sub( hs->p_filter_length, hs->no_channels );
    }
    ELSE
    {
        buf_len = hs->p_filter_length;
        move16();
    }

    IF ( ( hs->cldfb_state_fx = (Word16 *) malloc( buf_len * sizeof( Word16 ) ) ) == NULL )
    {
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" );
    }

    set_s(hs->cldfb_state_fx, 0, buf_len);

    /* TODO: remove the floating point dependency */

    IF ( ( hs->cldfb_state = (float *) malloc( buf_len * sizeof( float ) ) ) == NULL )
    {
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" );
    }

    set_f( hs->cldfb_state, 0.0f, buf_len );

    *h_cldfb = hs;
    move16();

    return IVAS_ERR_OK;
}
#endif

/*-------------------------------------------------------------------*
 * resampleCldfb_ivas()
@@ -1570,12 +1628,12 @@ void deleteCldfb_ivas(
{
    HANDLE_CLDFB_FILTER_BANK hs = *h_cldfb;

    if ( h_cldfb == NULL || *h_cldfb == NULL )
    IF ( h_cldfb == NULL || *h_cldfb == NULL )
    {
        return;
    }

    if ( hs->cldfb_state )
    IF ( hs->cldfb_state )
    {
        free( hs->cldfb_state );
    }
+1 −1
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ void deleteFdCngCom_flt(
{
    HANDLE_FD_CNG_COM hsCom = *hFdCngCom;

    if ( hsCom != NULL )
    IF ( hsCom != NULL )
    {
        free( hsCom );
        *hFdCngCom = NULL;
+341 −0
Original line number Diff line number Diff line
@@ -357,6 +357,347 @@ int16_t IGF_MapBitRateToIndex_flt(
    return bitRateIndex;
}

#ifdef IVAS_FLOAT_FIXED
Word16 IGF_MapBitRateToIndex(
    const Word32 brate,        /* i  :  bitrate                    */
    const Word16 bwidth,       /* i  :  audio bandwidth            */
    const Word16 element_mode, /* i  :  element mode               */
    const Word16 rf_mode       /* i  :  flag to signal the RF mode */
)
{
    Word16 bitRateIndex = IGF_BITRATE_UNKNOWN;
    move16();

    /* Stereo/CPE modes */
    IF ( GT_16( element_mode, IVAS_SCE ) )
    {
        SWITCH ( bwidth )
        {
            case IGF_MODE_WB:
                IF ( LE_32( brate, IVAS_13k2 ) && EQ_16( rf_mode, 1 ) )
                {
                    bitRateIndex = IGF_BITRATE_RF_WB_13200;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_9k60 ) )
                {
                    bitRateIndex = IGF_BITRATE_WB_13200_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_13k2 ) )
                {
                    bitRateIndex = IGF_BITRATE_WB_16400_CPE;
                    move16();
                }
                BREAK;
            case IGF_MODE_SWB:
                /* DFT and TD Stereo bitrates */
                IF ( LE_32( brate, ACELP_9k60 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_13200_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_13k2 ) )
                {
                    IF ( EQ_16( rf_mode, 1 ) )
                    {
                        bitRateIndex = IGF_BITRATE_RF_SWB_13200;
                        move16();
                    }
                    ELSE
                    {
                        bitRateIndex = IGF_BITRATE_SWB_16400_CPE;
                        move16();
                    }
                }
                ELSE IF ( LE_32( brate, IVAS_16k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_24400_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_24k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_32000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_32k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_32000;
                    move16();
                }
                /* MDCT Stereo bitrates */
                ELSE IF ( LE_32( brate, IVAS_48k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_48000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_64k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_64000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_80k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_80000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_96k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_96000_CPE;
                    move16();
                }
                BREAK;
            case IGF_MODE_FB:
                /* DFT and TD Stereo bitrates */
                IF ( LE_32( brate, IVAS_16k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_24400_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_24k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_32000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_32k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_32000;
                    move16();
                }
                /* MDCT Stereo bitrates */
                ELSE IF ( LE_32( brate, IVAS_48k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_48000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_64k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_64000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_80k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_80000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_96k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_96000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_128k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_128000_CPE;
                    move16();
                }
                BREAK;
        }
    }
    /* SCE modes: use tunings done for DFT stereo bitrates also for according SCE bitrates, otherwise same config as mono modes */
    ELSE IF ( EQ_16( element_mode, IVAS_SCE ) )
    {
        SWITCH ( bwidth )
        {
            case IGF_MODE_WB:
                IF ( LE_32( brate, IVAS_13k2 ) && EQ_16( rf_mode, 1 ) )
                {
                    bitRateIndex = IGF_BITRATE_RF_WB_13200;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_9k60 ) ) /* bitrates 8000 and 9600 */
                {
                    bitRateIndex = IGF_BITRATE_WB_9600;
                    move16();
                }
                BREAK;
            case IGF_MODE_SWB:
                IF ( LE_32( brate, ACELP_9k60 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_13200_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_13k2 ) )
                {
                    IF ( EQ_16( rf_mode, 1 ) )
                    {
                        bitRateIndex = IGF_BITRATE_RF_SWB_13200;
                        move16();
                    }
                    ELSE
                    {
                        bitRateIndex = IGF_BITRATE_SWB_16400_CPE;
                        move16();
                    }
                }
                ELSE IF ( LE_32( brate, IVAS_16k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_24400_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_24k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_32000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_32k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_32000;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_48k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_48000;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_64k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_64000;
                    move16();
                }
                BREAK;
            case IGF_MODE_FB:
                IF ( LE_32( brate, IVAS_16k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_24400_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_24k4 ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_32000_CPE;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_32k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_32000;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_48k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_48000;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_64k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_64000;
                }
                ELSE IF ( LE_32( brate, IVAS_96k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_96000;
                    move16();
                }
                ELSE IF ( LE_32( brate, IVAS_128k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_128000;
                    move16();
                }
                BREAK;
        }
    }
    /* EVS mono */
    ELSE
    {
        SWITCH ( bwidth )
        {
            case IGF_MODE_WB:
                IF ( LE_32( brate, ACELP_13k20 ) && EQ_16( rf_mode, 1 ) )
                {
                    bitRateIndex = IGF_BITRATE_RF_WB_13200;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_9k60 ) ) /* bitrates 8000 and 9600 */
                {
                    bitRateIndex = IGF_BITRATE_WB_9600;
                    move16();
                }
                BREAK;
            case IGF_MODE_SWB:
                IF ( LE_32( brate, ACELP_9k60 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_9600;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_13k20 ) )
                {
                    IF ( EQ_16( rf_mode, 1 ) )
                    {
                        bitRateIndex = IGF_BITRATE_RF_SWB_13200;
                        move16();
                    }
                    ELSE
                    {
                        bitRateIndex = IGF_BITRATE_SWB_13200;
                        move16();
                    }
                }
                ELSE IF ( LE_32( brate, ACELP_16k40 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_16400;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_24k40 ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_24400;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_32k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_32000;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_48k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_48000;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_64k ) )
                {
                    bitRateIndex = IGF_BITRATE_SWB_64000;
                    move16();
                }
                BREAK;
            case IGF_MODE_FB:
                IF ( LE_32( brate, ACELP_16k40 ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_16400;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_24k40 ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_24400;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_32k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_32000;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_48k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_48000;
                    move16();
                }
                ELSE IF ( LE_32( brate, ACELP_64k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_64000;
                    move16();
                }
                ELSE IF ( LE_32( brate, HQ_96k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_96000;
                    move16();
                }
                ELSE IF ( LE_32( brate, HQ_128k ) )
                {
                    bitRateIndex = IGF_BITRATE_FB_128000;
                    move16();
                }
                BREAK;
        }
    }

    return bitRateIndex;
}
#endif

/*---------------------------------------------------------------------*
 * IGF_gridSetUp_flt()
+3 −3
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ static Word16 IGF_MapBitRateToIndex(
    /* Stereo/CPE modes */
    IF(GT_16(element_mode, IVAS_SCE))
    {
        switch (bwidth)
        SWITCH (bwidth)
        {
        case IGF_MODE_WB:
            IF(LE_32(brate, IVAS_13k2) && EQ_16(rf_mode, 1))
@@ -176,7 +176,7 @@ static Word16 IGF_MapBitRateToIndex(
    /* SCE modes: use tunings done for DFT stereo bitrates also for according SCE bitrates, otherwise same config as mono modes */
    ELSE IF(EQ_16(element_mode, IVAS_SCE))
    {
        switch (bwidth)
        SWITCH (bwidth)
        {
        case IGF_MODE_WB:
            IF(LE_32(brate, IVAS_13k2) && EQ_16(rf_mode, 1) )
@@ -277,7 +277,7 @@ static Word16 IGF_MapBitRateToIndex(
    /* EVS mono */
    else
    {
        switch (bwidth)
        SWITCH (bwidth)
        {
        case IGF_MODE_WB:
            IF(LE_32(brate, ACELP_13k20) && EQ_16(rf_mode, 1))
+378 −9

File changed.

Preview size limit exceeded, changes collapsed.

Loading