Commit 96b39bc6 authored by Jouni Paulus's avatar Jouni Paulus
Browse files

Merge branch '382-potential-masa-metadata-framing-asynchrony' into 'main'

Address issue #382 by detecting framing asynchrony and adjusting MASA metadata

See merge request !515
parents c1229fde 7e735cd7
Loading
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -1204,6 +1204,13 @@ typedef enum
    MASA_STEREO_DOWNMIX
} MASA_TRANSPORT_SIGNAL_TYPE;

#ifdef FIX_382_MASA_META_FRAMING_ASYNC
typedef enum
{
    MASA_FRAME_1SF,
    MASA_FRAME_4SF
} MASA_FRAME_MODE;
#endif

/*----------------------------------------------------------------------------------*
 * Multichannel format
+1 −0
Original line number Diff line number Diff line
@@ -148,6 +148,7 @@
#define DISCRETE_ISM_DTX_CNG                            /* FhG/VA: contribution 15 - DTX/CNG for (discrete) ISM */
#define NCHAN_ISM_PARAMETER                             /* VA: make 'nchan_ism' parameter part of st_ivas/hEncoderConfig */

#define FIX_382_MASA_META_FRAMING_ASYNC                 /* Nokia: Issue 382: detect potential MASA metadata framing offset */

/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */
+6 −3
Original line number Diff line number Diff line
@@ -227,13 +227,16 @@ ivas_error ivas_enc(
            }
            else
            {
#ifdef FIX_382_MASA_META_FRAMING_ASYNC
                ivas_masa_estimate_energy( st_ivas->hMasa, data_f, input_frame, st_ivas->nchan_transport ); /* energy-estimation uses TF-resolution: 4x24 */
#endif
                if ( ( error = ivas_masa_enc_config( st_ivas ) ) != IVAS_ERR_OK )
                {
                    return error;
                }

                ivas_masa_estimate_energy( st_ivas->hMasa, data_f, input_frame, st_ivas->nchan_transport );

#ifndef FIX_382_MASA_META_FRAMING_ASYNC
                ivas_masa_estimate_energy( st_ivas->hMasa, data_f, input_frame, st_ivas->nchan_transport ); /* energy-estimation uses TF-resolution: 4x24 */
#endif
                if ( ( error = ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format,
                                                 ivas_total_brate, hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1 ) ) != IVAS_ERR_OK )
                {
+459 −11

File changed.

Preview size limit exceeded, changes collapsed.

+14 −0
Original line number Diff line number Diff line
@@ -740,6 +740,17 @@ typedef struct ivas_param_mc_enc_data_structure
 * MASA encoder structures
 *----------------------------------------------------------------------------------*/

#ifdef FIX_382_MASA_META_FRAMING_ASYNC
/* structure storing MASA framing sync detection and compensation data */
typedef struct ivas_masa_sync_struct
{
    MASA_METADATA_FRAME previous_metadata;
    uint8_t prev_sim_stop;
    uint8_t prev_offset;
    MASA_FRAME_MODE frame_mode;
} MASA_SYNC_STATE, *MASA_SYNC_HANDLE;
#endif

typedef struct ivas_masa_encoder_data_struct
{
    float energy[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
@@ -759,6 +770,9 @@ typedef struct ivas_masa_encoder_data_struct
    float onset_detector_1;
    float onset_detector_2;

#ifdef FIX_382_MASA_META_FRAMING_ASYNC
    MASA_SYNC_STATE sync_state;
#endif
} MASA_ENCODER_DATA;

typedef struct ivas_masa_encoder_struct