Commit 6183bb60 authored by Brown, Stefanie's avatar Brown, Stefanie
Browse files

Adding some debug code, and a fix for resetting of covariance smoothing at...

Adding some debug code, and a fix for resetting of covariance smoothing at 13.2/16.4kbps. Verified SPAR signal chain (Encoder and Decoder SPAR MD). Discovered slight discrepancy in DirAC MD bitrates and bands, comparing non-updated and updated branches.
parent 8268d625
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -362,7 +362,17 @@ ivas_error ivas_dec(
                return error;
            }
        }

#ifdef DEBUG_LBR_SBA
        /* SCE Decoder Output */
        for ( int t = 0; t < 960; t++ )
        {
            for ( int c = 0; c < st_ivas->nchan_transport; c++ )
            {
                float val = output[c][t] / MAX16B_FLT;
                dbgwrite( &val, sizeof( float ), 1, 1, "int_dec_core_out.raw" );
            }
        }
#endif
#ifdef DEBUG_SBA_AUDIO_DUMP
        /* Dump audio signal after core-decoding */
        ivas_spar_dump_signal_wav( output_frame, NULL, output, st_ivas->nchan_transport, spar_foa_dec_wav[0], "core-decoding" );
+32 −0
Original line number Diff line number Diff line
@@ -705,7 +705,39 @@ void ivas_spar_md_dec_process(
    {
        nB = nB >> 1;
    }
#ifdef DEBUG_LBR_SBA
    /* Dumping SPAR Coefficients */
    char f_name[100];
    int16_t nbands = 4; // 6 total, just looking at SPAR
    int16_t num_subframes = 1;
    int16_t num_elements = 6;
    int16_t num_block_group = 1;
    int16_t byte_size = sizeof( float );

    sprintf( f_name, "SBA_MD_values_dec.bin" );
    ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false;

    for ( b = 0; b < nbands; b++ )
    {
        for ( int16_t sf = 0; sf < num_subframes; sf++ )
        {
            for ( int16_t bl = 0; bl < num_block_group; bl++ )
            {
                dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[2], byte_size, 1, 1, f_name );
                // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat );
            }
        }
    }
#endif
    /* expand DirAC MD to all time slots */
    for ( i_ts = 1; i_ts < MAX_PARAM_SPATIAL_SUBFRAMES; i_ts++ )
    {
+28 −14
Original line number Diff line number Diff line
@@ -451,7 +451,12 @@ static ivas_error ivas_spar_enc_process(
    {
        transient_det[1] = transient_det[0];
    }

#ifdef LBR_SBA_EXTRA_COV_SMOOTH
    if ( ivas_total_brate < IVAS_24k4 )
    {
        transient_det[1] = 0;
    }
#endif
    /* store previous input samples for W in local buffer */
    assert( num_del_samples <= IVAS_FB_1MS_48K_SAMP );
    mvr2r( &hSpar->hFbMixer->ppFilterbank_prior_input[0][hSpar->hFbMixer->fb_cfg->prior_input_length - num_del_samples], w_del_buf, num_del_samples );
@@ -725,12 +730,12 @@ static ivas_error ivas_spar_enc_process(
        {
            for ( int16_t bl = 0; bl < num_block_group; bl++ )
            {
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].pred_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].pred_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].pred_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].P_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].P_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].P_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].pred_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].pred_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].pred_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].P_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].P_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].P_re[2], byte_size, 1, 1, f_name );
                // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat );
            }
        }
@@ -757,12 +762,12 @@ static ivas_error ivas_spar_enc_process(
        {
            for ( int16_t bl = 0; bl < num_block_group; bl++ )
            {
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].pred_quant_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].pred_quant_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].pred_quant_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].P_quant_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].P_quant_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &pState->hMdEnc->spar_md.band_coeffs[b].P_quant_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].pred_quant_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].pred_quant_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].pred_quant_re[2], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].P_quant_re[0], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].P_quant_re[1], byte_size, 1, 1, f_name );
                dbgwrite( &hSpar->hMdEnc->spar_md.band_coeffs[b].P_quant_re[2], byte_size, 1, 1, f_name );
                // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat );
            }
        }
@@ -840,7 +845,16 @@ static ivas_error ivas_spar_enc_process(
            push_next_indice( hMetaData, PCA_MODE_INACTIVE, 1 );
        }
    }

#ifdef DEBUG_LBR_SBA
    for ( int t = 0; t < 960; t++ )
    {
        for ( int c = 0; c < hSpar->hFbMixer->fb_cfg->num_out_chans; c++ )
        {
            float val = p_pcm_tmp[c][t]; // / MAX16B_FLT;
            dbgwrite( &val, sizeof( float ), 1, 1, "int_enc_dmx.raw" );
        }
    }
#endif
#ifdef DEBUG_SBA_AUDIO_DUMP
    ivas_spar_dump_signal_wav( input_frame, p_pcm_tmp, NULL, nchan_transport, spar_foa_enc_wav[0], "ivas_pca_enc()" );
#endif
+42 −1
Original line number Diff line number Diff line
@@ -686,7 +686,9 @@ ivas_error ivas_spar_md_enc_process(
            }
        }
    }

#ifdef DEBUG_LBR_SBA
    float dirac_md_kbps = (float) ( hMetaData->nb_bits_tot ) * 50 / 1000;
#endif
    planarCP = 0;
    code_strat = 0;
#ifdef DEBUG_SBA_MD_DUMP
@@ -1026,6 +1028,45 @@ ivas_error ivas_spar_md_enc_process(
        }
    }
#endif
#ifdef DEBUG_LBR_SBA
    char f_name[100];
    int16_t nbands = 1;
    int16_t num_subframes = 1;
    int16_t num_elements = 6;
    int16_t num_block_group = 1;
    int16_t byte_size = sizeof( float );

    float sba_md_kbps = (float) hMetaData->nb_bits_tot * 50 / 1000;
    float spar_md_kbps = sba_md_kbps - dirac_md_kbps;
    float corebr_kbps = (float) hEncoderConfig->ivas_total_brate / 1000 - sba_md_kbps;

    sprintf( f_name, "SBA_MD_bitrate.bin" );
    ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false;
    ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false;

    for ( b = 0; b < nbands; b++ )
    {
        for ( int16_t sf = 0; sf < num_subframes; sf++ )
        {
            for ( int16_t bl = 0; bl < num_block_group; bl++ )
            {
                float fqsi = (float) qsi;
                float fcode = (float) code_strat;

                dbgwrite( &dirac_md_kbps, byte_size, 1, 1, f_name );
                dbgwrite( &spar_md_kbps, byte_size, 1, 1, f_name );
                dbgwrite( &sba_md_kbps, byte_size, 1, 1, f_name );
                dbgwrite( &fqsi, byte_size, 1, 1, f_name );
                dbgwrite( &fcode, byte_size, 1, 1, f_name );
                dbgwrite( &corebr_kbps, byte_size, 1, 1, f_name );
                // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat );
            }
        }
    }
#endif
#ifdef SPAR_HOA_DBG
    /*if ( strat >= 4 )
    {