Commit 000d4009 authored by vaclav's avatar vaclav
Browse files

support of EXT output configuration for OMASA DISC mode; under OMASA_EXT_OUTPUT

parent 8aca3b94
Loading
Loading
Loading
Loading
+89 −13
Original line number Diff line number Diff line
@@ -1742,7 +1742,11 @@ static ivas_error initOnFirstGoodFrame(
        }

        /* If outputting ISM, get number of objects, open output files and write zero metadata for initial bad frames */
#ifdef OMASA_EXT_OUTPUT
        if ( *pBsFormat == IVAS_DEC_BS_OBJ || *pBsFormat == IVAS_DEC_BS_MASA_ISM )
#else
        if ( *pBsFormat == IVAS_DEC_BS_OBJ )
#endif
        {
            if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, pNumObj ) ) != IVAS_ERR_OK )
            {
@@ -1780,8 +1784,13 @@ static ivas_error initOnFirstGoodFrame(
                }
            }
        }

        /* If outputting MASA, open output file and write metadata for initial bad frames */
#ifdef OMASA_EXT_OUTPUT
        if ( *pBsFormat == IVAS_DEC_BS_MASA || *pBsFormat == IVAS_DEC_BS_MASA_ISM )
#else
        else if ( *pBsFormat == IVAS_DEC_BS_MASA )
#endif
        {
            if ( ( error = MasaFileWriter_open( arg.outputWavFilename, arg.delayCompensationEnabled, ppMasaWriter ) ) != IVAS_ERR_OK )
            {
@@ -1789,6 +1798,10 @@ static ivas_error initOnFirstGoodFrame(
                return error;
            }

#ifdef OMASA_EXT_OUTPUT
            if ( numInitialBadFrames > 0 )
            {
#endif
                /* Duplicate good first frame metadata to fill the beginning of stream. */
                MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL;
#ifdef FIX_470_MASA_JBM_EXT
@@ -1809,6 +1822,9 @@ static ivas_error initOnFirstGoodFrame(
                        return error;
                    }
                }
#ifdef OMASA_EXT_OUTPUT
            }
#endif
        }
    }

@@ -2135,10 +2151,14 @@ static ivas_error decodeG192(
#endif
        }

        /* Write ISM metadata to external file(s) */
        /* Write MASA/ISM metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
        {
#ifdef OMASA_EXT_OUTPUT
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
            if ( bsFormat == IVAS_DEC_BS_OBJ )
#endif
            {
                if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK )
                {
@@ -2163,7 +2183,12 @@ static ivas_error decodeG192(
                    }
                }
            }
#ifdef OMASA_EXT_OUTPUT

            if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
            else if ( bsFormat == IVAS_DEC_BS_MASA )
#endif
            {
                MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta;
#ifdef FIX_470_MASA_JBM_EXT
@@ -2250,6 +2275,18 @@ static ivas_error decodeG192(
        {
            fprintf( stdout, "\nOutput metadata file:   %s\n", MasaFileWriter_getFilePath( masaWriter ) );
        }
#ifdef OMASA_EXT_OUTPUT
        else if ( bsFormat == IVAS_DEC_BS_MASA_ISM )
        {
            for ( i = 0; i < numObj; i++ )
            {
                fprintf( stdout, "\nOutput ISM metadata file:   %s", IsmFileWriter_getFilePath( ismWriters[i] ) );
            }
            fprintf( stdout, "\n" );

            fprintf( stdout, "\nOutput MASA metadata file:   %s\n", MasaFileWriter_getFilePath( masaWriter ) );
        }
#endif
    }

    /*------------------------------------------------------------------------------------------*
@@ -2716,7 +2753,11 @@ static ivas_error decodeVoIP(
            {
                int16_t i;

#ifdef OMASA_EXT_OUTPUT
                if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
                if ( bsFormat == IVAS_DEC_BS_OBJ )
#endif
                {
                    if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK )
                    {
@@ -2741,7 +2782,12 @@ static ivas_error decodeVoIP(
                        }
                    }
                }
#ifdef OMASA_EXT_OUTPUT

                if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
                else if ( bsFormat == IVAS_DEC_BS_MASA )
#endif
                {
                    MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta;
#ifdef FIX_470_MASA_JBM_EXT
@@ -3146,7 +3192,11 @@ static ivas_error decodeVariableSpeed(
        /* Write ISm metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
        {
#ifdef OMASA_EXT_OUTPUT
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
            if ( bsFormat == IVAS_DEC_BS_OBJ )
#endif
            {
                if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK )
                {
@@ -3171,7 +3221,12 @@ static ivas_error decodeVariableSpeed(
                    }
                }
            }
#ifdef OMASA_EXT_OUTPUT

            if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
            else if ( bsFormat == IVAS_DEC_BS_MASA )
#endif
            {
                MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta;
#ifdef FIX_470_MASA_JBM_EXT
@@ -3325,7 +3380,11 @@ static ivas_error decodeVariableSpeed(
        /* Write ISm metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
        {
#ifdef OMASA_EXT_OUTPUT
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
            if ( bsFormat == IVAS_DEC_BS_OBJ )
#endif
            {
                if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK )
                {
@@ -3350,7 +3409,12 @@ static ivas_error decodeVariableSpeed(
                    }
                }
            }
#ifdef OMASA_EXT_OUTPUT

            if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM )
#else
            else if ( bsFormat == IVAS_DEC_BS_MASA )
#endif
            {
                MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta;
#ifdef FIX_470_MASA_JBM_EXT
@@ -3414,6 +3478,18 @@ static ivas_error decodeVariableSpeed(
        {
            fprintf( stdout, "\nOutput metadata file:   %s\n", MasaFileWriter_getFilePath( masaWriter ) );
        }
#ifdef OMASA_EXT_OUTPUT
        else if ( bsFormat == IVAS_DEC_BS_MASA_ISM )
        {
            for ( i = 0; i < numObj; i++ )
            {
                fprintf( stdout, "\nOutput ISM metadata file:   %s", IsmFileWriter_getFilePath( ismWriters[i] ) );
            }
            fprintf( stdout, "\n" );

            fprintf( stdout, "\nOutput MASA metadata file:   %s\n", MasaFileWriter_getFilePath( masaWriter ) );
        }
#endif
    }

    /* add zeros at the end to have equal length of synthesized signals */
+1 −1
Original line number Diff line number Diff line
@@ -562,7 +562,7 @@ int16_t get_ivas_max_num_indices(
        else if ( ivas_total_brate <= IVAS_256k )
        {
#ifdef OMASA_BIT_BUFF_SZ
            return 1300;
            return 1450;
#else
            return 1150;
#endif
+1 −0
Original line number Diff line number Diff line
@@ -219,6 +219,7 @@
#define OMASA_BRSW_MONO_FIX                             /* Nokia: fix renderer config under rateswitching and MONO output */
#define OMASA_FIX_LOW_FS                                /* Nokia: fixes related to lower input signal sampling rates */
#define OMASA_BIT_BUFF_SZ                               /* Nokia: increase bitstream index buffer initial size */
#define OMASA_EXT_OUTPUT                                /* VA: support of EXT output configuration for OMASA DISC mode */
#endif

/* #################### Start NON-BE CR switches ########################## */
+19 −1
Original line number Diff line number Diff line
@@ -784,10 +784,18 @@ ivas_error ivas_init_decoder(

    if ( output_config == AUDIO_CONFIG_EXTERNAL )
    {
#ifdef OMASA_EXT_OUTPUT
        if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC )
        {
            hDecoderConfig->nchan_out = st_ivas->nchan_transport + st_ivas->nchan_ism;
        }
        else
#endif
            if ( !( st_ivas->ism_mode == ISM_MODE_PARAM ) )
        {
            hDecoderConfig->nchan_out = st_ivas->nchan_transport;
        }

        st_ivas->hOutSetup.nchan_out_woLFE = hDecoderConfig->nchan_out;
    }

@@ -2559,5 +2567,15 @@ static ivas_error doSanityChecks_IVAS(
    }
#endif

#ifdef OMASA_EXT_OUTPUT
    if ( st_ivas->ivas_format == MASA_ISM_FORMAT )
    {
        if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && output_config == AUDIO_CONFIG_EXTERNAL )
        {
            return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" );
        }
    }
#endif

    return IVAS_ERR_OK;
}
+4 −0
Original line number Diff line number Diff line
@@ -571,7 +571,11 @@ ivas_error ivas_masa_decode(
        }
    }

#ifdef OMASA_EXT_OUTPUT
    if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL )
#else
    if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL )
#endif
    {
        create_masa_ext_out_meta( hMasa, hQMetaData, st_ivas->nchan_transport );
    }
Loading