Commit 56351722 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Remove extra code and fix sanitizer error.

parent 62b2af45
Loading
Loading
Loading
Loading
Loading
+0 −250
Original line number Diff line number Diff line
@@ -2332,253 +2332,3 @@ static void masa_metadata_direction_alignment(
}
#endif
#ifdef HR_METADATA1
void indexDirection(
    uint16_t *sphIndex,                 /* o  : output index for direction */
    float theta,                        /* i  : input elevation to be indexed */
    float phi,                          /* i  : input azimuth to be indexed  */
    const SPHERICAL_GRID_DATA *gridData /* i  : generated grid data */
)
{
    float abs_theta, phi_q;
    int16_t sign_th, id_phi, id_th;
    int32_t idx_sph;
    int32_t cum_n;

    phi = phi + 180;
    if ( theta < 0 )
    {
        abs_theta = -theta;
        sign_th = -1;
    }
    else
    {
        abs_theta = theta;
        sign_th = 1;
    }

    quantize_theta_phi( gridData->no_theta, gridData->no_phi, abs_theta, &id_phi,
                        phi, &id_th, &phi_q );

    /* Starting from Equator, alternating positive and negative */
    if ( id_th == 0 )
    {
        idx_sph = id_phi;
    }
    else
    {
        if ( id_th == gridData->no_theta - 1 )
        {
            idx_sph = 65534 + ( sign_th < 0 );
        }
        else
        {
            theta = MASA_ANGLE_AT_EQUATOR * (float) ( id_th + 0.5f );
            if ( id_th == 1 )
            {
                cum_n = 2 * (int16_t) ceilf( MASA_NTOT2_FAC * ( sinf( theta ) - MASA_ASIN_OFFSET ) );
            }
            else
            {
                cum_n = 2 * (int16_t) roundf( MASA_NTOT2_FAC * ( sinf( theta ) - MASA_ASIN_OFFSET ) );
            }
            cum_n += gridData->no_phi[0];
            if ( sign_th > 0 )
            {
                cum_n -= 2 * gridData->no_phi[id_th];
            }
            else
            {
                cum_n -= gridData->no_phi[id_th];
            }
            idx_sph = cum_n + id_phi;
        }
    }

    *sphIndex = idx_sph;
}

int16_t quantize_theta(                /* o  : index of quantized value */
                        float x,       /* i  : theta value to be quantized */
                        int16_t no_cb, /* i  : number of codewords */
                        float *xhat    /* o  : quantized value */
)
{
    int16_t imin;

    float diff1, diff2;


    imin = (int16_t) ( x * MASA_INV_ANGLE_AT_EQUATOR_DEG + 0.5f );

    if ( imin >= no_cb - 1 )
    {
        imin = no_cb - 1;
        diff1 = x - 90;
        diff2 = x - MASA_ANGLE_AT_EQUATOR_DEG * ( imin - 1 );
        if ( fabsf( diff1 ) > fabsf( diff2 ) )
        {
            imin--;
            *xhat = imin * MASA_ANGLE_AT_EQUATOR_DEG;
        }
        else
        {
            *xhat = 90;
        }
    }
    else
    {
        *xhat = imin * MASA_ANGLE_AT_EQUATOR_DEG;
    }

    return imin;
}

void quantize_theta_phi(
    const int16_t no_th,       /* i  : elevation codebook size */
    const int16_t *no_phi_loc, /* i  : number of azimuth values for each elevation codeword */
    const float abs_theta,     /* i  : absolute value of elevation to be quantized */
    int16_t *id_phi,           /* o  : azimuth index */
    const float phi,           /* i  : input azimuth value; to be quantized  */
    int16_t *id_theta,         /* o  : elevation index */
    float *phi_q               /* o  : rotated quantized azimuth */
)
{
    float theta_hat, theta_hat1, phi_hat, phi_hat1;
    int16_t id_th, id_th1, id_th2, id_ph, id_ph1;
    float d, d1;
    float diff1, diff2;

    theta_hat = 0; /* to remove warning */
    id_th = quantize_theta( abs_theta, no_th, &theta_hat );
    if ( no_th > 1 )
    {
        if ( id_th == 0 )
        {
            id_th1 = 1;
        }
        else if ( id_th == no_th - 1 )
        {
            id_th1 = no_th - 2;
        }
        else
        {
            id_th1 = id_th - 1;
            id_th2 = id_th + 1;

            diff1 = abs_theta - id_th1 * MASA_ANGLE_AT_EQUATOR_DEG;
            diff2 = abs_theta - MASA_ANGLE_AT_EQUATOR_DEG * id_th2;
            if ( id_th2 == no_th - 1 )
            {
                diff2 = abs_theta - 90;
            }
            if ( fabsf( diff1 ) > fabsf( diff2 ) )
            {
                id_th1 = id_th2;
            }
        }

        theta_hat1 = MASA_ANGLE_AT_EQUATOR_DEG * id_th1;

        if ( id_th1 == no_th - 1 )
        {
            theta_hat1 = 90;
        }


        if ( no_phi_loc[id_th] > 1 )
        {
            id_ph = quantize_phi( phi, ( id_th % 2 == 1 ), &phi_hat, no_phi_loc[id_th] );
        }
        else
        {
            id_ph = MASA_NO_INDEX;
            phi_hat = 180;
            *phi_q = 0;
        }
        if ( ( no_phi_loc[id_th1] > 1 ) && ( id_ph < MASA_NO_INDEX ) )
        {
            id_ph1 = quantize_phi( phi, ( id_th1 % 2 == 1 ), &phi_hat1, no_phi_loc[id_th1] );
            d = direction_distance( abs_theta, theta_hat, phi, phi_hat );
            d1 = direction_distance( abs_theta, theta_hat1, phi, phi_hat1 );
            if ( d1 > d )
            {
                id_ph = id_ph1;
                id_th = id_th1; /*theta_hat = ANGLE_AT_EQUATOR_DEG * id_th1; */
            }
        }
    }
    else
    {
        id_ph = quantize_phi( phi, ( id_th % 2 == 1 ), &phi_hat, no_phi_loc[id_th] );
    }

    *id_phi = id_ph;
    *id_theta = id_th;
}

int16_t quantize_phi(                     /* o  : index azimuth */
                      float phi,          /* i  : azimuth value */
                      int16_t flag_delta, /* i  : flag indicating if the azimuth codebook is translated or not */
                      float *phi_hat,     /* o  : quantized azimuth */
                      const int16_t n     /* i  : azimuth codebook size */
)
{
    int16_t id_phi;
    float dd;
    float delta_phi;

    delta_phi = 360.0f / (float) n;

    if ( n == 1 )
    {
        *phi_hat = 0;

        return 0;
    }

    if ( flag_delta == 1 )
    {
        dd = delta_phi / 2.0f;
    }
    else
    {
        dd = 0;
    }

    id_phi = (int16_t) ( ( phi - dd + delta_phi / 2.0f ) / (float) delta_phi );

    if ( id_phi == n )
    {
        id_phi = 0;
    }

    if ( id_phi == -1 )
    {
        id_phi = n - 1;
    }

    *phi_hat = id_phi * delta_phi + dd;

    return id_phi;
}

float direction_distance(                     /* o  : distortion value */
                          float theta,        /* i  : elevation absolute value */
                          float theta_hat,    /* i  : quantized elevation value in absolute value */
                          const float phi,    /* i  : azimuth value */
                          const float phi_hat /* i  : quantized azimuth value */
)
{
    float d;

    theta *= EVS_PI / 180;
    theta_hat *= EVS_PI / 180;

    d = sinf( theta ) * sinf( theta_hat ) + cosf( theta ) * cosf( theta_hat ) * cosf( ( phi - phi_hat ) * EVS_PI / 180 );

    return d;
}


#endif
 No newline at end of file
+13 −10
Original line number Diff line number Diff line
@@ -1517,6 +1517,8 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512(
            hQMetaData->q_direction[0].band_data[j].bits_sph_idx[k] = bits_dir_hr;
        }
    }
    if ( hQMetaData->no_directions == 2 )
    {
        for ( j = hQMetaData->q_direction[1].cfg.start_band; j < hQMetaData->q_direction[1].cfg.nbands; ++j )
        {
            for ( k = 0; k < hQMetaData->q_direction[1].cfg.nblocks; k++ )
@@ -1533,6 +1535,7 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512(
                hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr;
            }
        }
    }

    return;
}