Commit 3212029b authored by multrus's avatar multrus
Browse files

[cleanup] accept FIX_379_ANGLE

parent 2a3885b4
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@
/*----------------------------------------------------------------------------------*
 * Declaration of ISM common (encoder & decoder) structure
 *----------------------------------------------------------------------------------*/
#ifdef FIX_379_ANGLE
typedef struct
{
    int16_t last_angle1_idx; /* last frame index of coded azimuth/yaw */
@@ -51,16 +50,6 @@ typedef struct
    int16_t last_angle2_idx; /* last frame index of coded elevation/pitch */
    int16_t angle2_diff_cnt; /* FEC counter of consecutive differentially elevation/pitch coded frames */
} ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE;
#else
typedef struct
{
    int16_t last_azimuth_idx;   /* last frame index of coded azimuth */
    int16_t azimuth_diff_cnt;   /* FEC counter of consecutive differentially azimuth coded frames */
    int16_t last_elevation_idx; /* last frame index of coded elevation */
    int16_t elevation_diff_cnt; /* FEC counter of consecutive differentially elevation coded frames */

} ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE;
#endif
/* ISM metadata handle (storage for one frame of read ISM metadata) */
typedef struct
{
@@ -72,12 +61,8 @@ typedef struct
    float radius;
    float yaw;   /* azimuth orientation value read from the input metadata file */
    float pitch; /* elevation orientation value read from the input metadata file */
#ifdef FIX_379_ANGLE
    ISM_METADATA_ANGLE position_angle;    /* Angle structs for azimuth and elevation */
    ISM_METADATA_ANGLE orientation_angle; /* Angle structs for yaw and pitch */
#else
    ISM_METADATA_ANGLE angle[2]; /* Angle structs for [0] azimuth/elevation and [1] yaw/pitch */
#endif
    int16_t last_radius_idx; /* last frame index of coded radius */
    int16_t radius_diff_cnt; /* FEC counter of consecutive differentially radius coded frames */

+0 −1
Original line number Diff line number Diff line
@@ -142,7 +142,6 @@
/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */


#define FIX_379_ANGLE                                   /* Eri: Extended metadata issues related to angle structure */

#define NOKIA_PARAMBIN_REQULARIZATION                   /* Nokia: Contribution - Configured reqularization factor for parametric binauralizer. */
#define NOKIA_ADAPTIVE_BINAURAL_PROTOS                  /* Nokia: Contribution 28: Adaptive binaural prototypes */
+0 −202
Original line number Diff line number Diff line
@@ -159,14 +159,9 @@ ivas_error ivas_ism_metadata_dec(
    float yaw, pitch, radius;
    int16_t flag_abs_radius;
    int16_t flag_abs_orientation;
#ifdef FIX_379_ANGLE
    int16_t flag_abs_position;
    int16_t idx_angle1;
    int16_t idx_angle2;
#else
    int16_t idx_azimuth, flag_abs_azimuth;
    int16_t idx_elevation;
#endif
    int16_t next_bit_pos_orig;
    uint16_t i, bstr_meta[MAX_BITS_METADATA], *bstr_orig;
    ISM_METADATA_HANDLE hIsmMetaData;
@@ -303,65 +298,34 @@ ivas_error ivas_ism_metadata_dec(
                {
                    nb_bits_start = st0->next_bit_pos;
                }
#ifdef FIX_379_ANGLE
                flag_abs_position = 0;
#else
                flag_abs_azimuth = 0;
#endif
                flag_abs_orientation = 0;
                flag_abs_radius = 0;

                if ( hIsmMeta[ch]->ism_metadata_flag )
                {
#ifdef FIX_379_ANGLE
                    decode_angle_indices( st0, &( hIsmMetaData->position_angle ), &flag_abs_position );
                    idx_angle1 = hIsmMetaData->position_angle.last_angle1_idx;
                    idx_angle2 = hIsmMetaData->position_angle.last_angle2_idx;
#else
                    decode_angle_indices( st0, &( hIsmMetaData->angle[0] ), &flag_abs_azimuth );
                    idx_azimuth = hIsmMetaData->angle[0].last_azimuth_idx;
                    idx_elevation = hIsmMetaData->angle[0].last_elevation_idx;
#endif
                    /* Azimuth/Elevation dequantization */
                    if ( ism_mode == ISM_MODE_PARAM )
                    {
#ifdef FIX_379_ANGLE
                        hParamIsm->azi_index[ch] = idx_angle1;
                        hParamIsm->ele_index[ch] = idx_angle2;
#else
                        hParamIsm->azi_index[ch] = idx_azimuth;
                        hParamIsm->ele_index[ch] = idx_elevation;
#endif
                    }
                    else /* ISM_MODE_DISC */
                    {
#ifdef FIX_379_ANGLE
                        hIsmMetaData->azimuth = ism_dequant_meta( idx_angle1, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS );
                        hIsmMetaData->elevation = ism_dequant_meta( idx_angle2, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS );
#else
                        hIsmMetaData->azimuth = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS );
                        hIsmMetaData->elevation = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS );
#endif

                        /* radius/raw/pitch dequantization */
                        if ( ism_extmeta_bitstream )
                        {
#ifdef FIX_379_ANGLE
                            decode_angle_indices( st0, &( hIsmMetaData->orientation_angle ), &flag_abs_orientation );
                            idx_angle1 = hIsmMetaData->orientation_angle.last_angle1_idx;
                            idx_angle2 = hIsmMetaData->orientation_angle.last_angle2_idx;
#else
                            decode_angle_indices( st0, &( hIsmMetaData->angle[1] ), &flag_abs_orientation );
                            idx_azimuth = hIsmMetaData->angle[1].last_azimuth_idx;
                            idx_elevation = hIsmMetaData->angle[1].last_elevation_idx;
#endif
#ifdef FIX_379_ANGLE
                            yaw = ism_dequant_meta( idx_angle1, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS );
                            pitch = ism_dequant_meta( idx_angle2, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS );
#else
                            yaw = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS );
                            pitch = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS );
#endif

                            idx_radius = decode_radius( st0, &hIsmMetaData->last_radius_idx, &flag_abs_radius );
                            radius = usdequant( idx_radius, ISM_RADIUS_MIN, ISM_RADIUS_DELTA );
@@ -460,13 +424,8 @@ ivas_error ivas_ism_metadata_dec(
            {
                hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch];
                hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch];
#ifdef FIX_379_ANGLE
                hIsmMeta[ch]->position_angle.last_angle1_idx = hParamIsm->azi_index[ch];
                hIsmMeta[ch]->position_angle.last_angle2_idx = hParamIsm->ele_index[ch];
#else
                hIsmMeta[ch]->angle[0].last_azimuth_idx = hParamIsm->azi_index[ch];
                hIsmMeta[ch]->angle[0].last_elevation_idx = hParamIsm->ele_index[ch];
#endif
            }
        }
    }
@@ -576,17 +535,10 @@ ivas_error ivas_ism_metadata_dec_create(
        }

        st_ivas->hIsmMetaData[ch]->last_ism_metadata_flag = 0;
#ifdef FIX_379_ANGLE
        st_ivas->hIsmMetaData[ch]->position_angle.last_angle1_idx = 0;
        st_ivas->hIsmMetaData[ch]->position_angle.last_angle2_idx = 1 << ( ISM_ELEVATION_NBITS - 1 );
        st_ivas->hIsmMetaData[ch]->orientation_angle.last_angle1_idx = 0;
        st_ivas->hIsmMetaData[ch]->orientation_angle.last_angle2_idx = 1 << ( ISM_ELEVATION_NBITS - 1 );
#else
        st_ivas->hIsmMetaData[ch]->angle[0].last_azimuth_idx = 0;
        st_ivas->hIsmMetaData[ch]->angle[0].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 );
        st_ivas->hIsmMetaData[ch]->angle[1].last_azimuth_idx = 0;
        st_ivas->hIsmMetaData[ch]->angle[1].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 );
#endif
        st_ivas->hIsmMetaData[ch]->last_radius_idx = 8; /* Init to radius 1.0 */

        st_ivas->hIsmMetaData[ch]->last_true_azimuth = 0;
@@ -611,7 +563,6 @@ ivas_error ivas_ism_metadata_dec_create(
 *
 * Decoding of an angle
 *-------------------------------------------------------------------------*/
#ifdef FIX_379_ANGLE

static void decode_angle_indices(
    DEC_CORE_HANDLE st0,             /* i/o: bitstream handle                */
@@ -752,148 +703,6 @@ static void decode_angle_indices(
    return;
}

#else

static void decode_angle_indices(
    DEC_CORE_HANDLE st0,             /* i/o: bitstream handle                */
    ISM_METADATA_ANGLE_HANDLE angle, /* i/o: angle handle                    */
    int16_t *flag_abs_azimuth        /* o  : Azimuth encoding mode           */
)
{
    int16_t idx_azimuth, nbits_diff_azimuth, diff, sgn;
    int16_t idx_elevation, nbits_diff_elevation;

    /*----------------------------------------------------------------*
     * Azimuth decoding and dequantization
     *----------------------------------------------------------------*/

    /* Decode azimuth index */
    if ( get_next_indice( st0, 1 ) == 1 ) /* azimuth_abs_flag */
    {
        idx_azimuth = get_next_indice( st0, ISM_AZIMUTH_NBITS );
        *flag_abs_azimuth = 1;
    }
    else
    {
        diff = 0;
        sgn = 1;

        if ( get_next_indice( st0, 1 ) == 0 )
        {
            nbits_diff_azimuth = 1;
        }
        else
        {
            nbits_diff_azimuth = 1;

            if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */
            {
                sgn = -1;
            }

            nbits_diff_azimuth++;

            /* read until the stop bit */
            while ( ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) && ( get_next_indice( st0, 1 ) == 1 ) )
            {
                diff++;
                nbits_diff_azimuth++;
            }

            if ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 )
            {
                /* count stop bit */
                nbits_diff_azimuth++;
            }
        }
        idx_azimuth = angle->last_azimuth_idx + sgn * diff;
    }

    /* azimuth is on a circle - check for diff coding for -180° -> 180° and vice versa changes */
    if ( idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 )
    {
        idx_azimuth -= ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* +180° -> -180° */
    }
    else if ( idx_azimuth < 0 )
    {
        idx_azimuth += ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* -180° -> +180° */
    }

    /* +180° == -180° */
    if ( idx_azimuth == ( 1 << ISM_AZIMUTH_NBITS ) - 1 )
    {
        idx_azimuth = 0;
    }

    /* sanity check in case of FER or BER */
    if ( idx_azimuth < 0 || idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 )
    {
        idx_azimuth = angle->last_azimuth_idx;
    }

    /*----------------------------------------------------------------*
     * Elevation decoding and dequantization
     *----------------------------------------------------------------*/

    /* Decode elevation index */
    if ( *flag_abs_azimuth == 0 && get_next_indice( st0, 1 ) == 1 ) /* elevation_abs_flag */
    {
        idx_elevation = get_next_indice( st0, ISM_ELEVATION_NBITS );
    }
    else
    {
        diff = 0;
        sgn = 1;

        if ( get_next_indice( st0, 1 ) == 0 )
        {
            nbits_diff_elevation = 1;
        }
        else
        {
            nbits_diff_elevation = 1;

            if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */
            {
                sgn = -1;
            }

            nbits_diff_elevation++;

            /* read until the stop bit */
            while ( ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) && ( get_next_indice( st0, 1 ) == 1 ) )
            {
                diff++;
                nbits_diff_elevation++;
            }

            if ( nbits_diff_elevation < ISM_ELEVATION_NBITS )
            {
                /* count stop bit */
                nbits_diff_elevation++;
            }
        }

        idx_elevation = angle->last_elevation_idx + sgn * diff;
    }

    /* sanity check in case of FER or BER */
    if ( idx_elevation < 0 || idx_elevation > ( 1 << ISM_ELEVATION_NBITS ) - 1 )
    {
        idx_elevation = angle->last_elevation_idx;
    }

    /*----------------------------------------------------------------*
     * Final updates
     *----------------------------------------------------------------*/

    angle->last_azimuth_idx = idx_azimuth;
    angle->last_elevation_idx = idx_elevation;

    return;
}

#endif


/*-------------------------------------------------------------------------
@@ -1111,24 +920,13 @@ void ivas_ism_metadata_sid_dec(
                /* update last indexes to correspond to active frames coding */
                if ( nBits_azimuth > ISM_AZIMUTH_NBITS )
                {
#ifdef FIX_379_ANGLE
                    hIsmMetaData->position_angle.last_angle1_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS );
                    hIsmMetaData->position_angle.last_angle2_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS );
#else
                    hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS );
                    hIsmMetaData->angle[0].last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS );
#endif
                }
                else
                {
#ifdef FIX_379_ANGLE
                    hIsmMetaData->position_angle.last_angle1_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth );
                    hIsmMetaData->position_angle.last_angle2_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation );
#else
                    hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth );
                    hIsmMetaData->angle[0].last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation );

#endif
                }

                /* save for smoothing metadata evolution */
+0 −305

File changed.

Preview size limit exceeded, changes collapsed.