Commit ca31cb52 authored by BOHMRR's avatar BOHMRR
Browse files

Merge branch '57-sba-debug-changes' into 'main'

SBA debug improvements

See merge request !56
parents 7ee32460 332b949c
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -57,6 +57,13 @@
#include "debug.h"
#endif
#include "render_config_reader.h"
#ifdef DEBUG_SBA
#include "ivas_cnst.h"
#include "spar_debug.h"
int16_t numTransportChannels = 1;
int16_t numOutChannels = 1;
int16_t pca_ingest_channels = 1;
#endif

#define WMC_TOOL_MAN

@@ -389,6 +396,15 @@ int main(
        }
    }

#ifdef DEBUG_SBA
    spar_debug_t dbg_params;
    dbg_params.fs = arg.output_Fs;
    dbg_params.n_ch = numOutChannels;
    dbg_params.n_transport = numTransportChannels;
    dbg_params.pca_ingest_channels = pca_ingest_channels;
    ivas_open_decoder_debug_files( &dbg_params );
#endif

    /*-----------------------------------------------------------------*
     * Print information about FEC
     *-----------------------------------------------------------------*/
@@ -570,6 +586,13 @@ cleanup:
        printf( "\n" );
    }

#ifdef DEBUG_SBA
    dbg_params.fs = arg.output_Fs;
    dbg_params.n_ch = numOutChannels;
    dbg_params.n_transport = numTransportChannels;
    dbg_params.pca_ingest_channels = pca_ingest_channels;
    ivas_close_decoder_debug_files( &dbg_params );
#endif
#ifdef DEBUGGING
    dbgclose();
#endif
+33 −19
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@
#endif
#ifdef DEBUGGING
#include "debug.h"
#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
#include "ivas_cnst.h"
#include "spar_debug.h"
#endif
@@ -129,7 +129,7 @@ typedef struct
#ifdef DEBUG_FOA_AGC
    FILE *agcBitstream; /* temporary */
#endif
#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
    const char *dbg_file_tag;
#endif

@@ -218,7 +218,7 @@ int main(
    FILE *f_forcedModeProfile = NULL;
#endif

#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
    spar_debug_t dbg_params;
#endif
#ifdef WMOPS
@@ -252,18 +252,6 @@ int main(
        goto cleanup;
    }

#ifdef DEBUG_SPAR_FOA
    dbg_params.agc = (int16_t) arg.agc;
    dbg_params.dtx_on = (int16_t) arg.dtxConfig.enabled;
    dbg_params.file_tag = arg.dbg_file_tag;
    dbg_params.ivas_total_brate = arg.initBitrate;
#ifdef DEBUG_AGC
    ivas_open_agc_debug_files( &dbg_params );
#endif
    ivas_open_debug_files( &dbg_params );
#endif


    /*------------------------------------------------------------------------------------------*
     * Open and initialize IVAS encoder
     *------------------------------------------------------------------------------------------*/
@@ -570,6 +558,32 @@ int main(
    uint16_t bitStream[IVAS_MAX_BITS_PER_FRAME];
    uint16_t numBits = 0;

#ifdef DEBUG_SBA
    int16_t numInputChannels;
    if ( ( error = IVAS_ENC_GetNumInputChannels( hIvasEnc, &numInputChannels ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nGetNumInputChannels failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
        goto cleanup;
    }
    dbg_params.agc = (int16_t) arg.agc;
    dbg_params.dtx_on = (int16_t) arg.dtxConfig.enabled;
    dbg_params.file_tag = arg.dbg_file_tag;
    dbg_params.ivas_total_brate = arg.initBitrate;
    dbg_params.fs = arg.inputFs;
    dbg_params.n_ch = numInputChannels;
    int16_t numTransportChannels;
    if ( ( error = getTransportChannel( hIvasEnc, &numTransportChannels ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nGetNumInputChannels failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
        goto cleanup;
    }
    dbg_params.n_transport = numTransportChannels;
#ifdef DEBUG_AGC
    ivas_open_agc_debug_files( &dbg_params );
#endif
    ivas_open_debug_files( &dbg_params );
#endif

    if ( !arg.quietModeEnabled )
    {
        fprintf( stdout, "\n------ Running the encoder ------\n\n" );
@@ -832,7 +846,7 @@ cleanup:
    dbgclose();
#endif

#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
    ivas_close_remove_debug_files();
#ifdef DEBUG_AGC
    ivas_close_agc_debug_files( &io_params );
@@ -879,7 +893,7 @@ static void initArgStruct( EncArguments *arg )
#ifdef DEBUG_FOA_AGC
    arg->agcBitstream = NULL;
#endif
#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
    arg->dbg_file_tag = NULL;
#endif

@@ -1434,7 +1448,7 @@ static bool parseCmdlIVAS_enc(
                return false;
            }
        }
#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
        /*-----------------------------------------------------------------*
         * IVAS SPAR debug files tag
         *-----------------------------------------------------------------*/
@@ -1637,7 +1651,7 @@ static void usage_enc( void )
    fprintf( stdout, "                      The encoder produces TS26.445 Annex.2.6 Mime Storage Format, (not RFC4867 Mime Format).\n" );
    fprintf( stdout, "                      default output bitstream file format is G.192\n" );

#ifdef DEBUG_SPAR_FOA
#ifdef DEBUG_SBA
    fprintf( stdout, "-tag                : Tag name for intermediate debug files\n" );
#endif
    fprintf( stdout, "-agc op             : SBA Adaptive gain control, op = (0, 1), by default op is 0 or deactivated\n" );
+4 −2
Original line number Diff line number Diff line
@@ -114,8 +114,10 @@
/*#define TDREND_HRTF_TABLE_METHODS*/           /* Enable HRTF lookup from tables, for testing & evaluation. Supply file in table format to use. Note that a suitable HR filter lookup method should be written if the filters sample point grids are not in the formats. */
/*#define TDREND_STANDALONE*/                   /* Used when renderer is built in standalone form, without IVAS encoding/decoding (see scripts/object_renderer_standalone). This is just here to ensure this is cleaned out by prepare_instrumentation.sh */

/*#define DEBUG_SPAR_FOA*/                      /* debug SPAR in-out */
#ifdef DEBUG_SPAR_FOA
/*#define DEBUG_SBA*/                           /* debug DIRAC/SPAR in-out */
#ifdef DEBUG_SBA
/*#define DEBUG_SBA_AUDIO_DUMP*/                /* SBA intermediate audio wav file dumping */
/*#define DEBUG_SBA_MD_DUMP*/                   /* SBA metadata and variable file dumping */
/*#define DEBUG_SPAR_MD_TARGET_TUNING*/         /* SPAR MD target bitrate tuning debug code */
/*#define DEBUG_SPAR_BYPASS_EVS_CODEC*/         /* bypass EVS coding in float precision, emulating EVS encoder/decoder delay */
/*#define DEBUG_SPAR_WRITE_OUT_COV*/            /* write covariance per frame into a text file for verification */
+187 −63
Original line number Diff line number Diff line
@@ -41,23 +41,22 @@
#include "spar_debug.h"
#include <assert.h>
#include "wmops.h"

#ifdef DEBUG_SBA
#include <math.h>
#include "tinywaveout_c.h"

/*-------------------------------------------------------------------*
 * Global variables used for debugging but not under DEBUGGING flag
 *--------------------------------------------------------------------*/
#ifdef DEBUG_SPAR_FOA

#define MAX_IN_FILE_LEN      ( 1000 )
#define MAX_PLUG_IN_FILE_LEN ( MAX_IN_FILE_LEN )
#define MAX_DEBUG_TAG_LEN    ( 50 )
#define NUM_DEBUG_FILES      ( 4 )
#define MAX_TAG_LEN          ( 200 )

FILE *fEvs_enc_in;
FILE *fMd_data;
FILE *fModels_data;
FILE *fEig_iters;
FILE *fFb_out[4];
WAVEFILEOUT *spar_foa_enc_wav[3];
WAVEFILEOUT *spar_foa_dec_wav[4];
float max_diff = 0;
int32_t dbg_frm_num;
int32_t dbg_band;
@@ -154,20 +153,111 @@ void ivas_open_agc_debug_files( spar_debug_t *pDebug_params )
        fprintf( stdout, "Temporary gain control bitstream file %s is opened\n", agcFilename );
    }
}

#endif

void UpdateWave( const uint32_t sampleRate, const uint32_t numChannels, const uint32_t bps, WAVEFILEOUT *spar_wav )
{
    uint32_t blockAlignment = 0;
    uint16_t writeValue16;
    uint32_t writeValue32;

    writeValue16 = LittleEndian16( (int16_t) numChannels );
    /*Fseek to number of channel writing position*/
    fseek( spar_wav->theFile, 22, SEEK_SET );
    fwrite( &writeValue16, sizeof( writeValue16 ), 1, spar_wav->theFile );
    blockAlignment = numChannels * ( bps >> 3 );
    writeValue16 = LittleEndian16( (int16_t) blockAlignment );
    fseek( spar_wav->theFile, 4, SEEK_CUR );
    writeValue32 = LittleEndian32( sampleRate * blockAlignment );
    fwrite( &writeValue32, sizeof( writeValue32 ), 1, spar_wav->theFile );
    fwrite( &writeValue16, sizeof( writeValue16 ), 1, spar_wav->theFile );
}

float ivas_spar_dump_signal_wav( int16_t input_frame, float data_f[][L_FRAME48k * 2], int16_t no_channel, WAVEFILEOUT *wave_file )
{
    float tmp_value;
    int16_t pcm_value, i, j, k;
    int16_t debug_tmp[IVAS_SPAR_MAX_CH * L_FRAME48k * 2];
    /* Dump audio signal after pca_enc */
    k = 0;
    int16_t Clipping = 0;
    float largest_value = 0;
    float db_value = 0;
    for ( j = 0; j < input_frame; j++ )
    {
        for ( i = 0; i < no_channel; i++, k++ )
        {
            tmp_value = roundf( data_f[i][j] * PCM16_TO_FLT_FAC );
            if ( tmp_value > MAX16B_FLT )
            {
                largest_value = (float) fabs( tmp_value ) > largest_value ? (float) fabs( tmp_value ) : largest_value;
                tmp_value = MAX16B;
                Clipping++;
            }
            else if ( tmp_value < MIN16B_FLT )
            {
                largest_value = (float) fabs( tmp_value ) > largest_value ? (float) fabs( tmp_value ) : largest_value;
                tmp_value = MIN16B;
                Clipping++;
            }
            pcm_value = (int16_t) tmp_value;
            /*pcm_value = (tmp_value > MAX16B_FLT) ? MAX16B : (tmp_value < MIN16B_FLT) ? MIN16B
                : (short)tmp_value;*/
            debug_tmp[k] = pcm_value;
        }
    }
    if ( Clipping )
    {
        db_value = 20.f * (float) log( largest_value );
        fprintf( stderr, "%d\t Clipping detected ", Clipping );
    }
    WriteWavShort(
        wave_file,
        debug_tmp,
        ( no_channel * input_frame ) );

    return ( db_value );
}

void ivas_close_decoder_debug_files( spar_debug_t *pDebug_params )
{
    if ( spar_foa_dec_wav[0] != NULL )
    {
        UpdateWave( pDebug_params->fs, pDebug_params->n_transport, 32, spar_foa_dec_wav[0] );
        CloseWav( spar_foa_dec_wav[0] );
    }
    if ( spar_foa_dec_wav[1] != NULL )
    {
        UpdateWave( pDebug_params->fs, pDebug_params->n_transport, 16, spar_foa_dec_wav[1] );
        CloseWav( spar_foa_dec_wav[1] );
    }
    if ( spar_foa_dec_wav[2] != NULL )
    {
        UpdateWave( pDebug_params->fs, pDebug_params->pca_ingest_channels, 16, spar_foa_dec_wav[2] );
        CloseWav( spar_foa_dec_wav[2] );
    }
    if ( spar_foa_dec_wav[3] != NULL )
    {
        UpdateWave( pDebug_params->fs, pDebug_params->n_ch, 16, spar_foa_dec_wav[3] );
        CloseWav( spar_foa_dec_wav[3] );
    }
}

void ivas_close_remove_debug_files( void )
{
    if ( fEvs_enc_in != NULL )
        fclose( fEvs_enc_in );
    if ( fMd_data != NULL )
        fclose( fMd_data );
    if ( fModels_data != NULL )
        fclose( fModels_data );
    if ( fEig_iters != NULL )
        fclose( fEig_iters );

    if ( spar_foa_enc_wav[0] != NULL )
    {
        CloseWav( spar_foa_enc_wav[0] );
    }
    if ( spar_foa_enc_wav[1] != NULL )
    {
        CloseWav( spar_foa_enc_wav[1] );
    }
    if ( spar_foa_enc_wav[2] != NULL )
    {
        CloseWav( spar_foa_enc_wav[2] );
    }

    /* Enable print max diff to a file */

@@ -184,20 +274,46 @@ void ivas_close_remove_debug_files( void )
      fclose(fp); */
}

void ivas_open_debug_files( spar_debug_t *pDebug_params )
void ivas_open_decoder_debug_files( spar_debug_t *pDebug_params )
{
#ifndef MSVS_DEBUG
    int8_t evs_in_path[MAX_PLUG_IN_FILE_LEN] = "spar_foa_bs/enc/evs_pcm_in/";
    int8_t mat_md_path[MAX_PLUG_IN_FILE_LEN] = "spar_foa_bs/enc/mat_md/";
    int8_t models_data_path[MAX_PLUG_IN_FILE_LEN] = "spar_foa_bs/enc/ec_models/";
    int8_t fb_pcm_dump_path[4][MAX_PLUG_IN_FILE_LEN] = { "spar_foa_bs/fb_dumps/", "spar_foa_bs/fb_dumps/", "spar_foa_bs/fb_dumps/", "spar_foa_bs/fb_dumps/" };
#else
    int8_t evs_in_path[MAX_PLUG_IN_FILE_LEN] = "../scripts/ivas_pytests/tests/restricted/system_tests/spar_foa_bs/enc/evs_pcm_in/";
    int8_t mat_md_path[MAX_PLUG_IN_FILE_LEN] = "../scripts/ivas_pytests/tests/restricted/system_tests/spar_foa_bs/enc/mat_md/";
    int8_t models_data_path[MAX_PLUG_IN_FILE_LEN] = "../scripts/ivas_pytests/tests/restricted/system_tests/spar_foa_bs/enc/ec_models/";
    int8_t fb_pcm_dump_path[4][MAX_PLUG_IN_FILE_LEN] = { "../scripts/ivas_pytests/tests/restricted/system_tests/spar_foa_bs/fb_dumps/", "../tests/restricted/system_tests/spar_foa_bs/fb_dumps/", "../tests/restricted/system_tests/spar_foa_bs/fb_dumps/", "../tests/restricted/system_tests/spar_foa_bs/fb_dumps/" };
#endif
    int8_t fb_wav_dump_path[4][MAX_PLUG_IN_FILE_LEN] = { "", "", "", "" };
    cstrcat( (char *) fb_wav_dump_path[0], sizeof( fb_wav_dump_path[0] ), "dec_out.wav" );
    spar_foa_dec_wav[0] = CreateWav(
        (const char *) fb_wav_dump_path[0],
        pDebug_params->fs,
        pDebug_params->n_ch,
        32
        /* const uint32_t writeWaveExt */
    );
    cstrcat( (char *) fb_wav_dump_path[1], sizeof( fb_wav_dump_path[1] ), "agc_dec_out.wav" );
    spar_foa_dec_wav[1] = CreateWav(
        (const char *) fb_wav_dump_path[1],
        pDebug_params->fs,
        pDebug_params->n_transport,
        16
        /* const uint32_t writeWaveExt */
    );
    cstrcat( (char *) fb_wav_dump_path[2], sizeof( fb_wav_dump_path[2] ), "pca_dec.wav" );
    spar_foa_dec_wav[2] = CreateWav(
        (const char *) fb_wav_dump_path[2],
        pDebug_params->fs,
        pDebug_params->n_transport,
        16
        /* const uint32_t writeWaveExt */
    );
    cstrcat( (char *) fb_wav_dump_path[3], sizeof( fb_wav_dump_path[3] ), "cldfbSynthesis.wav" );
    spar_foa_dec_wav[3] = CreateWav(
        (const char *) fb_wav_dump_path[3],
        pDebug_params->fs,
        pDebug_params->n_transport,
        16
        /* const uint32_t writeWaveExt */
    );
}

void ivas_open_debug_files( spar_debug_t *pDebug_params )
{
    int8_t fb_wav_dump_path[3][MAX_PLUG_IN_FILE_LEN] = { "spar_foa_enc", "spar_foa_enc", "spar_foa_enc" };
    if ( pDebug_params->file_tag != NULL )
    {
        cstrcpy( (char *) file_names[0], sizeof( file_names[0] ), (const char *) pDebug_params->file_tag );
@@ -206,18 +322,33 @@ void ivas_open_debug_files( spar_debug_t *pDebug_params )
    /* ivas_total_brate */
    switch ( pDebug_params->ivas_total_brate )
    {
        case 24400:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr24k" );
            break;
        case 32000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr32k" );
            break;
        case 48000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr48k" );
            break;
        case 64000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr64k" );
            break;
        case 80000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr80k" );
            break;
        case 96000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr96k" );
            break;
        case 128000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr128k" );
            break;
        case 160000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr160k" );
            break;
        case 192000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr192k" );
            break;
        case 256000:
            cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_ivasbr256k" );
            break;
@@ -229,9 +360,6 @@ void ivas_open_debug_files( spar_debug_t *pDebug_params )
            break;
    }

    /* fb id */
    cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_48dly" );

    /* DTX */
    if ( pDebug_params->dtx_on )
    {
@@ -247,37 +375,33 @@ void ivas_open_debug_files( spar_debug_t *pDebug_params )
    cstrcpy( (char *) file_names[3], sizeof( file_names[3] ), (const char *) file_names[0] );
    cstrcat( (char *) file_names[0], sizeof( file_names[0] ), "_pcm.txt" );

    cstrcat( (char *) evs_in_path, sizeof( evs_in_path ), (const char *) file_names[0] );
    fEvs_enc_in = fopen( (const char *) evs_in_path, "rb" );

    cstrcat( (char *) file_names[1], sizeof( file_names[1] ), ".md" );
    cstrcat( (char *) mat_md_path, sizeof( mat_md_path ), (const char *) file_names[1] );
    fMd_data = fopen( (const char *) mat_md_path, "rb" );

    cstrcat( (char *) file_names[3], sizeof( file_names[3] ), ".txt" );
    cstrcat( (char *) models_data_path, sizeof( models_data_path ), (const char *) file_names[3] );
    fModels_data = fopen( (const char *) models_data_path, "rb" );

    fEig_iters = NULL;
    /*Enable this below to dump iteration count for each frame
      fEig_iters = fopen(strcat(eig_iter_dmp_path, strcat(file_names[1], "_eig_iters.txt")), "wb"); */

    /* Enable for fb pcm dumps  */
    cstrcat( (char *) fb_pcm_dump_path[0], sizeof( fb_pcm_dump_path[0] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_pcm_dump_path[0], sizeof( fb_pcm_dump_path[0] ), "/ch1.raw" );
    fFb_out[0] = fopen( (const char *) fb_pcm_dump_path[0], "wb" );

    cstrcat( (char *) fb_pcm_dump_path[1], sizeof( fb_pcm_dump_path[1] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_pcm_dump_path[1], sizeof( fb_pcm_dump_path[1] ), "/ch2.raw" );
    fFb_out[1] = fopen( (const char *) fb_pcm_dump_path[1], "wb" );

    cstrcat( (char *) fb_pcm_dump_path[2], sizeof( fb_pcm_dump_path[2] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_pcm_dump_path[2], sizeof( fb_pcm_dump_path[2] ), "/ch3.raw" );
    fFb_out[2] = fopen( (const char *) fb_pcm_dump_path[2], "wb" );

    cstrcat( (char *) fb_pcm_dump_path[3], sizeof( fb_pcm_dump_path[3] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_pcm_dump_path[3], sizeof( fb_pcm_dump_path[3] ), "/ch4.raw" );
    fFb_out[3] = fopen( (const char *) fb_pcm_dump_path[3], "wb" );
    cstrcat( (char *) fb_wav_dump_path[0], sizeof( fb_wav_dump_path[0] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_wav_dump_path[0], sizeof( fb_wav_dump_path[0] ), "_pca_enc.wav" );
    spar_foa_enc_wav[0] = CreateWav(
        (const char *) fb_wav_dump_path[0],
        pDebug_params->fs,
        pDebug_params->n_ch,
        16
        /* const uint32_t writeWaveExt */
    );
    cstrcat( (char *) fb_wav_dump_path[1], sizeof( fb_wav_dump_path[1] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_wav_dump_path[1], sizeof( fb_wav_dump_path[1] ), "_fb_mixer_enc.wav" );
    spar_foa_enc_wav[1] = CreateWav(
        (const char *) fb_wav_dump_path[1],
        pDebug_params->fs,
        pDebug_params->n_transport,
        16
        /* const uint32_t writeWaveExt */
    );
    cstrcat( (char *) fb_wav_dump_path[2], sizeof( fb_wav_dump_path[2] ), (const char *) file_names[2] );
    cstrcat( (char *) fb_wav_dump_path[2], sizeof( fb_wav_dump_path[2] ), "_agc_enc.wav" );
    spar_foa_enc_wav[2] = CreateWav(
        (const char *) fb_wav_dump_path[2],
        pDebug_params->fs,
        pDebug_params->n_transport,
        16
        /* const uint32_t writeWaveExt */
    );
}

#endif /* DEBUG_SPAR_FOA */
#endif /* DEBUG_SBA */
+11 −1
Original line number Diff line number Diff line
@@ -36,25 +36,35 @@
#include "options.h"
#include <stdio.h>
#include <stdint.h>
#ifdef DEBUG_SBA
#include "tinywaveout_c.h"

/*------------------------------------------------------------------------------------------*
 * Global variables used for debugging
 *------------------------------------------------------------------------------------------*/
#ifdef DEBUG_SPAR_FOA

typedef struct spar_debug_t
{
    const char *file_tag;
    int32_t ivas_total_brate;
    int16_t dtx_on;
    int16_t agc;
    int32_t fs;
    int16_t n_ch;
    int16_t n_transport;
    int16_t pca_ingest_channels;
} spar_debug_t;

#ifdef DEBUG_AGC
void ivas_close_agc_debug_files( spar_debug_t *pDebug_params );
void ivas_open_agc_debug_files( spar_debug_t *pDebug_params );
#endif
float ivas_spar_dump_signal_wav( int16_t input_frame, float data_f[][L_FRAME48k * 2], int16_t no_channel, WAVEFILEOUT *wave_file );
void ivas_close_remove_debug_files( void );
void ivas_open_debug_files( spar_debug_t *pDebug_params );
void ivas_close_decoder_debug_files( spar_debug_t *pDebug_params );
void ivas_open_decoder_debug_files( spar_debug_t *dbg_params );
void UpdateWave( const uint32_t sampleRate, const uint32_t numChannels, const uint32_t bps, WAVEFILEOUT *spar_wav );
#endif

#endif /* SPAR_DEBUG_H */
Loading