Commit f52c0ce8 authored by reutelhuber's avatar reutelhuber
Browse files

fix for OSBA bitstream writing with NULL metadata

parent f1a7b982
Loading
Loading
Loading
Loading
Loading

lib_com/options.h

100644 → 100755
+1 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@
#define SBA_AND_OBJECTS
#ifdef SBA_AND_OBJECTS
#define OSBA_BR_SWITCHING
#define FIX_691_OSBA_NULL_META
#endif

#define FIX_264_AUDIO_CHANNELS_TO_HEAP                  /* VA: issue 243: Move audio channels memory from stack to heap */
+7 −0
Original line number Diff line number Diff line
@@ -321,7 +321,11 @@ ivas_error ivas_ism_metadata_dec(
        }

        /* read ISM_NO_META class signalling */
#ifdef FIX_691_OSBA_NULL_META
        if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC )
#else
        if ( ism_mode == ISM_MODE_DISC )
#endif
        {
            for ( ch = 0; ch < *nchan_transport; ch++ )
            {
@@ -356,6 +360,9 @@ ivas_error ivas_ism_metadata_dec(
                        }
                    }
                    else
#endif
#ifdef FIX_691_OSBA_NULL_META
                        if ( ism_mode != ISM_SBA_MODE_DISC )
#endif
                    {
                        if ( null_metadata_flag[ch] )
+66 −10
Original line number Diff line number Diff line
@@ -375,6 +375,56 @@ ivas_error ivas_ism_metadata_enc(
        }
    }

#ifdef FIX_691_OSBA_NULL_META
    /* write ISM metadata flag (one per object) */
    for ( ch = 0; ch < nchan_transport; ch++ )
    {
#ifdef MASA_AND_OBJECTS
        if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ )
        {
            /* flags will be written in ivas_masa_encode() */
            hIsmMeta[ch]->ism_imp = ism_imp[ch];
            hIsmMeta[ch]->ism_md_null_flag = null_metadata_flag[ch];
            hIsmMeta[ch]->ism_md_lowrate_flag = lowrate_metadata_flag[ch];
        }
        else
        {
#endif
            if ( null_metadata_flag[ch] )
            {
                /* signal NULL metadata frame */
                push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS );

                /* write the ISM class to ISM_NO_META and again the true ISM class */
                push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, 1 );
                if ( ism_mode != ISM_SBA_MODE_DISC )
                {
                    push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS );
                }
            }
            else if ( ism_mode != ISM_SBA_MODE_DISC )
            {
                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 );

                    /* signal presence of MD in low-rate ISM_NO_META frame */
                    push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS );
                }
            }
            else /*ism_mode == ISM_SBA_MODE_DISC*/
            {
                /* all objects are considered active*/
                push_indice( hBstr, IND_ISM_METADATA_FLAG, 1, 1 );
            }
#ifdef MASA_AND_OBJECTS
        }
#endif
    }
#else
    /* write ISM metadata flag (one per object) */
    for ( ch = 0; ch < nchan_transport; ch++ )
    {
@@ -426,6 +476,8 @@ ivas_error ivas_ism_metadata_enc(
#endif
    }

#endif


    if ( ism_metadata_flag_global )
    {
@@ -703,6 +755,12 @@ ivas_error ivas_ism_metadata_enc(
            }
        }
    }
#ifdef FIX_691_OSBA_NULL_META
    else if ( ism_mode == ISM_SBA_MODE_DISC )
    {
        return error;
    }
#endif

#ifdef MASA_AND_OBJECTS
    /*----------------------------------------------------------------*
@@ -798,8 +856,7 @@ ivas_error ivas_ism_metadata_enc(
    }

#ifdef MASA_AND_OBJECTS
    if ( ism_mode != ISM_SBA_MODE_DISC )
    {

    for ( ch = 0; ch < nchan_transport; ch++ )
    {
        hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0;
@@ -829,7 +886,6 @@ ivas_error ivas_ism_metadata_enc(
            reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot );
        }
    }
	}
#else
    for ( ch = 0; ch < nchan_transport; ch++ )
    {