Commit af4fb067 authored by vaclav's avatar vaclav
Browse files

address "VE2Nokia" comments, part 3/3

parent d4c50f64
Loading
Loading
Loading
Loading
+29 −25
Original line number Diff line number Diff line
@@ -2784,8 +2784,7 @@ const float McMASA_LFEGain_vectors[64] =
 * OMASA ROM tables
 *----------------------------------------------------------------------------------*/

// VE2Nokia: add "const" to the arrays
int32_t sep_object_brate[][MAX_NUM_OBJECTS] =
const int32_t sep_object_brate[][MAX_NUM_OBJECTS] =
{
    {0, 0, 0, 0},                                  /* 13k2 */
    {0, 0, 0, 0},                                  /* 16k4 */
@@ -2812,14 +2811,16 @@ int32_t sep_object_brate[][MAX_NUM_OBJECTS] =
};

/* column wise DCT matrices for 4 5, and 8 dim */
    float dct4[] = {
const float dct4[4*4] = 
{
    0.5000f,  0.6533f,  0.5000f,  0.2706f,
    0.5000f,  0.2706f, -0.5000f, -0.6533f,
    0.5000f, -0.2706f, -0.5000f,  0.6533f,
    0.5000f, -0.6533f,  0.5000f, -0.2706f
};

    float dct5[] = {
const float dct5[5*5] = 
{
    0.4472f,  0.6015f,  0.5117f,  0.3717f,  0.1954f,
    0.4472f,  0.3717f, -0.1954f, -0.6015f, -0.5117f,
    0.4472f,  0.0000f, -0.6325f, -0.0000f,  0.6325f,
@@ -2827,14 +2828,17 @@ int32_t sep_object_brate[][MAX_NUM_OBJECTS] =
    0.4472f, -0.6015f,  0.5117f, -0.3717f,  0.1954f
};

    float dct8[] = {
        0.3536f, 0.4904f, 0.4619f, 0.4157f, 0.3536f, 0.2778f, 0.1913f, 0.0975f, 0.3536f, 0.4157f,
        0.1913f, -0.0975f, -0.3536f, -0.4904f, -0.4619f, -0.2778f, 0.3536f, 0.2778f, -0.1913f, -0.4904f,
        -0.3536f, 0.0975f, 0.4619f, 0.4157f, 0.3536f, 0.0975f, -0.4619f, -0.2778f, 0.3536f, 0.4157f,
        -0.1913f, -0.4904f, 0.3536f, -0.0975f, -0.4619f, 0.2778f, 0.3536f, -0.4157f, -0.1913f, 0.4904f,
         0.3536f, -0.2778f, -0.1913f, 0.4904f, -0.3536f, -0.0975f, 0.4619f, -0.4157f, 0.3536f, -0.4157f,
         0.1913f, 0.0975f, -0.3536f, 0.4904f, -0.4619f, 0.2778f, 0.3536f, -0.4904f, 0.4619f, -0.4157f,
         0.3536f, -0.2778f, 0.1913f, -0.0975f };
const float dct8[8*8] = 
{
    0.3536f,  0.4904f,  0.4619f,  0.4157f,  0.3536f,  0.2778f,  0.1913f,  0.0975f,  
    0.3536f,  0.4157f,  0.1913f, -0.0975f, -0.3536f, -0.4904f, -0.4619f, -0.2778f,  
    0.3536f,  0.2778f, -0.1913f, -0.4904f, -0.3536f,  0.0975f,  0.4619f,  0.4157f,  
    0.3536f,  0.0975f, -0.4619f, -0.2778f,  0.3536f,  0.4157f, -0.1913f, -0.4904f,  
    0.3536f, -0.0975f, -0.4619f,  0.2778f,  0.3536f, -0.4157f, -0.1913f,  0.4904f,
    0.3536f, -0.2778f, -0.1913f,  0.4904f, -0.3536f, -0.0975f,  0.4619f, -0.4157f,  
    0.3536f, -0.4157f,  0.1913f,  0.0975f, -0.3536f,  0.4904f, -0.4619f,  0.2778f,  
    0.3536f, -0.4904f,  0.4619f, -0.4157f,  0.3536f, -0.2778f,  0.1913f, -0.0975f 
};
#endif

/*----------------------------------------------------------------------------------*
+8 −7
Original line number Diff line number Diff line
@@ -256,7 +256,6 @@ extern const uint16_t ivas_param_mc_sym_freq_icc_combined_48_16bits[PARAM_MC_SZ_
extern const uint16_t ivas_param_mc_cum_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER];
extern const uint16_t ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER - 1];


/*----------------------------------------------------------------------------------*
 * MASA ROM tables
 *----------------------------------------------------------------------------------*/
@@ -313,11 +312,14 @@ extern const float cb_azi_chan[];
extern const float McMASA_LFEGain_vectors[64];

#ifdef MASA_AND_OBJECTS
/* MASA and ISM combined format */
extern int32_t sep_object_brate[][MAX_NUM_OBJECTS];
extern float dct4[];
extern float dct5[];
extern float dct8[];
/*----------------------------------------------------------------------------------*
 * MASA and ISM (OMASA) combined format ROM tables
 *----------------------------------------------------------------------------------*/

extern const int32_t sep_object_brate[][MAX_NUM_OBJECTS];
extern const float dct4[];
extern const float dct5[];
extern const float dct8[];
#endif

/*----------------------------------------------------------------------------------*
@@ -333,7 +335,6 @@ extern const float ism_elevation_borders[4];

extern const int16_t Param_ISM_band_grouping[MAX_PARAM_ISM_NBANDS + 1];


/*----------------------------------------------------------------------------------*
 * LFE coding ROM tables
 *----------------------------------------------------------------------------------*/
+9 −10
Original line number Diff line number Diff line
@@ -266,7 +266,7 @@ ivas_error ivas_enc(
                                  ivas_total_brate, hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1
#ifdef MASA_AND_OBJECTS
                                  ,
                                  st_ivas->ism_mode, st_ivas->nchan_ism, st_ivas->hIsmMetaData, 0, NULL
                                  ISM_MODE_NONE, -1, NULL, -1, NULL
#endif
                );
            }
@@ -321,10 +321,10 @@ ivas_error ivas_enc(
        hMetaData = st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData;

        /* Stereo transport is used also with monoMASA, duplicate mono if monoMASA */
        if ( ( st_ivas->hEncoderConfig->nchan_inp - st_ivas->nchan_ism ) == 1 )
        if ( ( st_ivas->hEncoderConfig->nchan_inp - hEncoderConfig->nchan_ism ) == 1 )
        {
            v_multc( data_f[st_ivas->nchan_ism], 1.0f / SQRT2, data_f[st_ivas->nchan_ism], input_frame );
            mvr2r( data_f[st_ivas->nchan_ism], data_f[st_ivas->nchan_ism + 1], input_frame );
            v_multc( data_f[hEncoderConfig->nchan_ism], 1.0f / SQRT2, data_f[hEncoderConfig->nchan_ism], input_frame );
            mvr2r( data_f[hEncoderConfig->nchan_ism], data_f[hEncoderConfig->nchan_ism + 1], input_frame );
        }

        /*  nb_bits_metadata[0] = 0; */
@@ -345,13 +345,13 @@ ivas_error ivas_enc(
        }

        /* Estimate TF-tile energy for the input MASA stream */
        ivas_masa_estimate_energy( st_ivas->hMasa, &( data_f[st_ivas->nchan_ism] ), input_frame, st_ivas->nchan_transport );
        ivas_masa_estimate_energy( st_ivas->hMasa, &( data_f[hEncoderConfig->nchan_ism] ), input_frame, st_ivas->nchan_transport );

        /* put audio object data in SCE's */
        if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC )
        {
            /* Estimate MASA parameters for the objects */
            ivas_omasa_enc( st_ivas->hOMasa, st_ivas->hQMetaData, st_ivas->hMasa, st_ivas->hIsmMetaData, data_f, input_frame, st_ivas->nchan_transport, st_ivas->nchan_ism, st_ivas->ism_mode, data_separated_object, &idx_separated_object );
            ivas_omasa_enc( st_ivas->hOMasa, st_ivas->hQMetaData, st_ivas->hMasa, st_ivas->hIsmMetaData, data_f, input_frame, st_ivas->nchan_transport, hEncoderConfig->nchan_ism, st_ivas->ism_mode, data_separated_object, &idx_separated_object );
        }

        /* Encode ISMs transport channels */
@@ -370,12 +370,12 @@ ivas_error ivas_enc(
            {
                return error;
            }
            n = st_ivas->nchan_ism;
            n = st_ivas->hEncoderConfig->nchan_ism;
        }

        /* Encode MASA parameters and write MASA metadata bitstream */
        ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, nb_bits_metadata, st_ivas->nchan_transport, ivas_format, ivas_total_brate, st_ivas->hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1,
                          st_ivas->ism_mode, st_ivas->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa );
                          st_ivas->ism_mode, hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa );

        /* Configuration of combined-format bit-budget distribution */
#ifdef DEBUG_VA
@@ -496,11 +496,10 @@ ivas_error ivas_enc(
            ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, 0, -1
#ifdef MASA_AND_OBJECTS
                              ,
                              st_ivas->ism_mode, st_ivas->nchan_ism, st_ivas->hIsmMetaData, 0, NULL
                              ISM_MODE_NONE, -1, NULL, -1, NULL
#endif
            );


            if ( st_ivas->hMcMasa->separateChannelEnabled )
            {
                if ( ( error = ivas_sce_enc( st_ivas, 0, data_f[2], input_frame, 0 ) ) != IVAS_ERR_OK )
+3 −6
Original line number Diff line number Diff line
@@ -568,10 +568,10 @@ ivas_error ivas_init_encoder(
        int32_t ism_total_brate;
        int16_t k;

        st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, st_ivas->nchan_ism );
        st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, hEncoderConfig->nchan_ism );
        st_ivas->nchan_transport = 2;

        if ( ( error = create_ism_metadata_enc( st_ivas, st_ivas->nchan_ism, element_brate_tmp ) ) != IVAS_ERR_OK )
        if ( ( error = create_ism_metadata_enc( st_ivas, hEncoderConfig->nchan_ism, element_brate_tmp ) ) != IVAS_ERR_OK )
        {
            return error;
        }
@@ -583,8 +583,6 @@ ivas_error ivas_init_encoder(
        }

        ism_total_brate = 0;


        for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ )
        {
            ism_total_brate += sep_object_brate[k - 2][st_ivas->nSCE - 1];
@@ -601,7 +599,6 @@ ivas_error ivas_init_encoder(
            reset_indices_enc( st_ivas->hSCE[sce_id]->hMetaData, MAX_BITS_METADATA );
        }


        if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK )
        {
            return error;
@@ -1103,7 +1100,7 @@ void ivas_destroy_enc(
#ifdef MASA_AND_OBJECTS
    if ( st_ivas->hOMasa != NULL )
    {
        ivas_omasa_enc_close( st_ivas->hOMasa, st_ivas->nchan_ism );
        ivas_omasa_enc_close( st_ivas->hOMasa, st_ivas->hEncoderConfig->nchan_ism );
        st_ivas->hOMasa = NULL;
    }
#endif
+2 −2
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ ivas_error ivas_omasa_enc_open(
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA encoder\n" ) );
    }

    numAnalysisChannels = st_ivas->nchan_ism;
    numAnalysisChannels = st_ivas->hEncoderConfig->nchan_ism;

    /* initialize delay compensation */
    hOMasa->num_samples_delay_comp = NS2SA( st_ivas->hEncoderConfig->input_Fs, DELAY_DIRAC_ENC_CMP_NS );
@@ -595,7 +595,7 @@ void ivas_set_surplus_brate_enc(
        }
        else
        {
            for ( int16_t i = 0; i < st_ivas->nchan_ism; i++ )
            for ( int16_t i = 0; i < st_ivas->hEncoderConfig->nchan_ism; i++ )
            {
                tmpF += st_ivas->hSCE[i]->hCoreCoder[0]->total_brate + (float) ( nb_bits_metadata[i + 1] * 50 );
            }
Loading