Commit f48584a8 authored by vaclav's avatar vaclav
Browse files

adapt NULL MD support

parent 23b648c4
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -167,19 +167,24 @@ ivas_error ivas_ism_config(
        for ( ch = 0; ch < n_ISms; ch++ )
        {
#ifdef FIX_532_ISM_MD_INACTIVE
            if ( ism_imp[ch] == ISM_NO_META )
            //if ( ism_imp[ch] == ISM_NO_META )
            {
                nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS;


                if ( null_metadata_flag[ch] )
                {
                    nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS;
                    nb_bits_metadata[0] += ISM_METADATA_FLAG_BITS;
                }
                else
                {
                    if ( ism_imp[ch] == ISM_NO_META )
                    {
                        nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS;
                        nb_bits_metadata[0] += ISM_METADATA_INACTIVE_FLAG_BITS;
                    }
                }
            }
#else
            if ( hIsmMeta[ch]->ism_metadata_flag == 0 )
            {
+9 −2
Original line number Diff line number Diff line
@@ -241,6 +241,7 @@ ivas_error ivas_ism_metadata_dec(
                non_diegetic_flag_global = get_next_indice( st0, ISM_METADATA_IS_NDP_BITS );
            }
        }

        /* Apply hysteresis in case rate switching causes fluctuation in presence of extended metadata */
        if ( *ism_extmeta_active == -1 || *ism_extmeta_active == ism_extmeta_bitstream ) /* If first frame or bitstream matches internal state */
        {
@@ -257,7 +258,7 @@ ivas_error ivas_ism_metadata_dec(
            }
        }

        /* Read ISM present flags (one per object) */
        /* Read ISM metadata flags (one per object) */
        for ( ch = 0; ch < *nchan_transport; ch++ )
        {
            ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS );
@@ -290,7 +291,13 @@ ivas_error ivas_ism_metadata_dec(
                {
                    /* low-rate ISM_NO_META frame */
                    null_metadata_flag[ch] = get_next_indice( st0, ISM_METADATA_INACTIVE_FLAG_BITS );
                }
            }

            for ( ch = 0; ch < *nchan_transport; ch++ )
            {
                if ( ism_imp[ch] == ISM_NO_META )
                {
                    if ( null_metadata_flag[ch] )
                    {
                        /* read the true ISM class */
+23 −25
Original line number Diff line number Diff line
@@ -333,32 +333,24 @@ ivas_error ivas_ism_metadata_enc(
        }
    }

    /* write ISM metadata flag (one per object) */
    for ( ch = 0; ch < nchan_transport; ch++ )
    {
        push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS );
    }


#ifdef FIX_532_ISM_MD_INACTIVE
    /* write ISM_NO_META class signalling */
    if ( ism_mode == ISM_MODE_DISC )
    {
    /* write ISM metadata flag (one per object) */
    for ( ch = 0; ch < nchan_transport; ch++ )
        {
            if ( ism_imp[ch] == ISM_NO_META )
    {
        if ( null_metadata_flag[ch] )
        {
            /* signal NULL metadata frame */
            push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS );

                    /* rewrite the ISM class to ISM_NO_META foloowed by the true class */
                    delete_indice( hBstr, IND_ISM_METADATA_FLAG );
            /* write the ISM class to ISM_NO_META and again the true ISM class */
            push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS );
            push_indice( hBstr, IND_ISM_NOISY_SPEECH_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS );
        }
        else
        {
            push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS );

            if ( ism_imp[ch] == ISM_NO_META )
            {
                /* signal low-rate ISM_NO_META frame */
                push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS );
@@ -368,8 +360,14 @@ ivas_error ivas_ism_metadata_enc(
            }
        }
    }
    }

#else
    /* write ISM metadata flag (one per object) */
    for ( ch = 0; ch < nchan_transport; ch++ )
    {
        push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS );
    }

    if ( ism_mode == ISM_MODE_DISC )
    {
        /* write VAD flag */