Commit 452cc126 authored by emerit's avatar emerit
Browse files

on going fix

parent d4f27e27
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -141,13 +141,25 @@ ivas_error ivas_ism_config(

        for ( ch = 0; ch < n_ISms; ch++ )
        {
#ifndef ISM_NO_DIEGETIC_PAN
#ifdef ISM_NO_DIEGETIC_PAN
            if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE )
            {
                nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS;
            }
            else
            {
                if ( hIsmMeta[ch]->ism_metadata_flag == 0 )
#endif
                {
                    nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS;
                }
            }
#else
            if ( hIsmMeta[ch]->ism_metadata_flag == 0 )
            {
                nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS;
            }
#endif
        }
    }

    /* split metadata bitbudget equally between channels */
+22 −14
Original line number Diff line number Diff line
@@ -196,13 +196,13 @@ ivas_error ivas_ism_metadata_dec(
        {
#ifndef ISM_NO_DIEGETIC_PAN
            ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS );
#endif
#ifdef ISM_NO_DIEGETIC_PAN
            localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS );
#endif
            if ( ism_imp[ch] > ISM_NO_META )
            {
#ifdef ISM_NO_DIEGETIC_PAN
                if ( ism_extended_metadata_flag )
                {
                    localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS );
                    /* read VAD flag */

                    if ( localVAD[ch] )
@@ -213,11 +213,21 @@ ivas_error ivas_ism_metadata_dec(
                    {
                        hIsmMeta[ch]->ism_metadata_flag = 1;
                    }
                localVAD[ch] = 1;
                }
                else
                {
                    hIsmMeta[ch]->ism_metadata_flag = 1;
                }
                localVAD[ch] = 1;
#else
                hIsmMeta[ch]->ism_metadata_flag = 1;
#endif
            }
            else
            {
#ifdef ISM_NO_DIEGETIC_PAN
                localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS );
#endif
                hIsmMeta[ch]->ism_metadata_flag = 0;
            }

@@ -226,9 +236,7 @@ ivas_error ivas_ism_metadata_dec(

        for ( ; ch < num_obj; ch++ )
        {
#ifndef ISM_NO_DIEGETIC_PAN
            hIsmMeta[ch]->ism_metadata_flag = 1;
#endif
            ism_metadata_flag_global |= hIsmMeta[ch]->ism_metadata_flag;
        }

+27 −13
Original line number Diff line number Diff line
@@ -224,6 +224,7 @@ ivas_error ivas_ism_metadata_enc(
    int16_t idx_elevation, idx_elevation_abs = 0, flag_abs_elevation[MAX_NUM_OBJECTS], nbits_diff_elevation;
#endif
#ifdef ISM_NO_DIEGETIC_PAN
    int16_t loc_ism_extended_metadata_flag = ism_extended_metadata_flag;
    int16_t idx_no_diegetic_pan_abs = 0, flag_abs_no_diegetic_pan[MAX_NUM_OBJECTS];
#endif
    float valQ;
@@ -381,7 +382,14 @@ ivas_error ivas_ism_metadata_enc(
    if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE )
    {
        push_indice( hBstr, IND_ISM_EXTENDED_FLAG, ism_extended_metadata_flag, ISM_EXTENDED_METADATA_BITS );
        loc_ism_extended_metadata_flag = ism_extended_metadata_flag;
    }
#ifdef ISM_NO_DIEGETIC_PAN
    else
    {
        loc_ism_extended_metadata_flag = 0;
    }
#endif
#endif
    /* write ISm metadata flag (one per object) */
    for ( ch = 0; ch < nchan_transport; ch++ )
@@ -405,7 +413,11 @@ ivas_error ivas_ism_metadata_enc(
                push_indice( hBstr, IND_ISM_VAD_FLAG, localVAD[ch], ISM_METADATA_VAD_FLAG_BITS );
            }
#ifdef ISM_NO_DIEGETIC_PAN
            else if ( hIsmMeta[ch]->ism_metadata_flag == 1 )
            else
            {
                if ( loc_ism_extended_metadata_flag )
                {
                    if ( hIsmMeta[ch]->ism_metadata_flag == 1 )
                    {
                        /* this flag distinguishes between coding of inactive frame and active frame w/o. metadata */
                        push_indice( hBstr, IND_ISM_VAD_FLAG, 0, ISM_METADATA_VAD_FLAG_BITS );
@@ -415,6 +427,8 @@ ivas_error ivas_ism_metadata_enc(
                        /* this flag distinguishes between coding of inactive frame and active frame w/o. metadata */
                        push_indice( hBstr, IND_ISM_VAD_FLAG, 1, ISM_METADATA_VAD_FLAG_BITS );
                    }
                }
            }
#endif
        }
    }
@@ -444,7 +458,7 @@ ivas_error ivas_ism_metadata_enc(
#ifdef ISM_NO_DIEGETIC_PAN
            if ( hIsmMeta[ch]->ism_metadata_flag == 2 )
            {
                if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag )
                if ( ism_mode == ISM_MODE_DISC && loc_ism_extended_metadata_flag )
                {
                    idx_no_diegetic_pan_abs = usquant( hIsmMetaData->no_diegetic_pan, &valQ, ISM_NO_DIEGETIC_PAN_MIN, ISM_NO_DIEGETIC_PAN_DELTA, 1 << ISM_NO_DIEGETIC_PAN_NBITS );
                    encode_no_diegetic_pan( hBstr, &hIsmMetaData->last_no_diegetic_pan_idx, &hIsmMetaData->no_diegetic_pan_diff_cnt, hIsmMetaData->last_ism_metadata_flag, idx_no_diegetic_pan_abs, &flag_abs_no_diegetic_pan[ch] );
@@ -477,7 +491,7 @@ ivas_error ivas_ism_metadata_enc(
                encode_angle_indices( hBstr, &( hIsmMetaData->angle[0] ), hIsmMetaData->last_ism_metadata_flag, hSCE[0]->hCoreCoder[0]->ini_frame, idx_azimuth_abs, idx_elevation_abs, &flag_abs_azimuth[ch], &flag_abs_elevation[ch] );

                /* Encode orientation and radius, if above certain bit rate etc, discrete ISM */
                if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag )
                if ( ism_mode == ISM_MODE_DISC && loc_ism_extended_metadata_flag )
                {
                    idx_azimuth_abs = ism_quant_meta( hIsmMetaData->yaw, &valQ, ism_azimuth_borders, 1 << ISM_AZIMUTH_NBITS );
                    idx_elevation_abs = ism_quant_meta( hIsmMetaData->pitch, &valQ, ism_elevation_borders, 1 << ISM_ELEVATION_NBITS );