Commit f087b562 authored by vaclav's avatar vaclav
Browse files

fix merging with OBJ_EDITING_API in MC_MODE_PARAMMC

parent 3b18e2ce
Loading
Loading
Loading
Loading
+0 −46
Original line number Diff line number Diff line
@@ -1662,53 +1662,7 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx(
    }
    ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) && EQ_32( hTcBuffer->tc_buffer_mode, TC_BUFFER_MODE_RENDERER ) )
    {
        Word16 nchan_transport = st_ivas->nchan_transport;
        move16();
        Word16 nchan_out_transport = add( st_ivas->hTransSetup.nchan_out_woLFE, st_ivas->hTransSetup.num_lfe );
        Word16 nchan_out_cov;

        test();
        test();
        IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) )
        {
            nchan_out_cov = add( st_ivas->hTransSetup.nchan_out_woLFE, st_ivas->hTransSetup.num_lfe );
        }
        ELSE IF( EQ_16( st_ivas->hParamMC->synthesis_conf, PARAM_MC_SYNTH_LS_CONV_CLDFB ) )
        {
            nchan_out_cov = nchan_out_transport;
            move16();
        }
        ELSE IF( EQ_16( st_ivas->hParamMC->synthesis_conf, PARAM_MC_SYNTH_LS_CONV_COV ) || EQ_16( st_ivas->hParamMC->synthesis_conf, PARAM_MC_SYNTH_MONO_STEREO ) )
        {
            nchan_out_cov = add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe );
        }
        ELSE
        {
            nchan_out_cov = nchan_out_transport;
            move16();
        }

        scale_sig32( st_ivas->hParamMC->proto_matrix_int_fx, st_ivas->hParamMC->proto_matrix_int_len, -1 ); // Q(31-1)
        st_ivas->hParamMC->proto_matrix_int_e = 1;
        move16();

        ivas_param_mc_dec_digest_tc_fx( st_ivas, (uint8_t) n_render_timeslots, p_data_fx, Q11 );

        scale_sig32( st_ivas->hParamMC->proto_matrix_int_fx, st_ivas->hParamMC->proto_matrix_int_len, 1 ); // Q(31-1+1)

        Word16 shift, param_band_idx;
        FOR( param_band_idx = 0; param_band_idx < st_ivas->hParamMC->num_param_bands_synth; param_band_idx++ )
        {
            shift = getScaleFactor32( st_ivas->hParamMC->h_output_synthesis_cov_state.cx_old_fx[param_band_idx], s_min( st_ivas->hParamMC->h_output_synthesis_cov_state.cx_old_len, nchan_transport * nchan_transport ) );
            scale_sig32( st_ivas->hParamMC->h_output_synthesis_cov_state.cx_old_fx[param_band_idx], s_min( st_ivas->hParamMC->h_output_synthesis_cov_state.cx_old_len, i_mult( nchan_transport, nchan_transport ) ), shift ); // Q(31-cx_old_e+shift)
            st_ivas->hParamMC->h_output_synthesis_cov_state.cx_old_e[param_band_idx] = sub( st_ivas->hParamMC->h_output_synthesis_cov_state.cx_old_e[param_band_idx], shift );
            move16();

            shift = getScaleFactor32( st_ivas->hParamMC->h_output_synthesis_cov_state.cy_old_fx[param_band_idx], nchan_out_cov * nchan_out_cov );
            scale_sig32( st_ivas->hParamMC->h_output_synthesis_cov_state.cy_old_fx[param_band_idx], i_mult( nchan_out_cov, nchan_out_cov ), shift ); // Q(31-cy_old_e+shift)
            st_ivas->hParamMC->h_output_synthesis_cov_state.cy_old_e[param_band_idx] = sub( st_ivas->hParamMC->h_output_synthesis_cov_state.cy_old_e[param_band_idx], shift );
            move16();
        }
    }

    hTcBuffer->n_samples_rendered = 0;
+11 −8
Original line number Diff line number Diff line
@@ -1542,7 +1542,7 @@ void ivas_param_mc_dec_digest_tc_fx(
    assert( hParamMC );

#endif
    Word16 qout = 0;
    Word16 q_out = 0;
    move16();

    /* Initialization */
@@ -1564,18 +1564,21 @@ void ivas_param_mc_dec_digest_tc_fx(
    {
        FOR( slot_idx = 0; slot_idx < nCldfbSlots; slot_idx++ )
        {
            qout = q_data;
            q_out = q_data;
            move16();

            cldfbAnalysis_ts_fx_fixed_q( &( p_data_fx[ch][num_freq_bands * slot_idx] ),
                                         &cldfb_real_buffer[slot_idx * num_freq_bands * n_ch_cldfb + cldfb_ch * num_freq_bands],
                                         &cldfb_imag_buffer[slot_idx * num_freq_bands * n_ch_cldfb + cldfb_ch * num_freq_bands],
                                         num_freq_bands, st_ivas->cldfbAnaDec[cldfb_ch], &qout );
                                         num_freq_bands, st_ivas->cldfbAnaDec[cldfb_ch], &q_out );
        }

        st_ivas->hParamMC->Cldfb_ImagBuffer_tc_e = qout;
        IF( st_ivas->hDecoderConfig->Opt_tsm )
        {
            st_ivas->hParamMC->Cldfb_ImagBuffer_tc_e = q_out;
            move16();
        }
    }
#else
    /* slot loop for gathering the input data */
    FOR( slot_idx = 0; slot_idx < nCldfbSlots; slot_idx++ )
@@ -1588,15 +1591,15 @@ void ivas_param_mc_dec_digest_tc_fx(
            /* CLDFB Analysis*/
            FOR( ch = 0; ch < nchan_transport; ch++ )
            {
                qout = transport_f_e;
                q_out = q_data;
                move16();
                cldfbAnalysis_ts_fx_fixed_q( &( p_data_fx[ch][hParamMC->num_freq_bands * slot_idx] ), RealBuffer_fx, ImagBuffer_fx, hParamMC->num_freq_bands, st_ivas->cldfbAnaDec[ch], &qout );
                cldfbAnalysis_ts_fx_fixed_q( &( p_data_fx[ch][hParamMC->num_freq_bands * slot_idx] ), RealBuffer_fx, ImagBuffer_fx, hParamMC->num_freq_bands, st_ivas->cldfbAnaDec[ch], &q_out );

                Copy32( RealBuffer_fx, &hParamMC->Cldfb_RealBuffer_tc_fx[slot_idx * hParamMC->num_freq_bands * nchan_transport + ch * hParamMC->num_freq_bands], hParamMC->num_freq_bands );
                Copy32( ImagBuffer_fx, &hParamMC->Cldfb_ImagBuffer_tc_fx[slot_idx * hParamMC->num_freq_bands * nchan_transport + ch * hParamMC->num_freq_bands], hParamMC->num_freq_bands );
            }

            hParamMC->Cldfb_ImagBuffer_tc_e = qout;
            hParamMC->Cldfb_ImagBuffer_tc_e = q_out;
            move16();
        }
    }