Commit a8f5f413 authored by vaclav's avatar vaclav
Browse files

- support of bitrate switching in OMASA format; under OMASA_BRATE_SW

parent 57edb8d5
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -586,3 +586,31 @@ ISM_MODE ivas_ism_mode_select(

    return ism_mode;
}


#ifdef OMASA_BRATE_SW
/*-------------------------------------------------------------------------
 * ivas_ism_metadata_close()
 *
 * Deallocate ISM metadata handles
 *-------------------------------------------------------------------------*/

void ivas_ism_metadata_close(
    ISM_METADATA_HANDLE *hIsmMetaData, /* i/o: ISM metadata handles                 */
    const int16_t first_idx            /* i  : index of first handle to deallocate  */
)
{
    int16_t n;

    for ( n = first_idx; n < MAX_NUM_OBJECTS; n++ )
    {
        if ( hIsmMetaData[n] != NULL )
        {
            free( hIsmMetaData[n] );
            hIsmMetaData[n] = NULL;
        }
    }

    return;
}
#endif
+41 −0
Original line number Diff line number Diff line
@@ -169,6 +169,47 @@ ISM_MODE ivas_omasa_ism_mode_select(
}


#ifdef OMASA_BRATE_SW
/*---------------------------------------------------------------
 * ivas_set_omasa_TC()
 *
 * set number of transport channels in OMASA format
 * ---------------------------------------------------------------*/

void ivas_set_omasa_TC(
    const ISM_MODE ism_mode, /* i  : ISM mode                   */
    const int16_t nchan_ism, /* i  : number of input ISMs       */
    int16_t *nSCE,           /* o  : number of SCEs             */
    int16_t *nCPE            /* o  : number of CPEs             */
)
{
    switch ( ism_mode )
    {
        case ISM_MASA_MODE_PARAM:
            *nCPE = 1;
            *nSCE = 0;
            break;
        case ISM_MASA_MODE_ONE_OBJ:
            *nCPE = 1;
            *nSCE = 1;
            break;
        case ISM_MASA_MODE_DISC:
            *nCPE = 1;
            *nSCE = nchan_ism;
            break;
        case ISM_MODE_NONE:
            *nCPE = 1;
            *nSCE = 0;
            break;
        default:
            break;
    }

    return;
}
#endif


#ifdef OMASA_BRATE
/*---------------------------------------------------------------
 * ivas_interformat_brate()
+35 −3
Original line number Diff line number Diff line
@@ -802,6 +802,13 @@ ivas_error set_ism_metadata(
    float elevation                                             /* i  : elevation */
);

#ifdef OMASA_BRATE_SW
void ivas_ism_metadata_close( // VE: use it also at the encoder
    ISM_METADATA_HANDLE *hIsmMetaData,                          /* i/o: ISM metadata handles                        */
    const int16_t first_idx                                     /* i  : index of first handle to deallocate         */
);
#endif

ivas_error create_ism_metadata_enc(
    Encoder_Struct *st_ivas,                                    /* i/o: IVAS encoder structure                      */
    const int16_t n_ISms,                                       /* i  : number of objects                           */
@@ -5024,13 +5031,23 @@ void ivas_omasa_enc_close(
    const int16_t nchan_ism                                     /* i  : number of objects                       */
);

#ifdef OMASA_BRATE_SW
ivas_error ivas_omasa_enc_config(
    Encoder_Struct *st_ivas                                     /* i/o: IVAS encoder structure                  */
);

ivas_error ivas_omasa_dec_config(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                  */
);
#endif

void ivas_omasa_set_config(
    OMASA_ENC_HANDLE hOMasa,                                    /* i/o: OMASA encoder handle                    */
    MASA_ENCODER_HANDLE hMasa,                                  /* i  : MASA encoder handle                     */
    const int32_t input_Fs                                      /* i  : Input sample rate                       */
#ifdef OMASA_DIFFUSE_ISM_MERGE
    ,
    ISM_MODE ismMode                                            /* i   : ISM mode                               */
    const ISM_MODE ismMode                                      /* i   : ISM mode                               */
#endif
);

@@ -5061,7 +5078,7 @@ void ivas_set_surplus_brate_enc(

void ivas_set_surplus_brate_dec(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    int32_t *ism_total_brate                                    /* i  : ISM total bit-rate                      */
    int32_t *ism_total_brate                                    /* i  : ISM total bitrate                       */
);

void set_ism_importance_interformat(
@@ -5097,6 +5114,15 @@ ISM_MODE ivas_omasa_ism_mode_select(
    const int16_t nchan_ism                                     /* i  : number of input ISM's                   */
);

#ifdef OMASA_BRATE_SW
void ivas_set_omasa_TC(
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                */
    const int16_t nchan_ism,                                    /* i  : number of input ISMs                    */
    int16_t *nSCE,                                              /* o  : number of SCEs                          */
    int16_t *nCPE                                               /* o  : number of CPEs                          */
);
#endif

void ivas_merge_masa_transports(
    float data_in_f1[][L_FRAME48k],                             /* i  : Transport audio signals 1               */
    float data_in_f2[][L_FRAME48k],                             /* i  : Transport audio signals 2               */
@@ -5109,6 +5135,12 @@ ivas_error ivas_masa_ism_data_open(
    Decoder_Struct* st_ivas                                     /* i/o: IVAS decoder handle                     */
);

#ifdef OMASA_BRATE_SW
void ivas_masa_ism_data_close(
    MASA_ISM_DATA_HANDLE *hMasaIsmData                          /* i/o: MASA_ISM rendering handle               */
);
#endif

void preProcessStereoTransportsForMovedObjects(
    Decoder_Struct* st_ivas,
    float inRe[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
+2 −0
Original line number Diff line number Diff line
@@ -181,6 +181,8 @@

#define FIX_4OBJ_128    /* VA: fix to 4 ISMs 24 kbps case: when all objects are HIGH_IMP, keep 24 kbps bitrate, otherwise increase the 24 kbps bitrate */

#define OMASA_BRATE_SW  /* VA: support of bitrate switching in OMASA format */


#endif  /* MASA_AND_OBJECTS */

+2 −0
Original line number Diff line number Diff line
@@ -512,10 +512,12 @@ ivas_error ivas_cldfb_dec_reconfig(
            }
        }
    }

    /* CLDFB Interpolation weights */
    if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( numCldfbAnalyses_old != numCldfbAnalyses || numCldfbSyntheses_old != numCldfbSyntheses || nchan_transport_old != st_ivas->nchan_transport ) )
    {
        ivas_spar_get_cldfb_gains( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig );
    }

    return IVAS_ERR_OK;
}
Loading