Commit 0cdb3f71 authored by vaclav's avatar vaclav
Browse files

add three "VE:" comments; formal improvements

parent a55d927d
Loading
Loading
Loading
Loading
Loading
+46 −33
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@
#include "prot.h"

#ifdef FIX_382_MASA_META_FRAMING_ASYNC
#include <string.h>
#include <string.h> // VE: please remove it
#endif

/*-----------------------------------------------------------------------*
@@ -54,9 +54,9 @@ static void combine_directions( MASA_ENCODER_HANDLE hMasa );

static void find_n_largest( const float *input, int16_t *largestIndices, const int16_t numElements, const int16_t numLargest );

static void move_metadata_to_qmetadata( MASA_ENCODER_HANDLE hMasa, IVAS_QMETADATA_HANDLE hQMeta );
static void move_metadata_to_qmetadata( const MASA_ENCODER_HANDLE hMasa, IVAS_QMETADATA_HANDLE hQMeta );

static void detect_metadata_composition( MASA_ENCODER_HANDLE hMasa, uint8_t *joinedSubframes, uint8_t *coherencePresent, uint8_t *isTwoDir );
static void detect_metadata_composition( const MASA_ENCODER_HANDLE hMasa, uint8_t *joinedSubframes, uint8_t *coherencePresent, uint8_t *isTwoDir );

static void compensate_energy_ratios( MASA_ENCODER_HANDLE hMasa );

@@ -65,13 +65,13 @@ static int16_t encode_lfe_to_total_energy_ratio( MASA_ENCODER_HANDLE hMasa, BSTR
static void reduce_metadata_further( MASA_ENCODER_HANDLE hMasa, IVAS_QMETADATA_HANDLE hqmetadata, const IVAS_FORMAT ivas_format );

#ifdef FIX_382_MASA_META_FRAMING_ASYNC
static void average_masa_metadata( MASA_ENCODER_HANDLE hMasa );
static void average_masa_metadata( MASA_METADATA_FRAME *masaMetadata, float energy[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS] );

static void copy_masa_metadata_subframe( MASA_METADATA_HANDLE hMetaFrom, const uint8_t sfFrom, MASA_METADATA_HANDLE hMetaTo, const uint8_t sfTo );
static void copy_masa_metadata_subframe( const MASA_METADATA_HANDLE hMetaFrom, const uint8_t sfFrom, MASA_METADATA_HANDLE hMetaTo, const uint8_t sfTo );

static void copy_masa_metadata( MASA_METADATA_HANDLE hMetaFrom, MASA_METADATA_HANDLE hMetaTo );
static void copy_masa_metadata( const MASA_METADATA_HANDLE hMetaFrom, MASA_METADATA_HANDLE hMetaTo );

static uint8_t are_masa_subframes_similar( MASA_METADATA_HANDLE frame1, const uint8_t sf1_idx, MASA_METADATA_HANDLE frame2, const uint8_t sf2_idx );
static uint8_t are_masa_subframes_similar( const MASA_METADATA_HANDLE frame1, const uint8_t sf1_idx, const MASA_METADATA_HANDLE frame2, const uint8_t sf2_idx );

static void detect_framing_async( MASA_ENCODER_HANDLE hMasa );
#endif
@@ -533,7 +533,7 @@ ivas_error ivas_masa_enc_config(
        if ( hMasa->data.sync_state.frame_mode == MASA_FRAME_1SF && hMasa->data.sync_state.prev_offset != 0 )
        {
            /* average over sub-frames */
            average_masa_metadata( hMasa );
            average_masa_metadata( &( hMasa->masaMetadata ), hMasa->data.energy );
        }
#endif

@@ -1045,7 +1045,7 @@ static void find_n_largest(


static void move_metadata_to_qmetadata(
    MASA_ENCODER_HANDLE hMasa,
    const MASA_ENCODER_HANDLE hMasa,
    IVAS_QMETADATA_HANDLE hQMeta )
{
    int16_t dir, sf, band;
@@ -1117,7 +1117,7 @@ static void move_metadata_to_qmetadata(

/* This function studies parametric MASA metadata to provide information for codec configuration */
static void detect_metadata_composition(
    MASA_ENCODER_HANDLE hMasa, /* i  : MASA encoder data              */
    const MASA_ENCODER_HANDLE hMasa, /* i  : MASA encoder data              */
    uint8_t *joinedSubframes,        /* o  : Result of subframe composition */
    uint8_t *coherencePresent,       /* o  : Result of coherence presence   */
    uint8_t *isTwoDir                /* o  : Result of two direction check  */
@@ -1801,22 +1801,21 @@ void ivas_masa_enc_reconfigure(
    return;
}


#ifdef FIX_382_MASA_META_FRAMING_ASYNC
/*-------------------------------------------------------------------*
 * average_masa_metadata()
 *
 * Average MASA metadata frame subframe contents: applies aggregation over time
 *-------------------------------------------------------------------*/

static void average_masa_metadata(
    MASA_ENCODER_HANDLE hMasa /* i/o: MASA encoder handle */
)
    MASA_METADATA_FRAME *hMeta,
    float energy[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS] )
{
    int16_t i, j, k;
    float azi_rad, ele_rad;
    uint8_t numDirections;
    MASA_METADATA_HANDLE hMeta;

    hMeta = &( hMasa->masaMetadata );

    /* use the nominal values without data-adaptivity */
    numDirections = hMeta->descriptive_meta.numberOfDirections + 1;
@@ -1838,20 +1837,20 @@ static void average_masa_metadata(
            {
                azi_rad = hMeta->directional_meta[i].azimuth[j][k] / 180.0f * EVS_PI;
                ele_rad = hMeta->directional_meta[i].elevation[j][k] / 180.0f * EVS_PI;
                vec_len = hMeta->directional_meta[i].energy_ratio[j][k] * hMasa->data.energy[j][k];
                vec_len = hMeta->directional_meta[i].energy_ratio[j][k] * energy[j][k];

                /* energy-weighted sum over subframes */
                x_sum += cosf( azi_rad ) * cosf( ele_rad ) * vec_len;
                y_sum += sinf( azi_rad ) * cosf( ele_rad ) * vec_len;
                z_sum += sinf( ele_rad ) * vec_len;

                energy_sum += hMasa->data.energy[j][k];
                energy_sum += energy[j][k];

                spread_coh_sum += hMeta->directional_meta[i].spread_coherence[j][k] * hMasa->data.energy[j][k];
                spread_coh_sum += hMeta->directional_meta[i].spread_coherence[j][k] * energy[j][k];
                if ( i == 0 )
                {
                    /* this is in common metadata and not in each direction */
                    surr_coh_sum += hMeta->common_meta.surround_coherence[j][k] * hMasa->data.energy[j][k];
                    surr_coh_sum += hMeta->common_meta.surround_coherence[j][k] * energy[j][k];
                }
            }

@@ -1899,8 +1898,11 @@ static void average_masa_metadata(
            hMeta->common_meta.remainder_to_total_ratio[j][k] = 0.0f;
        }
    }

    return;
}


/*-------------------------------------------------------------------*
 * copy_masa_metadata_subframe()
 *
@@ -1908,13 +1910,14 @@ static void average_masa_metadata(
 *-------------------------------------------------------------------*/

static void copy_masa_metadata_subframe(
    MASA_METADATA_HANDLE hMetaFrom, /* i  : MASA frame metdata to be copied      */
    const MASA_METADATA_HANDLE hMetaFrom, /* i  : MASA frame metdata to be copied      */
    const uint8_t sfFrom,                 /* i  : subframe index of the copy source    */
    MASA_METADATA_HANDLE hMetaTo,         /* o  : MASA frame metadata copy destination */
    const uint8_t sfTo                    /* i  : subframe index of the copy target    */
)
{
    uint8_t dir;

    /* directional metadata */
    for ( dir = 0; dir < MASA_MAXIMUM_DIRECTIONS; dir++ )
    {
@@ -1928,8 +1931,11 @@ static void copy_masa_metadata_subframe(
    mvr2r( hMetaFrom->common_meta.diffuse_to_total_ratio[sfFrom], hMetaTo->common_meta.diffuse_to_total_ratio[sfTo], MASA_FREQUENCY_BANDS );
    mvr2r( hMetaFrom->common_meta.surround_coherence[sfFrom], hMetaTo->common_meta.surround_coherence[sfTo], MASA_FREQUENCY_BANDS );
    mvr2r( hMetaFrom->common_meta.remainder_to_total_ratio[sfFrom], hMetaTo->common_meta.remainder_to_total_ratio[sfTo], MASA_FREQUENCY_BANDS );

    return;
}


/*-------------------------------------------------------------------*
 * copy_masa_metadata()
 *
@@ -1937,13 +1943,14 @@ static void copy_masa_metadata_subframe(
 *-------------------------------------------------------------------*/

static void copy_masa_metadata(
    MASA_METADATA_HANDLE hMetaFrom, /* i  : MASA frame metadata to be copied      */
    const MASA_METADATA_HANDLE hMetaFrom, /* i  : MASA frame metadata to be copied     */
    MASA_METADATA_HANDLE hMetaTo          /* o  : MASA frame metadata copy destination */
)
{
    uint8_t sf;

    /* descriptive metadata */
    // VE: please do not use memcpy() and replace by mvr2r() etc.
    memcpy( hMetaTo->descriptive_meta.formatDescriptor, hMetaFrom->descriptive_meta.formatDescriptor, sizeof( hMetaFrom->descriptive_meta.formatDescriptor ) );

    hMetaTo->descriptive_meta.numberOfDirections = hMetaFrom->descriptive_meta.numberOfDirections;
@@ -1959,8 +1966,11 @@ static void copy_masa_metadata(
    {
        copy_masa_metadata_subframe( hMetaFrom, sf, hMetaTo, sf );
    }

    return;
}


/*-------------------------------------------------------------------*
 * are_masa_subframes_similar()
 *
@@ -1968,9 +1978,9 @@ static void copy_masa_metadata(
 *-------------------------------------------------------------------*/

static uint8_t are_masa_subframes_similar(
    MASA_METADATA_HANDLE frame1, /* i  : MASA metadata frame 1                      */
    const MASA_METADATA_HANDLE frame1, /* i  : MASA metadata frame 1                      */
    const uint8_t sf1_idx,             /* i  : index of the subframe of frame1 to inspect */
    MASA_METADATA_HANDLE frame2, /* i  : MASA metadata frame 2                      */
    const MASA_METADATA_HANDLE frame2, /* i  : MASA metadata frame 2                      */
    const uint8_t sf2_idx              /* o  : index of the subframe of frame2 to inspect */
)
{
@@ -2045,7 +2055,7 @@ static uint8_t are_masa_subframes_similar(
        }
    }

    /* TODO: a nicer negation */
    /* TODO: a nicer negation */ // VE: ??
    if ( sf_differ )
    {
        return FALSE;
@@ -2056,6 +2066,7 @@ static uint8_t are_masa_subframes_similar(
    }
}


/*-------------------------------------------------------------------*
 * detect_framing_async()
 *
@@ -2184,5 +2195,7 @@ static void detect_framing_async(
    sync_state->prev_sim_stop = n_sim_stop;
    sync_state->prev_offset = found_offset;
    sync_state->frame_mode = frame_mode;

    return;
}
#endif