Commit 09a1f44f authored by Lauros Pajunen's avatar Lauros Pajunen
Browse files

Detect potential MASA metadata framing asynchrony and reduce the quality...

Detect potential MASA metadata framing asynchrony and reduce the quality degradation by modifying the metadata
parent b5f18301
Loading
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -1214,6 +1214,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
@@ -163,6 +163,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 )
                {
+442 −4

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
+28 −28

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

Loading