Commit dc47938d authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Merge branch '944-bad-decoded-direction-values-for-fer-in-omasa-one-separated-object' into 'main'

[NON-BE] Fix bad decoded direction values for FER in OMASA

See merge request !1292
parents 5f5bcd51 05c5fbf9
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -328,6 +328,10 @@ typedef enum
#define ISM_Q_STEP                              2.5f
#define ISM_Q_STEP_BORDER                       5.0f

#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA
#define ISM_FEC_MAX                             10
#endif

#define ISM_RADIUS_NBITS                        6 
#define ISM_RADIUS_MIN                          0.0f
#define ISM_RADIUS_DELTA                        0.25f /* Max radius = (2^ISM_RADIUS_NBITS-1)*0.25 = 15.75 */
+1 −0
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@

#define NONBE_FIX_856_TCX_LTP_SYNTH_FILTER                    /* FhG: issue 856: correct filtering length for tcx-ltp synth filtering*/
#define NONBE_FIX_943_RECONFIG_IGF_AFTER_SETTING_BW           /* FhG: issue 943: fix crash in BW switchin from WB in MDCT-Stereo core encoder */
#define NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA                 /* Nokia: issue 944: fix FEC error in OMASA */

/* ##################### End NON-BE switches ########################### */

+0 −1
Original line number Diff line number Diff line
@@ -275,7 +275,6 @@ ivas_error ivas_enc(
    else if ( ivas_format == MASA_ISM_FORMAT )
    {
        float *data_separated_object;

        int16_t idx_separated_object;
        int16_t flag_omasa_ener_brate;

+5 −1
Original line number Diff line number Diff line
@@ -55,7 +55,9 @@
#define ISM_MAX_ELEVATION_DIFF_IDX ( ISM_ELEVATION_NBITS - 1 /*zero*/ - 1 /*sign*/ )
#define ISM_MAX_RADIUS_DIFF_IDX    ( ISM_RADIUS_NBITS - 1 /*zero*/ - 1 /*sign*/ )

#ifndef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA
#define ISM_FEC_MAX 10
#endif
#define ISM_MD_FEC_DIFF          10
#define ISM_MD_INC_DIFF_CNT_MAX  6
#define ISM_MD_FEC_CNT_MAX       25
@@ -429,6 +431,7 @@ ivas_error ivas_ism_metadata_enc(
                    }

                    idx_angle1_abs = ism_quant_meta( hIsmMetaData->azimuth, &valQ, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS );

                    encode_angle_indices( hBstr, &( hIsmMetaData->position_angle ), hIsmMetaData->last_ism_metadata_flag, hSCE[0]->hCoreCoder[0]->ini_frame, idx_angle1_abs, 0, &flag_abs_azimuth[ch], NULL );
                }
                else
@@ -443,6 +446,7 @@ ivas_error ivas_ism_metadata_enc(
                        idx_angle1_abs = hParamIsm->azi_index[ch];
                        idx_angle2_abs = hParamIsm->ele_index[ch];
                    }

                    encode_angle_indices( hBstr, &( hIsmMetaData->position_angle ), hIsmMetaData->last_ism_metadata_flag, ini_frame, idx_angle1_abs, idx_angle2_abs, &flag_abs_azimuth[ch], &flag_abs_elevation[ch] );

                    /*----------------------------------------------------------------*
+29 −0
Original line number Diff line number Diff line
@@ -45,6 +45,14 @@
#include "wmc_auto.h"


#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA
/*-------------------------------------------------------------------------
 * Local constants
 *------------------------------------------------------------------------*/

#define OMASA_FEC_MAX 5
#endif

/*-------------------------------------------------------------------------
 * Local function prototypes
 *------------------------------------------------------------------------*/
@@ -133,6 +141,9 @@ ivas_error ivas_omasa_enc_open(
    set_zero( hOMasa->broadband_energy_prev, MAX_NUM_OBJECTS + MASA_MAX_TRANSPORT_CHANNELS );
    hOMasa->prev_selected_object = 0;
    hOMasa->changing_object = 0;
#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA
    hOMasa->since_obj_change_cnt = 0;
#endif

    input_frame = (int16_t) ( st_ivas->hEncoderConfig->input_Fs / FRAMES_PER_SEC );
    for ( i = 0; i < input_frame; i++ )
@@ -495,6 +506,24 @@ void ivas_omasa_enc(
        {
            hOMasa->broadband_energy_prev[i] = broadband_energy[i];
        }

#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA
        /* force absolute MD coding in case of change of separated object */
        if ( hOMasa->prev_selected_object != selected_object )
        {
            hOMasa->since_obj_change_cnt = 0;
            hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX;
        }
        else
        {
            hOMasa->since_obj_change_cnt++;
            hOMasa->since_obj_change_cnt = min( OMASA_FEC_MAX, hOMasa->since_obj_change_cnt );
            if ( hOMasa->since_obj_change_cnt < OMASA_FEC_MAX )
            {
                hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX;
            }
        }
#endif
        hOMasa->prev_selected_object = selected_object;

        /* Separate the selected object */
Loading