Commit 687ce1a0 authored by vaclav's avatar vaclav
Browse files

merge OMASA_UPDATES into MASA_AND_OBJECTS; encoder side

parent b4e8c328
Loading
Loading
Loading
Loading
+0 −24
Original line number Diff line number Diff line
@@ -1972,37 +1972,13 @@ ivas_error preview_indices(
        else if ( st_ivas->ivas_format == MASA_ISM_FORMAT )
        {
            /* read number of objects from the bitstream */
#ifdef OMASA_UPDATES
            st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */
            st_ivas->nchan_ism = 0;
#else
            st_ivas->nchan_transport = 0;
#endif

            if ( total_brate != SID_2k40 && total_brate != FRAME_NO_DATA )
            {
#ifdef OMASA_UPDATES
                st_ivas->nchan_ism = 2 * bit_stream[total_brate / FRAMES_PER_SEC - 1] + bit_stream[total_brate / FRAMES_PER_SEC - 2] + 1;
#endif
                st_ivas->ism_mode = ivas_omasa_ism_mode_select( total_brate, st_ivas->nchan_ism );

#ifndef OMASA_UPDATES
                if ( st_ivas->ism_mode == ISM_MASA_MODE_ONE_OBJ )
                {
                    st_ivas->nchan_transport = 0;
                }
                else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC )
                {
                    st_ivas->nchan_transport = 2 * st_ivas->bit_stream[total_brate / FRAMES_PER_SEC - 2] + st_ivas->bit_stream[total_brate / FRAMES_PER_SEC - 3] + 1;
                }

                k = (int16_t) ( ( total_brate / FRAMES_PER_SEC ) - 1 );

                {
                    st_ivas->nchan_transport++;
                    k--;
                }
#endif
            }
        }
#endif
+1 −9
Original line number Diff line number Diff line
@@ -374,12 +374,8 @@ typedef enum
#ifdef MASA_AND_OBJECTS
    ,
    ISM_MASA_MODE_PARAM,                       /* parametric ISM mode for combined MASA ISM format          */
#ifdef OMASA_UPDATES
    ISM_MASA_MODE_MASA_ONE_OBJ,                /* MASA ISM mode when one object is encoded separately and remainder using MASA parameters */
    ISM_MASA_MODE_PARAM_ONE_OBJ,               /* MASA ISM mode when one object is encoded separately and remainder using parametric object model */
#else
    ISM_MASA_MODE_ONE_OBJ,                     /* MASA ISM mode when one object is encoded separarately     */
#endif
    ISM_MASA_MODE_DISC                         /* MASA ISM mode when all objects are encoded separarately   */
#endif
} ISM_MODE;
@@ -639,11 +635,7 @@ enum
    IND_STEREO_DFT_SIDEGAIN_FLAG,

    IND_STEREO_DFT_SIDEGAINS,
    #ifdef OMASA_UPDATES
    IND_STEREO_DFT_ITD_MODE = IND_STEREO_DFT_SIDEGAINS + 4 * STEREO_DFT_BAND_MAX + 120,
    #else
    IND_STEREO_DFT_ITD_MODE = IND_STEREO_DFT_SIDEGAINS + 4 * STEREO_DFT_BAND_MAX + 72,
    #endif
    
    IND_STEREO_DFT_ITD_HUFF,
    IND_STEREO_DFT_ITD_NEG,
+0 −12
Original line number Diff line number Diff line
@@ -96,11 +96,7 @@ void ivas_masa_set_elements(
            if ( ivas_total_brate > MIN_BRATE_MDCT_STEREO )
            {
                *element_mode = IVAS_CPE_MDCT;
#ifdef OMASA_UPDATES
                if ( ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) && ( ivas_total_brate - ism_total_brate < MIN_BRATE_MDCT_STEREO ) )
#else
                if ( ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_ONE_OBJ ) && ( ivas_total_brate - ism_total_brate < MIN_BRATE_MDCT_STEREO ) )
#endif
                {
                    *element_mode = IVAS_CPE_DFT;
                }
@@ -119,11 +115,7 @@ void ivas_masa_set_elements(
        }
        hQMetaData->bits_frame_nominal = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC );
#ifdef MASA_AND_OBJECTS
#ifdef OMASA_UPDATES
        if ( ivas_format == MASA_ISM_FORMAT && ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_DISC ) )
#else
        if ( ivas_format == MASA_ISM_FORMAT && ( ism_mode == ISM_MASA_MODE_ONE_OBJ || ism_mode == ISM_MASA_MODE_DISC ) )
#endif
        {
            hQMetaData->bits_frame_nominal -= (int16_t) ( ism_total_brate / FRAMES_PER_SEC );
        }
@@ -634,11 +626,7 @@ int32_t calculate_cpe_brate_MASA_ISM(
        k++;
    }

#ifdef OMASA_UPDATES
    if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ )
#else
    if ( ism_mode == ISM_MASA_MODE_ONE_OBJ )
#endif
    {
        cpe_brate = ivas_total_brate - sep_object_brate[k - 2][0]; /* take data from the first column */
    }
+10 −55
Original line number Diff line number Diff line
@@ -58,15 +58,9 @@
#define GAMMA_ISM_MEDIUM_IMP3 1.15f
#define GAMMA_ISM_HIGH_IMP3   1.3f

#ifdef OMASA_UPDATES
#define GAMMA_ISM_LOW_IMP4    0.8f
#define GAMMA_ISM_MEDIUM_IMP4 1.0f
#define GAMMA_ISM_HIGH_IMP4   1.2f
#else
#define GAMMA_ISM_LOW_IMP4    0.6f
#define GAMMA_ISM_MEDIUM_IMP4 0.8f
#define GAMMA_ISM_HIGH_IMP4   1.0f
#endif


/*---------------------------------------------------------------
@@ -103,11 +97,7 @@ ISM_MODE ivas_omasa_ism_mode_select(
            }
            else if ( ivas_total_brate >= IVAS_32k )
            {
#ifdef OMASA_UPDATES
                ism_mode = ISM_MASA_MODE_PARAM_ONE_OBJ;
#else
                ism_mode = ISM_MASA_MODE_ONE_OBJ;
#endif
            }
            else
            {
@@ -121,23 +111,12 @@ ISM_MODE ivas_omasa_ism_mode_select(
            }
            else if ( ivas_total_brate >= IVAS_64k )
            {
#ifdef OMASA_UPDATES
                ism_mode = ISM_MASA_MODE_PARAM_ONE_OBJ;
#else
                ism_mode = ISM_MASA_MODE_ONE_OBJ;
#endif
            }
#ifdef OMASA_UPDATES
            else if ( ivas_total_brate >= IVAS_32k )
            {
                ism_mode = ISM_MASA_MODE_MASA_ONE_OBJ;
            }
#else
            else if ( ivas_total_brate >= IVAS_48k )
            {
                ism_mode = ISM_MASA_MODE_PARAM;
            }
#endif
            else
            {
                ism_mode = ISM_MODE_NONE;
@@ -148,7 +127,6 @@ ISM_MODE ivas_omasa_ism_mode_select(
            {
                ism_mode = ISM_MASA_MODE_DISC;
            }
#ifdef OMASA_UPDATES
            else if ( ivas_total_brate >= IVAS_64k )
            {
                ism_mode = ISM_MASA_MODE_PARAM_ONE_OBJ;
@@ -157,16 +135,6 @@ ISM_MODE ivas_omasa_ism_mode_select(
            {
                ism_mode = ISM_MASA_MODE_MASA_ONE_OBJ;
            }
#else
            else if ( ivas_total_brate >= IVAS_64k )
            {
                ism_mode = ISM_MASA_MODE_ONE_OBJ;
            }
            else if ( ivas_total_brate >= IVAS_48k )
            {
                ism_mode = ISM_MASA_MODE_PARAM;
            }
#endif
            else
            {
                ism_mode = ISM_MODE_NONE;
@@ -197,12 +165,8 @@ void ivas_set_omasa_TC(
            *nCPE = 1;
            *nSCE = 0;
            break;
#ifdef OMASA_UPDATES
        case ISM_MASA_MODE_MASA_ONE_OBJ:
        case ISM_MASA_MODE_PARAM_ONE_OBJ:
#else
        case ISM_MASA_MODE_ONE_OBJ:
#endif
            *nCPE = 1;
            *nSCE = 1;
            break;
@@ -233,11 +197,8 @@ int32_t ivas_interformat_brate(
    const ISM_MODE ism_mode,     /* i  : ISM mode                           */
    const int16_t nchan_ism,     /* i  : number of ISM channels             */
    const int32_t element_brate, /* i  : element bitrate                    */
    const int16_t ism_imp        /* i  : ISM importance flag    */
#ifdef OMASA_UPDATES
    ,
    const int16_t ism_imp,       /* i  : ISM importance flag                */
    const int16_t limit_flag     /* i  : flag to limit the bitrate increase */
#endif
)
{
    int32_t element_brate_out;
@@ -254,12 +215,11 @@ int32_t ivas_interformat_brate(
        if ( ism_mode == ISM_MASA_MODE_DISC && ( ( nchan_ism == 4 && element_brate == 24000 ) || ( nchan_ism == 3 && element_brate <= 24000 ) || ( nchan_ism == 2 && element_brate <= 11000 ) ) ) /* for border case in DISC mode */
        {

#ifdef OMASA_UPDATES
            if ( ( limit_flag == 1 ) && ( ( nchan_ism == 4 && element_brate == 24000 ) || ( nchan_ism == 3 && element_brate == 20000 ) || ( nchan_ism == 2 && element_brate <= 11000 ) ) )
            if ( limit_flag == 1 && ( ( nchan_ism == 4 && element_brate == 24000 ) || ( nchan_ism == 3 && element_brate == 20000 ) || ( nchan_ism == 2 && element_brate <= 11000 ) ) )
            {
                return element_brate;
            }
#endif

            if ( ism_imp == ISM_LOW_IMP )
            {
                nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP4 );
@@ -281,12 +241,7 @@ int32_t ivas_interformat_brate(
                }
            }
        }
        else
#ifdef OMASA_UPDATES
            if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ||
#else
            if ( ism_mode == ISM_MASA_MODE_ONE_OBJ ||
#endif
        else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ||
                  ( ism_mode == ISM_MASA_MODE_DISC && element_brate == 9600 ) /* this condition corresponds to the ivas_total_brate = 24400 and 1 object */
        )
        {
+4 −6
Original line number Diff line number Diff line
@@ -4844,7 +4844,7 @@ ivas_error vbap_init_data(
    const float *speaker_node_azi_deg,                          /* i  : vector of speaker node azimuths (positive left)          */
    const float *speaker_node_ele_deg,                          /* i  : vector of speaker node elevations (positive up)          */
    const int16_t num_speaker_nodes                             /* i  : number of speaker nodes in the set                       */
#ifdef OMASA_UPDATES
#ifdef MASA_AND_OBJECTS
    ,
    const int16_t support_object_mode                           /* i  : init VBAP also for object panning mode                   */
#endif
@@ -4859,7 +4859,7 @@ void vbap_determine_gains(
    float *gains,                                               /* o  : gain vector for speaker nodes for given direction        */
    const int16_t azi_deg,                                      /* i  : azimuth in degrees for panning direction (positive left) */
    const int16_t ele_deg                                       /* i  : elevation in degrees for panning direction (positive up) */
#ifdef OMASA_UPDATES
#ifdef MASA_AND_OBJECTS
    ,
    const int16_t use_object_mode                               /* i  : select between object mode panning and spatial mode panning */
#endif
@@ -5185,10 +5185,8 @@ int32_t ivas_interformat_brate(
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                */
    const int16_t nchan_ism,                                    /* i  : number of ISM channels                  */
    const int32_t element_brate,                                /* i  : element bitrate                         */
    const int16_t ism_imp                                       /* i  : ISM importance flag                     */
#ifdef OMASA_UPDATES
  , const int16_t limit_flag                                    /* i  : flag to limit the bitrate increase      */
#endif
    const int16_t ism_imp,                                      /* i  : ISM importance flag                     */
    const int16_t limit_flag                                    /* i  : flag to limit the bitrate increase      */
);

void ivas_combined_format_brate_sanity(
Loading