Commit c5988354 authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'main' into fix_binary_loading_tests

parents 2c1f5e5a 3a0ecd3b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -46,7 +46,10 @@ binary/
tests/**/[c|d]ut
tests/**/ref
tests/*/testv
tests/hrtf_binary_loading/bitstream/*
tests/hrtf_binary_loading/dec_out_*/*
scripts/testv/*_cut*.pcm
scripts/testv/*_cut*.wav
scripts/testv/stvOMASA_*.met
scripts/testv/stvOMASA_*.csv
scripts/testv/stvOMASA_2ISM_1MASA1TC48c.wav
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ variables:
      - 'default'
      - 'test-be-release'
      - 'test-long-self-test'
  GIT_CLEAN_FLAGS: -ffdxq


default:
+98 −1
Original line number Diff line number Diff line
@@ -2334,7 +2334,11 @@ static ivas_error decodeG192(
                {
                    if ( ( error = TsmScaleFileReader_readScale( tsmScaleFileReader, &scale ) ) != IVAS_ERR_OK )
                    {
#ifdef FIX_699_FILE_READER_JBM_TSM
                        fprintf( stderr, "\nError (%s) when reading TSM data from %s \n\n", arg.inputBitstreamFilename, TsmScaleFileReader_getFilePath( tsmScaleFileReader ) );
#else
                        fprintf( stderr, "\nError: input bitstream file couldn't be read: %s \n\n", arg.inputBitstreamFilename );
#endif
                        goto cleanup;
                    }
                    int16_t maxScaling;
@@ -2426,7 +2430,6 @@ static ivas_error decodeG192(
#endif
                }
            }

        } while ( nSamplesRendered < nOutSamples && error == IVAS_ERR_OK );

        if ( error == IVAS_ERR_END_OF_FILE )
@@ -3422,7 +3425,14 @@ static ivas_error decodeVoIP(
        }
        vec_pos_update = ( vec_pos_update + 1 ) % vec_pos_len;
        frame++;
#ifdef NONBE_FIX_864_JBM_RENDER_FRAMESIZE
        if ( vec_pos_update == 0 )
        {
            systemTime_ms += vec_pos_len * systemTimeInc_ms;
        }
#else
        systemTime_ms += systemTimeInc_ms;
#endif

#ifdef WMOPS
        update_mem();
@@ -3430,6 +3440,93 @@ static ivas_error decodeVoIP(
#endif
    }


#ifdef NONBE_FIX_864_JBM_RENDER_FRAMESIZE
    int16_t nSamplesFlushed = 0;

    /* decode and get samples */
#ifdef SPLIT_REND_WITH_HEAD_ROT
    if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK )
#else
    if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK )
#endif
    {
        fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) );
        goto cleanup;
    }

    if ( nSamplesFlushed )
    {
        /* Write current frame */
        if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, nSamplesFlushed * nOutChannels ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nOutput audio file writer error\n" );
            goto cleanup;
        }

        /* Write ISm metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL )
        {
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM )
            {
                if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "\nError in IVAS_DEC_GetNumObjects: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                    goto cleanup;
                }

                for ( i = 0; i < numObj; ++i )
                {
                    IVAS_ISM_METADATA IsmMetadata;

                    if ( ( error = IVAS_DEC_GetObjectMetadata( hIvasDec, &IsmMetadata, 0, i ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nError in IVAS_DEC_GetObjectMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                        goto cleanup;
                    }

                    if ( ( IsmFileWriter_writeFrame( IsmMetadata, ismWriters[i] ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nError writing ISM metadata to file %s\n", IsmFileWriter_getFilePath( ismWriters[i] ) );
                        goto cleanup;
                    }
                }
            }

            if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM )
            {
                IVAS_MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta;
#ifdef NONBE_FIX_984_OMASA_EXT_OUTPUT
                int16_t fullDelayNumSamples[3];
                float delayMs;

                /* delayNumSamples is zeroed, and delayNumSamples_orig is updated only on first good frame, so need to re-fetch delay info */
                if ( ( error = IVAS_DEC_GetDelay( hIvasDec, fullDelayNumSamples, &delayTimeScale ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) );
                }
#endif
                if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                    goto cleanup;
                }

#ifdef NONBE_FIX_984_OMASA_EXT_OUTPUT
                delayMs = (float) ( fullDelayNumSamples[0] ) / (float) ( delayTimeScale );
                if ( ( error = MasaFileWriter_writeFrame( masaWriter, hMasaExtOutMeta, &delayMs ) ) != IVAS_ERR_OK )
#else
                if ( ( error = MasaFileWriter_writeFrame( masaWriter, hMasaExtOutMeta ) ) != IVAS_ERR_OK )
#endif
                {
                    fprintf( stderr, "\nError writing MASA metadata to file: %s\n", MasaFileWriter_getFilePath( masaWriter ) );
                    goto cleanup;
                }
            }
        }
    }
#endif

    /*------------------------------------------------------------------------------------------*
     * Add zeros at the end to have equal length of synthesized signals
     *------------------------------------------------------------------------------------------*/
+4 −0
Original line number Diff line number Diff line
@@ -686,7 +686,11 @@ int main(
        {
            if ( ( error = JbmFileReader_readCAconfig( jbmReader, &caConfig ) ) != IVAS_ERR_OK )
            {
#ifdef FIX_699_FILE_READER_JBM_TSM
                fprintf( stderr, "\nError (%s) while reading Channel-Aware Config. from: %s\n\n", IVAS_ENC_GetErrorMessage( error ), JbmFileReader_getFilePath( jbmReader ) );
#else
                fprintf( stderr, "JbmFileReader_readCAconfig() failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
#endif
                goto cleanup;
            }

+16 −31
Original line number Diff line number Diff line
@@ -14,39 +14,20 @@ def main(args):
        collect_for_sanitizer_test(file)


def find_failed_files_for_sanitizer_test(
    console_log: list, subfolder: str, which="LOGS"
) -> dict():
def find_failed_files_for_sanitizer_test(console_log: list) -> dict():

    assert which in ["LOGS", "FILE_BASENAMES"]

    pattern_line = "(Encoding|Decoding) failed .*for \/.*(CLANG.|VALGRIND)\/(.*)"
    pattern_file = "(.*_b[0-9]*_.*_rs|.*_b[0-9]*_.*_cbr).*"
    pattern_line = r"(CLANG.) reports . error\(s\) for (.*)"

    files_found = dict()
    for line in console_log:
        m_line = re.match(pattern_line, line)

        if m_line is not None:
            _, test, filename = m_line.groups()
            filename = pathlib.Path(filename).name
            m_file = re.match(pattern_file, filename)
            if m_file is None:
                print(f"Unexpected: no match on {filename} with {pattern_file} - skip")
                continue
            filename_start = m_file.groups()[0]

            if which == "LOGS":
                folder = pathlib.Path(f"{test}/{subfolder}/")
                files = [
                    f for f in folder.iterdir() if f.name.startswith(filename_start)
                ]
            elif which == "FILE_BASENAMES":
                files = [filename_start]
            test, filename = m_line.groups()
            if test in files_found:
                files_found[test].extend(files)
                files_found[test].append(filename)
            else:
                files_found[test] = files
                files_found[test] = [filename]

    return files_found

@@ -56,16 +37,20 @@ def collect_for_sanitizer_test(file):
    with open(file) as f:
        console_log = f.readlines()

    files_to_archive_noPLC = find_failed_files_for_sanitizer_test(
        console_log, "logs_noPLC"
    )
    files_to_archive = find_failed_files_for_sanitizer_test(console_log, "logs")
    start_indicators = ["Adding config" in l for l in console_log]
    idx_first_run = start_indicators.index(True)
    idx_second_run = start_indicators[idx_first_run + 1:].index(True) + idx_first_run + 1
    no_plc_part = console_log[idx_first_run:idx_second_run]
    plc_part = console_log[idx_second_run:]

    files_to_archive_noPLC = find_failed_files_for_sanitizer_test(no_plc_part)
    files_to_archive_PLC = find_failed_files_for_sanitizer_test(plc_part)

    log_folder = pathlib.Path("./LOGS_PLC")
    log_folder.mkdir()
    for test in files_to_archive.keys():
    for test in files_to_archive_PLC.keys():
        log_folder.joinpath(test).mkdir()
    for test, files in files_to_archive.items():
    for test, files in files_to_archive_PLC.items():
        folder = log_folder.joinpath(test)
        for p in files:
            source = pathlib.Path(p)
@@ -79,7 +64,7 @@ def collect_for_sanitizer_test(file):
    for test, files in files_to_archive_noPLC.items():
        folder = log_folder_noPLC.joinpath(test)
        for p in files:
            source = pathlib.Path(p)
            source = pathlib.Path(p.replace("/logs/", "/logs_noPLC/"))
            target = folder.joinpath(source.name)
            source.rename(target)

Loading