Commit c01aeaf7 authored by vaclav's avatar vaclav
Browse files

remove 'gen_bs' SPAR MD parameter + improve formatting

parent d8e5c770
Loading
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -2109,17 +2109,7 @@ void ivas_spar_set_bitrate_config(
    pSpar_md_cfg->agc_bits_ch_idx = ivas_spar_br_table_consts[table_idx].agc_bits_ch_idx;
    ivas_spar_get_uniform_quant_strat( pSpar_md_cfg, table_idx );

    if ( pSpar_md_cfg->quant_strat->C.q_levels[0] == 0 || pSpar_md_cfg->quant_strat->C.q_levels[1] == 0 || pSpar_md_cfg->quant_strat->PR.q_levels[0] == 0 || pSpar_md_cfg->quant_strat->PR.q_levels[1] == 0 || pSpar_md_cfg->quant_strat->P_c.q_levels[0] == 0 || pSpar_md_cfg->quant_strat->P_c.q_levels[1] == 0 || pSpar_md_cfg->quant_strat->P_r.q_levels[0] == 0 || pSpar_md_cfg->quant_strat->P_r.q_levels[1] == 0 )
    {
        pSpar_md_cfg->gen_bs = 0;
    }
    else
    {
        if ( 0 != pSpar_md_cfg->gen_bs )
        {
    pSpar_md_cfg->quant_strat_bits = ivas_get_bits_to_encode( MAX_QUANT_STRATS );
        }
    }

    /* BLOCK: getEntropyCoderModels */

@@ -2138,11 +2128,12 @@ void ivas_spar_set_bitrate_config(
        total_bits += (int16_t) ( ivas_spar_br_table_consts[table_idx].core_brs[i][0] / FRAMES_PER_SEC );
        max_bits += (int16_t) ( ivas_spar_br_table_consts[table_idx].core_brs[i][1] / FRAMES_PER_SEC );
    }
    pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC ) - IVAS_FORMAT_SIGNALING_NBITS_SBA - SBA_PLANAR_BITS - SBA_ORDER_BITS - length - total_bits;

    pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC ) - IVAS_FORMAT_SIGNALING_NBITS_SBA - SBA_PLANAR_BITS - SBA_ORDER_BITS - length - total_bits;
    pSpar_md_cfg->max_bits_per_blk = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC ) - IVAS_FORMAT_SIGNALING_NBITS_SBA - SBA_PLANAR_BITS - SBA_ORDER_BITS - length - max_bits;

    md_coding_bits_header = SPAR_NUM_CODING_STRAT_BITS + pSpar_md_cfg->quant_strat_bits;

    pSpar_md_cfg->tgt_bits_per_blk -= md_coding_bits_header;
    pSpar_md_cfg->max_bits_per_blk -= md_coding_bits_header;

@@ -2151,9 +2142,11 @@ void ivas_spar_set_bitrate_config(

    pSpar_md_cfg->tgt_bits_per_blk += md_coding_bits_header;
    pSpar_md_cfg->max_bits_per_blk += md_coding_bits_header;

    return;
}


#ifdef FIX_I1_113
/*-----------------------------------------------------------------------------------------*
 * Function ivas_spar_bitrate_dist()
+0 −1
Original line number Diff line number Diff line
@@ -229,7 +229,6 @@ typedef struct ivas_spar_md_com_cfg
    int16_t active_w;
    int16_t remix_unmix_order;
    ivas_quant_strat_t quant_strat[MAX_QUANT_STRATS];
    int16_t gen_bs;
    int16_t quant_strat_bits;
    int16_t nchan_transport;
    int16_t num_quant_strats;
+164 −174
Original line number Diff line number Diff line
@@ -82,7 +82,9 @@ static void ivas_spar_md_fill_invalid_bands( ivas_spar_dec_matrices_t *pSpar_coe
static ivas_error ivas_spar_set_dec_config( ivas_spar_md_dec_state_t *hMdDec, const int16_t nchan_transport, float *pFC );

static void ivas_parse_parameter_bitstream_dtx( ivas_spar_md_t *pSpar_md, Decoder_State *st, const int16_t bw, const int16_t num_bands, int16_t *num_dmx_per_band, int16_t *num_dec_per_band );

static ivas_error ivas_deindex_real_index( const int16_t *index, const int16_t q_levels, const float min_value, const float max_value, float *quant, const int16_t num_ch_dim2 );

static void ivas_spar_dec_parse_md_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, int16_t *nB, int16_t *bands_bw, int16_t *dtx_vad, const int32_t ivas_total_brate, const int16_t use_planar_coeff, const int16_t sba_inactive_mode );


@@ -440,8 +442,6 @@ ivas_error ivas_spar_md_dec_init(
    int16_t nchan_transport;
    float pFC[IVAS_MAX_NUM_BANDS], PR_minmax[2];

    hMdDec->spar_md_cfg.gen_bs = 1; // VE2DB : always 1 - can it be removed?

    hMdDec->spar_md.num_bands = ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND );

    ivas_spar_set_bitrate_config( &hMdDec->spar_md_cfg, hMdDec->table_idx, hMdDec->spar_md.num_bands );
@@ -1431,19 +1431,19 @@ static void ivas_spar_dec_parse_md_bs(
    const int16_t sba_inactive_mode )
{
    int16_t i, j, k, num_bands;
    int16_t ii, jj, ndec, ndm, b, idx;
    uint16_t qsi;
    ivas_quant_strat_t qs;
    int16_t strat, freq_diff, no_ec;
    int16_t do_diff[IVAS_MAX_NUM_BANDS];
    int16_t planarCP = 0;
    int16_t planarCP;
    float quant[IVAS_SPAR_MAX_C_COEFF];

    *dtx_vad = 1;
    *bands_bw = 1;
    qsi = 0;
    num_bands = hMdDec->spar_md.num_bands;

    if ( hMdDec->spar_md_cfg.gen_bs == 1 )
    {
    if ( ivas_total_brate > IVAS_SID_5k2 )
    {
        if ( hMdDec->spar_md_cfg.quant_strat_bits > 0 )
@@ -1496,6 +1496,7 @@ static void ivas_spar_dec_parse_md_bs(
            }
            hMdDec->valid_bands[i] = 1;
        }

        for ( i = 0; i < num_bands; i++ )
        {
            for ( j = 0; j < ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ); j++ )
@@ -1507,10 +1508,8 @@ static void ivas_spar_dec_parse_md_bs(
            }
        }

            ivas_parse_parameter_bitstream_dtx( &hMdDec->spar_md, st0, *bands_bw, *nB,
                                                hMdDec->spar_md_cfg.num_dmx_chans_per_band, hMdDec->spar_md_cfg.num_decorr_per_band );
            {
                int16_t ndec, b, idx;
        ivas_parse_parameter_bitstream_dtx( &hMdDec->spar_md, st0, *bands_bw, *nB, hMdDec->spar_md_cfg.num_dmx_chans_per_band, hMdDec->spar_md_cfg.num_decorr_per_band );

        for ( i = *nB - 1; i >= 0; i-- )
        {
            ndec = hMdDec->spar_md_cfg.num_decorr_per_band[( *bands_bw ) * i];
@@ -1529,14 +1528,16 @@ static void ivas_spar_dec_parse_md_bs(
                hMdDec->valid_bands[idx] = 1;
            }
        }

        *nB = num_bands;
        *bands_bw = 1;
            }

        return;
    }

    qs = hMdDec->spar_md_cfg.quant_strat[qsi];

    planarCP = 0;
    if ( ( qsi == 2 ) && ( use_planar_coeff ) )
    {
        planarCP = 1;
@@ -1545,6 +1546,7 @@ static void ivas_spar_dec_parse_md_bs(
#endif
    }
    strat = get_next_indice( st0, 3 );

#ifdef SPAR_HOA_DBG
    /*fprintf(stdout, "\n\n no_ec = %d, strat = %d\n", no_ec, strat);*/
#endif
@@ -1598,10 +1600,9 @@ static void ivas_spar_dec_parse_md_bs(

    for ( i = 0; i < *nB; i++ )
    {
            int16_t ii, jj;
            int16_t ndec = hMdDec->spar_md_cfg.num_decorr_per_band[( *bands_bw ) * i];
            int16_t ndm = hMdDec->spar_md_cfg.num_dmx_chans_per_band[( *bands_bw ) * i];
            float quant[IVAS_SPAR_MAX_C_COEFF];
        ndec = hMdDec->spar_md_cfg.num_decorr_per_band[( *bands_bw ) * i];
        ndm = hMdDec->spar_md_cfg.num_dmx_chans_per_band[( *bands_bw ) * i];

        ivas_deindex_real_index( hMdDec->spar_md.band_coeffs_idx[i].pred_index_re, qs.PR.q_levels[0], qs.PR.min, qs.PR.max, hMdDec->spar_md.band_coeffs[i].pred_re, ndm + ndec - 1 );

        j = 0;
@@ -1613,7 +1614,9 @@ static void ivas_spar_dec_parse_md_bs(
                j++;
            }
        }

        ivas_deindex_real_index( hMdDec->spar_md.band_coeffs_idx[i].drct_index_re, qs.C.q_levels[0], qs.C.min, qs.C.max, quant, ndec * ( ndm - 1 ) );

        j = 0;
        for ( ii = 0; ii < ndec; ii++ )
        {
@@ -1623,7 +1626,9 @@ static void ivas_spar_dec_parse_md_bs(
                j++;
            }
        }

        ivas_deindex_real_index( hMdDec->spar_md.band_coeffs_idx[i].decd_index_re, qs.P_r.q_levels[0], qs.P_r.min, qs.P_r.max, hMdDec->spar_md.band_coeffs[i].P_re, ndm + ndec - 1 );

        /* Store prior coefficient indices */
        for ( j = 0; j < ndm + ndec - 1; j++ )
        {
@@ -1639,18 +1644,7 @@ static void ivas_spar_dec_parse_md_bs(
        }
        hMdDec->valid_bands[i] |= ( do_diff[i] == 0 ) ? 1 : 0;
    }
    }
    else
    {
        *dtx_vad = hMdDec->spar_md.dtx_vad;
        *nB = num_bands;
        *bands_bw = num_bands / *nB;

        for ( i = 0; i < *nB; i++ )
        {
            hMdDec->valid_bands[i] = 1;
        }
    }
#ifdef SPAR_HOA_DBG
    int16_t b;
    b = 0;
@@ -1743,14 +1737,14 @@ static void ivas_decode_arith_bs(
    const int16_t freq_diff,
    const int16_t planarCP )
{
    int16_t i, ndm, ndec;
    int16_t i, j, ndm, ndec;
    ivas_cell_dim_t pred_cell_dims[IVAS_MAX_NUM_BANDS];
    ivas_cell_dim_t drct_cell_dims[IVAS_MAX_NUM_BANDS];
    ivas_cell_dim_t decd_cell_dims[IVAS_MAX_NUM_BANDS];
    ivas_cell_dim_t decx_cell_dims[IVAS_MAX_NUM_BANDS];
    int16_t symbol_arr_re[IVAS_MAX_INPUT_LEN];
    int16_t symbol_arr_old_re[IVAS_MAX_INPUT_LEN];
    int16_t any_diff = 0;
    int16_t any_diff;

    for ( i = 0; i < nB; i++ )
    {
@@ -1774,6 +1768,7 @@ static void ivas_decode_arith_bs(
        decx_cell_dims[i].dim2 = 1;
    }

    any_diff = 0;
    for ( i = 0; i < nB; i++ )
    {
        if ( pDo_diff[i] != 0 )
@@ -1787,7 +1782,6 @@ static void ivas_decode_arith_bs(
    {
        if ( hMdDec->spar_hoa_md_flag )
        {
            int16_t j;
            for ( i = 0; i < nB; i++ )
            {
                if ( i >= SPAR_DIRAC_SPLIT_START_BAND )
@@ -1810,7 +1804,6 @@ static void ivas_decode_arith_bs(

    if ( hMdDec->spar_hoa_md_flag )
    {
        int16_t j;
        for ( i = 0; i < nB; i++ )
        {
            if ( i >= SPAR_DIRAC_SPLIT_START_BAND )
@@ -2063,12 +2056,11 @@ static void ivas_decode_huffman_bs(
    const int16_t planarCP )
{
    int16_t i, j;

    for ( i = 0; i < nB; i++ )
    {
    int16_t ndm, ndec;
    int16_t pred_dim, drct_dim, decd_dim, pred_offset;

    for ( i = 0; i < nB; i++ )
    {
        ndm = hMdDec->spar_md_cfg.num_dmx_chans_per_band[bands_bw * i];
        ndec = hMdDec->spar_md_cfg.num_decorr_per_band[bands_bw * i];

@@ -2086,8 +2078,7 @@ static void ivas_decode_huffman_bs(

        for ( j = pred_offset; j < pred_dim; j++ )
        {
            ivas_huffman_decode( &hMdDec->huff_coeffs.pred_huff_re[qsi], st0,
                                 &hMdDec->spar_md.band_coeffs_idx[i].pred_index_re[j] );
            ivas_huffman_decode( &hMdDec->huff_coeffs.pred_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].pred_index_re[j] );
        }

        if ( hMdDec->spar_hoa_md_flag )
@@ -2109,8 +2100,7 @@ static void ivas_decode_huffman_bs(
            }
            else
            {
                ivas_huffman_decode( &hMdDec->huff_coeffs.drct_huff_re[qsi], st0,
                                     &hMdDec->spar_md.band_coeffs_idx[i].drct_index_re[j] );
                ivas_huffman_decode( &hMdDec->huff_coeffs.drct_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].drct_index_re[j] );
            }
        }

@@ -2122,8 +2112,7 @@ static void ivas_decode_huffman_bs(
            }
            else
            {
                ivas_huffman_decode( &hMdDec->huff_coeffs.decd_huff_re[qsi], st0,
                                     &hMdDec->spar_md.band_coeffs_idx[i].decd_index_re[j] );
                ivas_huffman_decode( &hMdDec->huff_coeffs.decd_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].decd_index_re[j] );
            }
        }
    }
@@ -2347,6 +2336,7 @@ static void ivas_spar_unquant_dtx_indicies(

    pr_min_max[0] = pSpar_md->min_max[0];
    pr_min_max[1] = pSpar_md->min_max[1];

    for ( b = 0; b < nB; b++ )
    {
        for ( i = 0; i < FOA_CHANNELS - 1; i++ )
@@ -2384,7 +2374,7 @@ static void ivas_parse_parameter_bitstream_dtx(
    int16_t *num_dmx_per_band,
    int16_t *num_dec_per_band )
{
    int16_t i, j;
    int16_t i, j, ndec, ndm;
    float val;
    int16_t idx;
    float pr_min_max[2];
@@ -2397,8 +2387,8 @@ static void ivas_parse_parameter_bitstream_dtx(

    for ( i = 0; i < num_bands; i++ )
    {
        int16_t ndec = num_dec_per_band[bw * i];
        int16_t ndm = num_dmx_per_band[bw * i];
        ndec = num_dec_per_band[bw * i];
        ndm = num_dmx_per_band[bw * i];

        for ( j = 0; j < FOA_CHANNELS - 1; j++ )
        {
+1 −23
Original line number Diff line number Diff line
@@ -324,7 +324,6 @@ static ivas_error ivas_spar_md_enc_init(

    table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL );

    hMdEnc->spar_md_cfg.gen_bs = 1;
    ivas_spar_set_bitrate_config( &hMdEnc->spar_md_cfg, table_idx, ( hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND );

    /* get FB coefficients */
@@ -334,19 +333,6 @@ static ivas_error ivas_spar_md_enc_init(
    }

    ivas_spar_set_enc_config( hMdEnc, hMdEnc->spar_md_cfg.max_freq_per_chan, hMdEnc->spar_md_cfg.nchan_transport, pFC, num_channels );
    /*
    if(hMdEnc->spar_md_cfg.quant_strat[0].C.q_levels[0] == 0 || hMdEnc->spar_md_cfg.quant_strat[0].C.q_levels[1] == 0
            || hMdEnc->spar_md_cfg.quant_strat[0].PR.q_levels[0] == 0 || hMdEnc->spar_md_cfg.quant_strat[0].PR.q_levels[1] == 0
            || hMdEnc->spar_md_cfg.quant_strat[0].P_c.q_levels[0] == 0 || hMdEnc->spar_md_cfg.quant_strat[0].P_c.q_levels[1] == 0
            || hMdEnc->spar_md_cfg.quant_strat[0].P_r.q_levels[0] == 0 || hMdEnc->spar_md_cfg.quant_strat[0].P_r.q_levels[1] == 0)
    {
            hMdEnc->spar_md_cfg.gen_bs = 0;
    }
    else if(0 != hMdEnc->spar_md_cfg.gen_bs)
    {
            hMdEnc->spar_md_cfg.quant_strat_bits = ivas_get_bits_to_encode(MAX_QUANT_STRATS);
    }
*/

    if ( hMdEnc->spar_md_cfg.nchan_transport != 2 && ( ( hMdEnc->spar_md_cfg.remix_unmix_order == 1 ) || ( hMdEnc->spar_md_cfg.remix_unmix_order == 2 ) ) )
    {
@@ -885,11 +871,6 @@ ivas_error ivas_spar_md_enc_process(
            ivas_band_mixing( hMdEnc, num_ch, num_bands, nchan_transport, num_bands_full );
        }

        if ( hMdEnc->spar_md_cfg.gen_bs == 0 )
        {
            break;
        }

        if ( dtx_vad == 0 )
        {
            ivas_write_parameter_bitstream_dtx( &hMdEnc->spar_md, hMetaData, hMdEnc->spar_md_cfg.num_dmx_chans_per_band, hMdEnc->spar_md_cfg.num_decorr_per_band, num_bands );
@@ -1110,10 +1091,7 @@ ivas_error ivas_spar_md_enc_process(
    fclose( fp );
#endif

    if ( hMdEnc->spar_md_cfg.gen_bs == 1 )
    {
    ivas_store_prior_coeffs( hMdEnc, num_bands, bands_bw, code_strat, dtx_vad, qsi );
    }

    hMdEnc->spar_md.dtx_vad = dtx_vad;
    hMdEnc->spar_md.num_bands = num_bands;