Commit 9ea697c8 authored by vaclav's avatar vaclav
Browse files

maintenance: new function ivas_omasa_ener_brate() + comments

parent 29a8aecf
Loading
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -947,7 +947,7 @@ ivas_error ivas_ism_enc(
    int16_t *nb_bits_metadata                                   /* i  : number of metadata bits                     */
#ifdef OMASA_ENERGIES
     ,
     int16_t flag_omasa_brate
     const int16_t flag_omasa_ener_brate                        /* i  : less bitrate for objects in OMASA flag      */
#endif
);

@@ -971,7 +971,7 @@ ivas_error ivas_ism_metadata_enc(
   ,const float lp_noise_CPE                                    /* i  : LP filterend total noise estimation         */
#ifdef OMASA_ENERGIES
    ,
    int16_t flag_omasa_brate
    const int16_t flag_omasa_ener_brate                         /* i  : less bitrate for objects in OMASA flag      */
#endif
#ifdef FIX_OMASA_STEREO_SWITCHING
   ,int16_t *omasa_stereo_sw_cnt
@@ -5078,7 +5078,7 @@ ivas_error ivas_masa_encode(
    const int16_t ism_imp                                       /* i  : importance of separated object                  */
#ifdef OMASA_ENERGIES
    ,
    const int16_t  flag_omasa_brate                             /* i  : flag for using less bitrate for objects in OMASA*/
    const int16_t flag_omasa_ener_brate                         /* i  : less bitrate for objects in OMASA flag          */
#endif
#endif
);
@@ -5728,6 +5728,16 @@ void set_ism_importance_interformat(
    int16_t ism_imp[]                                           /* o  : ISM importance flags                    */
);

#ifdef OMASA_ENERGIES
/*! r: flag for using less bitrate for objects in OMASA */
int16_t ivas_omasa_ener_brate(
    const int16_t nchan_ism,                                    /* i  : number of ISMs                          */
    const int32_t ivas_total_brate,                             /* i  : IVAS total bitrate                      */
    float data_f[][L_FRAME48k],                                 /* i  : Input / transport audio signals         */
    const int16_t input_frame                                   /* i  : Input frame size                        */
);
#endif

/*! r: adjusted bitrate */
int32_t ivas_interformat_brate(
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                */
+9 −36
Original line number Diff line number Diff line
@@ -63,9 +63,6 @@ ivas_error ivas_enc(
    Encoder_State *st; /* used for bitstream handling */
#ifdef MASA_AND_OBJECTS
    int16_t nb_bits_metadata[MAX_SCE + 1];
#ifdef OMASA_ENERGIES
    int16_t flag_omasa_brate;
#endif
#else
    int16_t nb_bits_metadata[MAX_SCE];
#endif
@@ -92,9 +89,6 @@ ivas_error ivas_enc(

#ifdef MASA_AND_OBJECTS
    set_s( nb_bits_metadata, 0, MAX_SCE + 1 );
#ifdef OMASA_ENERGIES
    flag_omasa_brate = 0;
#endif
#else
    set_s( nb_bits_metadata, 0, MAX_SCE );
#endif
@@ -304,6 +298,11 @@ ivas_error ivas_enc(
    {
        float data_separated_object[L_FRAME48k];
        int16_t idx_separated_object;
#ifdef OMASA_ENERGIES
        int16_t flag_omasa_ener_brate;

        flag_omasa_ener_brate = 0;
#endif

        if ( ( error = ivas_omasa_enc_config( st_ivas ) ) != IVAS_ERR_OK )
        {
@@ -358,40 +357,14 @@ ivas_error ivas_enc(
        else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC )
        {
#ifdef OMASA_ENERGIES
            float energy_ism, energy_masa;

            energy_ism = 0.0f;

            if ( st_ivas->nSCE >= 3 && st_ivas->hEncoderConfig->ivas_total_brate == IVAS_128k )
            {
                for ( i = 0; i < st_ivas->nSCE; i++ )
                {
                    energy_ism += sum2_f( data_f[i], input_frame );
                }

                energy_masa = 0.0f;

                for ( i = st_ivas->nSCE; i < st_ivas->nSCE + 2; i++ )
                {
                    energy_masa += sum2_f( data_f[i], input_frame );
                }

                energy_ism = energy_ism / ( energy_masa + 1.0f ) * 2.0f / (float) ( st_ivas->nSCE );
                flag_omasa_brate = 0;
                if ( energy_ism < 1.0f )
                {
                    flag_omasa_brate = 1;
                }
#ifdef DEBUG_MODE_INFO
                dbgwrite( &energy_ism, sizeof( float ), 1, 1, "en_ratio.bin" );
#endif
            }
            flag_omasa_ener_brate = ivas_omasa_ener_brate( st_ivas->hEncoderConfig->nchan_ism, ivas_total_brate, data_f, input_frame );
#endif

            /* Analysis, decision about bitrates per channel & core coding */
            if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, &nb_bits_metadata[1]
#ifdef OMASA_ENERGIES
                                         ,
                                         flag_omasa_brate
                                         flag_omasa_ener_brate
#endif
                                         ) ) != IVAS_ERR_OK )
            {
@@ -416,7 +389,7 @@ ivas_error ivas_enc(
                                         st_ivas->ism_mode, hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa, st_ivas->hIsmMetaData[0]->ism_imp
#ifdef OMASA_ENERGIES
                                         ,
                                         flag_omasa_brate
                                         flag_omasa_ener_brate
#endif
                                         ) ) != IVAS_ERR_OK )
        {
+2 −2
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ ivas_error ivas_ism_enc(
    int16_t *nb_bits_metadata                /* i  : number of metadata bits         */
#ifdef OMASA_ENERGIES
    ,
    int16_t flag_omasa_brate
    const int16_t flag_omasa_ener_brate /* i  : less bitrate for objects in OMASA flag */
#endif
)
{
@@ -288,7 +288,7 @@ ivas_error ivas_ism_enc(
                               nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, st_ivas->hMasa != NULL ? st_ivas->hMasa->data.lp_noise_CPE : 0
#ifdef OMASA_ENERGIES
                               ,
                               flag_omasa_brate
                               flag_omasa_ener_brate
#endif
#ifdef FIX_OMASA_STEREO_SWITCHING
                               ,
+3 −3
Original line number Diff line number Diff line
@@ -194,7 +194,7 @@ ivas_error ivas_ism_metadata_enc(
    const float lp_noise_CPE
#ifdef OMASA_ENERGIES
    ,
    int16_t flag_omasa_brate
    const int16_t flag_omasa_ener_brate /* i  : less bitrate for objects in OMASA flag */
#endif
#ifdef FIX_OMASA_STEREO_SWITCHING
    ,
@@ -704,9 +704,9 @@ ivas_error ivas_ism_metadata_enc(
        {
            *ism_total_brate += ivas_interformat_brate( ism_mode, nchan_ism, hSCE[ch]->element_brate, ism_imp[ch], brate_limit_flag );
#ifdef OMASA_ENERGIES
            if ( ism_imp[ch] > 1 && flag_omasa_brate == 1 && brate_limit_flag >= 0 )
            if ( ism_imp[ch] > 1 && flag_omasa_ener_brate == 1 && brate_limit_flag >= 0 )
            {
                *ism_total_brate -= flag_omasa_brate * ADJUST_ISM_BRATE_NEG;
                *ism_total_brate -= ADJUST_ISM_BRATE_NEG;
            }

            if ( brate_limit_flag == -1 && ism_imp[ch] >= 1 && nchan_ism >= 3 && ( ism_total_brate_ref - *ism_total_brate > IVAS_48k ) )
+2 −2
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ ivas_error ivas_masa_encode(
    const int16_t ism_imp                              /* i  : importance of separated object  */
#ifdef OMASA_ENERGIES
    ,
    const int16_t flag_omasa_brate /* i  : flag for using less bitrate for objects in OMASA */
    const int16_t flag_omasa_ener_brate /* i  : less bitrate for objects in OMASA flag */
#endif
#endif
)
@@ -470,7 +470,7 @@ ivas_error ivas_masa_encode(
#ifdef OMASA_ENERGIES
                if ( ivas_total_brate == IVAS_128k && nchan_ism >= 3 )
                {
                    push_next_indice( hMetaData, flag_omasa_brate, 1 );
                    push_next_indice( hMetaData, flag_omasa_ener_brate, 1 );
                    hQMetaData->metadata_max_bits -= 1;
                }
#endif
Loading