Commit 00ba1339 authored by Sumeyra Demir Kanik's avatar Sumeyra Demir Kanik
Browse files

Delay compensation disabled for ISM in encoder, added to decoder

parent 838731d2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1583,7 +1583,6 @@ static ivas_error decodeG192(
            }
        }


        /* Write current frame */
        if ( decodedGoodFrame )
        {
@@ -1669,6 +1668,7 @@ static ivas_error decodeG192(
     *------------------------------------------------------------------------------------------*/

    memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) );

    if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) );
+12 −0
Original line number Diff line number Diff line
@@ -73,6 +73,12 @@ int32_t get_delay(
            {
                delay = 0; /* All delay is compensated in the decoder with MASA */
            }
#ifdef FIX_356_ISM_METADATA_SYNC
            if (ivas_format == ISM_FORMAT)
            {
                delay = 0; /* All delay is compensated in the decoder with ISM */
            }
#endif
        }

        if ( ivas_format == SBA_FORMAT )
@@ -109,6 +115,12 @@ int32_t get_delay(
            {
                delay += IVAS_ENC_DELAY_NS; /* Compensate also the encoder delay in the decoder with MASA */
            }
#ifdef FIX_356_ISM_METADATA_SYNC
            if (ivas_format == ISM_FORMAT)
            {
                delay += IVAS_ENC_DELAY_NS; /* Compensate also the encoder delay in the decoder with ISM */
            }
#endif
        }
    }

+11 −4
Original line number Diff line number Diff line
@@ -57,10 +57,10 @@ typedef struct
    int16_t last_ism_metadata_flag; /* last frame ism_metadata_flag */

    float azimuth;   /* azimuth value read from the input metadata file */
    float elevation; /* azimuth value read from the input metadata file */
    float radius;
    float yaw;                            /* azimuth orientation value read from the input metadata file */
    float pitch;                          /* elevation orientation value read from the input metadata file */
    float elevation; /* elevation value read from the input metadata file */
    float radius;    /* radius value read from the input metadata file */
    float yaw;                            /* yaw value read from the input metadata file */
    float pitch;                          /* pitch value read from the input metadata file */
    ISM_METADATA_ANGLE position_angle;    /* Angle structs for azimuth and elevation */
    ISM_METADATA_ANGLE orientation_angle; /* Angle structs for yaw and pitch */
    int16_t last_radius_idx;              /* last frame index of coded radius */
@@ -78,6 +78,13 @@ typedef struct
#ifdef FIX_435_ISM_MERGE_BUG
    float last_true_radius; /* last true Q radius value */
#endif
#ifdef FIX_356_ISM_METADATA_SYNC
    float prev_azimuth;
    float prev_elevation;
    float prev_radius;
    float prev_yaw;
    float prev_pitch;
#endif
} ISM_METADATA_FRAME, *ISM_METADATA_HANDLE;


+16 −1
Original line number Diff line number Diff line
@@ -244,6 +244,14 @@ ivas_error ivas_ism_metadata_dec(
        /* Read ISM present flags (one per object) */
        for ( ch = 0; ch < *nchan_transport; ch++ )
        {
#ifdef FIX_356_ISM_METADATA_SYNC
            hIsmMeta[ch]->prev_azimuth = hIsmMeta[ch]->azimuth;
            hIsmMeta[ch]->prev_elevation = hIsmMeta[ch]->elevation;
            hIsmMeta[ch]->prev_radius = hIsmMeta[ch]->radius;
            hIsmMeta[ch]->prev_yaw = hIsmMeta[ch]->yaw;
            hIsmMeta[ch]->prev_pitch = hIsmMeta[ch]->pitch;

#endif
            ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS );

            if ( ism_imp[ch] > ISM_NO_META )
@@ -548,7 +556,14 @@ ivas_error ivas_ism_metadata_dec_create(

        st_ivas->hIsmMetaData[ch]->last_true_azimuth = 0;
        st_ivas->hIsmMetaData[ch]->last_true_elevation = 0;

#ifdef FIX_356_ISM_METADATA_SYNC
        // st_ivas->hIsmMetaData[ch]->last_true_radius = 1.0f;
        st_ivas->hIsmMetaData[ch]->prev_azimuth = 0.0f;
        st_ivas->hIsmMetaData[ch]->prev_elevation = 0.0f;
        st_ivas->hIsmMetaData[ch]->prev_radius = 1.0f;
        st_ivas->hIsmMetaData[ch]->prev_yaw = 0.0f;
        st_ivas->hIsmMetaData[ch]->prev_pitch = 0.0f;
#endif
        ivas_ism_reset_metadata( st_ivas->hIsmMetaData[ch] );
    }

+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ ivas_error ivas_td_binaural_renderer(
        st_ivas->transport_config,
        st_ivas->hBinRendererTd, st_ivas->nchan_transport, LFE_CHANNEL, st_ivas->ivas_format,
#ifdef FIX_356_ISM_METADATA_SYNC
        st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_delay_comp, st_ivas->hDecoderConfig->Opt_Headrotation, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Quaternions : NULL,
        st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_delay_comp, st_ivas->hRenderConfig->directivity, st_ivas->hDecoderConfig->Opt_Headrotation, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Quaternions : NULL,
#else
        st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_Headrotation, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Quaternions : NULL,
#endif
Loading