Commit 5ead16ce authored by TYAGIRIS's avatar TYAGIRIS
Browse files

fix for issue 732, plana sba in OSBA mode

parent 93521388
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -5671,6 +5671,10 @@ void ivas_osba_enc(
    const ISM_MODE ism_mode,                                    /* i  : ISM mode                                  */
    const int16_t sba_analysis_order,                           /* i  : SBA order evaluated in DirAC/SPAR encoder */
    const int32_t input_Fs                                      /* i  : input sampling rate                       */
#ifdef FIX_732_PLANAR_SBA_OSBA
    ,
    const int16_t sba_planar /* i : planar SBA flag*/
#endif
);

ivas_error ivas_masa_ism_data_open(
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@

#define FIX_718_JBM_MD_UDPATE                           /* Fhg: fix issue #718, wrong setting of the update flag in the TD obj renderer in the JBM path */
#define FIX_719_CRASH_IN_CLEANUP                        /* VA: issue 719: fix Decoder crash after call to goto to cleanup */

#define FIX_732_PLANAR_SBA_OSBA                          /*Dlb : issue 732: fix for crash in planar mode in OSBA format*/

/* ################## End BE DEVELOPMENT switches ######################### */

+17 −1
Original line number Diff line number Diff line
@@ -368,15 +368,28 @@ ivas_error ivas_enc(
    }
    else if ( ivas_format == SBA_ISM_FORMAT )
    {
#ifdef FIX_732_PLANAR_SBA_OSBA
        int16_t planar_sba_orig;
        planar_sba_orig = hEncoderConfig->sba_planar;
#endif

        ivas_osba_enc_reconfig( st_ivas );

        /* Analyze objects and determine needed audio signals */
        ivas_osba_enc( st_ivas->hOSba, st_ivas->hIsmMetaData, data_f, input_frame, hEncoderConfig->nchan_ism, st_ivas->ism_mode, st_ivas->sba_analysis_order,
                       hEncoderConfig->input_Fs );
                       hEncoderConfig->input_Fs
#ifdef FIX_732_PLANAR_SBA_OSBA
                       ,
                       hEncoderConfig->sba_planar
#endif
        );

        if ( st_ivas->ism_mode == ISM_MODE_NONE )
        {
#ifdef FIX_732_PLANAR_SBA_OSBA
            /*once SBA and ISM are combined into SBA signal then disable planar flag*/
            hEncoderConfig->sba_planar = 0;
#endif
            if ( st_ivas->nchan_transport == 1 )
            {
                st = st_ivas->hSCE[st_ivas->nSCE - 1]->hCoreCoder[0];
@@ -433,6 +446,9 @@ ivas_error ivas_enc(
                    return error;
                }
            }
#ifdef FIX_732_PLANAR_SBA_OSBA
            hEncoderConfig->sba_planar = planar_sba_orig;
#endif
        }
        else
        {
+11 −0
Original line number Diff line number Diff line
@@ -382,6 +382,10 @@ void ivas_osba_enc(
    const ISM_MODE ism_mode,          /* i  : ISM mode                                    */
    const int16_t sba_analysis_order, /* i  : SBA order evaluated in DirAC/SPAR encoder */
    const int32_t input_Fs            /* i  : input sampling rate*/
#ifdef FIX_732_PLANAR_SBA_OSBA
    ,
    const int16_t sba_planar /* i : planar SBA flag*/
#endif
)
{
    float data_out_f[MAX_INPUT_CHANNELS][L_FRAME48k];
@@ -399,6 +403,13 @@ void ivas_osba_enc(
        /* Convert ISM to SBA */
        ivas_osba_render_ism_to_sba( data_in_f, data_out_f, input_frame, sba_analysis_order, nchan_ism, hIsmMeta, hOSba->prev_object_dm_gains, hOSba->interpolator );

#ifdef FIX_732_PLANAR_SBA_OSBA
        if ( sba_planar )
        {
            ivas_sba_zero_vert_comp( &( data_in_f[nchan_ism] ), sba_analysis_order, sba_planar, input_frame );
        }
#endif

        /* Merge SBA signals */
        ivas_merge_sba_transports( data_out_f, &( data_in_f[nchan_ism] ), data_in_f, input_frame, sba_analysis_order );
    }
+5 −0
Original line number Diff line number Diff line
@@ -574,7 +574,12 @@ ivas_error IVAS_ENC_ConfigureForSBAObjects(
    st_ivas->hEncoderConfig->sba_order = order;

    /* Input in ACN/SN3D in all cases (3D and planar): get number of channels */
#ifdef FIX_732_PLANAR_SBA_OSBA
    /*Input file will always contain all channels for a given order irrespective of planar flag*/
    st_ivas->hEncoderConfig->nchan_inp = ivas_sba_get_nchan( st_ivas->hEncoderConfig->sba_order, 0 ) + numObjects;
#else
    st_ivas->hEncoderConfig->nchan_inp = ivas_sba_get_nchan( st_ivas->hEncoderConfig->sba_order, isPlanar ) + numObjects;
#endif

    st_ivas->hEncoderConfig->Opt_PCA_ON = (int16_t) Opt_PCA_ON;