Commit 59fd769b authored by Fabian Bauer's avatar Fabian Bauer
Browse files

Final cleanups before merge

parent 49140070
Loading
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -960,7 +960,6 @@ void computeDiffuseness_fixed(
    q_intensity = add( q_factor_intensity[0], min_q_shift2 );
    move16();

    push_wmops( "(IDR) LOOP1 DirACparams computeDiffuseness B <<-|" );
    FOR( i = 0; i < DIRAC_NO_COL_AVG_DIFF; ++i )
    {
        /* Energy slow */
@@ -1070,7 +1069,6 @@ void computeDiffuseness_fixed(

        q_intensity = s_min( q_intensity, q_tmp );
    }
    pop_wmops(); /*push_wmops( "(IDR) LOOP1 DirACparams computeDiffuseness B <<-|" );/*/

    min_q_shift1 = getScaleFactor32( intensity_slow, i_mult( DIRAC_NUM_DIMS, num_freq_bands ) );
    min_q_shift1 = sub( min_q_shift1, idiv1616( add( find_guarded_bits_fx( DIRAC_NUM_DIMS ), 1 ), 2 ) );
+4 −17
Original line number Diff line number Diff line
@@ -2231,7 +2231,7 @@ void ivas_dirac_dec_render_sf_fx(
    move16();
    Word16 tmp1;

    push_wmops( "ivas_dirac_dec_render (IDR)" );
    push_wmops( "ivas_dirac_dec_render" );

    /* Initialize aux buffers */
    hDirAC = st_ivas->hDirAC;
@@ -2341,7 +2341,6 @@ void ivas_dirac_dec_render_sf_fx(
    }
    ELSE IF( !( EQ_16( st_ivas->ivas_format, SBA_FORMAT ) || EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) )
    {
        push_wmops( "(IDR) SBA_FORMAT | SBA_ISM_FORMAT" );
        Word16 outchannels;
        idx_lfe = 0;
        move16();
@@ -2410,7 +2409,6 @@ void ivas_dirac_dec_render_sf_fx(
                }
            }
        }
        pop_wmops(); /*push_wmops( "(IDR) SBA_FORMAT | SBA_ISM_FORMAT" );*/
    }

    size = imult1616( hDirACRend->num_outputs_dir, hSpatParamRendCom->num_freq_bands );
@@ -2708,7 +2706,6 @@ void ivas_dirac_dec_render_sf_fx(
        }
    }

    push_wmops( "(IDR) LOOP1" );
    FOR( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ )
    {
        index_slot = add( slot_idx_start, slot_idx );
@@ -2926,8 +2923,6 @@ void ivas_dirac_dec_render_sf_fx(
                    move16();
                    BREAK;
                default:
                    pop_wmops(); /* push_wmops( "ivas_dirac_dec_render (IDR)" );*/
                    pop_wmops(); /*push_wmops( "(IDR) LOOP1");/*/
                    return;
            }
            q_proto_direct_buffer[slot_idx] = hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q;
@@ -2937,7 +2932,6 @@ void ivas_dirac_dec_render_sf_fx(
        /*-----------------------------------------------------------------*
         * Compute DirAC parameters at decoder side
         *-----------------------------------------------------------------*/
        push_wmops( "(IDR) LOOP1 DirACparams |" );
        IF( EQ_16( hDirAC->hConfig->dec_param_estim, TRUE ) )
        {
            Copy( &hSpatParamRendCom->azimuth[md_idx][hDirAC->hConfig->enc_param_start_band], &azimuth[hDirAC->hConfig->enc_param_start_band], sub( hSpatParamRendCom->num_freq_bands, hDirAC->hConfig->enc_param_start_band ) );
@@ -2986,11 +2980,8 @@ void ivas_dirac_dec_render_sf_fx(
            hDirACRend->q_buffer_energy[index - 1] = DirAC_mem.reference_power_q;
            move16();

            push_wmops( "(IDR) LOOP1 DirACparams computeDiffuseness <-|" );
            computeDiffuseness_fixed( hDirACRend->buffer_intensity_real_fx, hDirACRend->buffer_energy_fx, num_freq_bands, hSpatParamRendCom->diffuseness_vector_fx[md_idx], hDirACRend->q_buffer_intensity_real, hDirACRend->q_buffer_energy, &hSpatParamRendCom->q_diffuseness_vector );
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 DirACparams computeDiffuseness <-|" );/*/
        }
        pop_wmops(); /* push_wmops( "(IDR) LOOP1 DirACparams |" );*/

        /*-----------------------------------------------------------------*
         * frequency domain decorrelation
@@ -3092,7 +3083,6 @@ void ivas_dirac_dec_render_sf_fx(
        }

        /*Compute PSDs*/
        push_wmops( "(IDR) LOOP1 PSDs |" );
        h_dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params );
        h_dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state );
        num_channels_dir = hDirACRend->num_outputs_dir;
@@ -3175,7 +3165,6 @@ void ivas_dirac_dec_render_sf_fx(
        }
        ELSE
        {
            push_wmops( "(IDR) LOOP1 PSDs PATH3 <-|" );
            ivas_dirac_dec_output_synthesis_process_slot_fx( reference_power_fx,
                                                             DirAC_mem.reference_power_q,
                                                             p_onset_filter_fx,
@@ -3193,7 +3182,6 @@ void ivas_dirac_dec_render_sf_fx(
                                                             md_idx,
                                                             hodirac_flag,
                                                             hDirAC->hConfig->dec_param_estim );
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 <-|" );/*/
        }

        IF( hDirAC->hConfig->dec_param_estim )
@@ -3264,9 +3252,7 @@ void ivas_dirac_dec_render_sf_fx(
            v_add_fixed( reference_power_fx, reference_power_smooth_fx, reference_power_smooth_fx, hSpatParamRendCom->num_freq_bands, 1 );
            q_reference_power_smooth = sub( q_reference_power_smooth, 1 );
        }
        pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs |" );*/
    }
    pop_wmops(); /*push_wmops( "(IDR) LOOP1" );*/

    minimum_s( q_proto_direct_buffer, hSpatParamRendCom->subframe_nbslots[subframe_idx], &hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q );
    IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) )
@@ -3595,6 +3581,7 @@ void ivas_dirac_dec_render_sf_fx(
    /*-----------------------------------------------------------------*
     * CLDFB synthesis (and binaural rendering)
     *-----------------------------------------------------------------*/

    index_slot = slot_idx_start_cldfb_synth;
    move16();

@@ -3976,7 +3963,6 @@ void ivas_dirac_dec_render_sf_fx(
        }
    }


    hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe_idx] );
    move16();
    hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 );
@@ -4091,7 +4077,8 @@ void ivas_dirac_dec_render_sf_fx(
            }
        }
    }
    pop_wmops(); /*push_wmops( "ivas_dirac_dec_render (IDR)" );*/

    pop_wmops();

    return;
}
+3 −42
Original line number Diff line number Diff line
@@ -710,13 +710,11 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
        }
    }

    push_wmops( "(IDR) LOOP1 PSDs PATH3 B <<-|" );
    test();
    IF( dec_param_estim == FALSE && hodirac_flag )
    {
        IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) )
        {
            push_wmops( "(IDR) LOOP1 PSDs PATH3 B1<<<-|" );
            v_multc_fixed( hSpatParamRendCom->energy_ratio1_fx[md_idx], -MAX_32 /*-1 Q31*/, aux_buf, num_freq_bands ); /* 30 + 31 - 31 -> 30 */
            v_addc_fixed( aux_buf, ONE_IN_Q30 /*1 Q30*/, aux_buf, num_freq_bands );                                    /*30*/
            Copy32( hSpatParamRendCom->energy_ratio1_fx[md_idx],
@@ -739,24 +737,19 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
            move16();
            h_dirac_output_synthesis_state->direct_power_factor_q = 30;
            move16();
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B1<<<-|" );/*/
        }
        ELSE
        {
            push_wmops( "(IDR) LOOP1 PSDs PATH3 B2<<<-|" );
            ivas_dirac_dec_compute_gain_factors_fx( num_freq_bands,
                                                    hSpatParamRendCom->diffuseness_vector_fx[md_idx],
                                                    h_dirac_output_synthesis_state->direct_power_factor_fx,
                                                    h_dirac_output_synthesis_state->diffuse_power_factor_fx,
                                                    &h_dirac_output_synthesis_state->direct_power_factor_q,
                                                    &h_dirac_output_synthesis_state->diffuse_power_factor_q );
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B2<<<-|" );*/
        }
    }
    ELSE IF( EQ_16( dec_param_estim, TRUE ) )
    {
        push_wmops( "(IDR) LOOP1 PSDs PATH3 B3<<<-|" );
        push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.1<<<<-|" );
        /* compute direct responses */
        ivas_dirac_dec_compute_directional_responses_fx( hSpatParamRendCom,
                                                         hDirACRend,
@@ -771,7 +764,7 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                                                         sh_rot_max_order,
                                                         p_Rmat,
                                                         hodirac_flag );
        pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.1<<<<-|" );*/

        {
            IF( h_dirac_output_synthesis_state->direct_responses_square_fx )
            {
@@ -818,14 +811,12 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                Q_temp_cy_cross_dir_smooth_fx[kk] = h_dirac_output_synthesis_state->q_cy_cross_dir_smooth;
                move16();
            }
            push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop <<<<-|" );

            FOR( ch_idx = 0; ch_idx < s_min( 4, nchan_transport ); ch_idx++ )
            {
                Word16 k;
                IF( ch_idx != 0 )
                {
                    push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop IF <<<<<-|" );
                    ;
                    Word32 a, c;
                    Word16 b, b_exp, sqr_exp, q_diff_aab, q_diff_c;
                    Word32 mpy_a_a_b, mpy_diff_c, mpy_diff_aab;
@@ -915,8 +906,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                        }
                    }
                    c = Madd_32_16( ONE_IN_Q27 /*1 Q27*/, L_sub( h_dirac_output_synthesis_params->diffuse_compensation_factor_fx, ONE_IN_Q27 /*1 Q27*/ ), 5461 ); /*Diffuseness modellling nrg compensation*/ /* 1.0 / 6.0  = 5461 in Q15*/ /*Q27*/

                    push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop IF nfreqbds <<<<<<-|" );
                    FOR( ; k < num_freq_bands; k++ )
                    {
                        a = h_dirac_output_synthesis_state->direct_responses_fx[ch_idx * num_freq_bands + k]; // Q = h_dirac_output_synthesis_state->q_direct_responses
@@ -942,18 +931,7 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                                b = BASOP_Util_Divide3232_Scale( reference_power[k + num_freq_bands], reference_power[k + ( ch_idx + 1 ) * num_freq_bands], &b_exp ); /*q(15-b_exp)*/
                            }
                        }
#ifdef FIX_1072_SPEEDUP_output_synthesis_procSlot
                        q_diff_aab = add( h_dirac_output_synthesis_state->direct_responses_q + sub( sub( 15, b_exp ), 15 ), add( sub( h_dirac_output_synthesis_state->direct_responses_q, 31 ), sub( q_diffuseness, 31 ) ) );
                        q_diff_c = sub( q_diffuseness, 4 );

                        mpy_a_a_b = Mpy_32_32( a, Mpy_32_16_1( a, b ) );                                           // Q = (h_dirac_output_synthesis_state->q_direct_responses + (15 - b_exp) - 15) + (h_dirac_output_synthesis_state->q_direct_responses) - 31
                        mpy_diff_aab = Mpy_32_32( L_sub( L_shl( 1, q_diffuseness ), diffuseness[k] ), mpy_a_a_b ); // Q = 2*(h_dirac_output_synthesis_state->q_direct_responses) - b_exp - 31 + q_diffuseness -31
                        mpy_diff_c = Mpy_32_32( diffuseness[k], c );                                               // Q = q_diffuseness - 4

                        /*Todo: simplify so that mpy+add can be merged to madd*/
                        sqr_inp = BASOP_Util_Add_Mant32Exp( mpy_diff_c, sub( 31, q_diff_c ), mpy_diff_aab, sub( 31, q_diff_aab ), &sqr_exp ); /*q(31-sqr_exp)*/

#else
                        mpy_a_a_b = Mpy_32_32( a, Mpy_32_16_1( a, b ) );                                           // Q = (h_dirac_output_synthesis_state->q_direct_responses + (15 - b_exp) - 15) + (h_dirac_output_synthesis_state->q_direct_responses) - 31
                        mpy_diff_aab = Mpy_32_32( L_sub( L_shl( 1, q_diffuseness ), diffuseness[k] ), mpy_a_a_b ); // Q = 2*(h_dirac_output_synthesis_state->q_direct_responses) - b_exp - 31 + q_diffuseness -31
                        mpy_diff_c = Mpy_32_32( diffuseness[k], c );                                               // Q = q_diffuseness - 4
@@ -981,8 +959,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                                sqr_exp = sub( 31, q_diff_c ); /*q_diff_c*/
                            }
                        }
#endif

                        sqr = Sqrt32( sqr_inp, &sqr_exp ); /*Q(31-sqr_exp)*/
                        sqr = L_shr( sqr, 2 );             /*Q(31-sqr_exp)*/
                        IF( h_dirac_output_synthesis_state->cy_cross_dir_smooth_fx[ch_idx * num_freq_bands + k] != 0 )
@@ -1011,12 +987,9 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                            move16();
                        }
                    }
                    pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop IF nfreqbds <<<<<<-|" );*/
                    pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop IF <<<<<-|" );*/
                }
                ELSE
                {
                    push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop ELSE <<<<<-|" );
                    Word32 sqr_inp, mpy_diff, sqr;
                    Word16 sqr_exp;
                    /*Diffuseness modellling nrg compensation*/
@@ -1054,7 +1027,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                            move16();
                        }
                    }
                    push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop ELSE nfreqbds <<<<<<-|" );
                    FOR( ; k < num_freq_bands; k++ )
                    {
                        mpy_diff = Mpy_32_32( diffuseness[k], L_sub( h_dirac_output_synthesis_params->diffuse_compensation_factor_decorr_fx, ONE_IN_Q29 /*1 Q29*/ ) ); // Q = q_diffuseness - 1
@@ -1088,12 +1060,8 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                            move16();
                        }
                    }
                    pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop ELSE nfreqbds <<<<<<-|" );*/
                    pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop ELSE <<<<<-|" );/*/
                }
            }
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 bigloop <<<<-|" );/*/

            Word16 temp = MAX_16; /*q0*/
            move16();
            tmp16 = imult1616( num_freq_bands, num_channels_dir );
@@ -1110,8 +1078,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
            }
            free( Q_temp_cy_cross_dir_smooth_fx );
            /*Directional gain (panning)*/
            push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 gainpanning <<<<-|" );

            Word16 temp_q = sub( add( h_dirac_output_synthesis_state->direct_power_factor_q, h_dirac_output_synthesis_state->direct_responses_q ), 31 );
            IF( LT_16( temp_q, h_dirac_output_synthesis_state->q_cy_cross_dir_smooth ) )
            {
@@ -1192,9 +1158,7 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                             &h_dirac_output_synthesis_state->cy_cross_dir_smooth_fx[ch_idx * num_freq_bands],
                             num_freq_bands, 0 ); /*Q(h_dirac_output_synthesis_state->q_cy_cross_dir_smooth)*/
            }

#endif
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3.3 gainpanning <<<<-|" );*/

            /*Diffuse gain*/
            FOR( ch_idx = s_min( 4, nchan_transport ); ch_idx < num_channels_diff; ch_idx++ )
@@ -1213,8 +1177,7 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
                             &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff],
                             num_freq_bands_diff, 0 ); /*h_dirac_output_synthesis_state->q_cy_auto_diff_smooth*/
            }
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3 <<-|" );/*/
            pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B <<-|" );/*/

            return;
        }
        ELSE
@@ -1233,9 +1196,7 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
            h_dirac_output_synthesis_state->direct_power_factor_q = 31;
            move16();
        }
        pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B3<<<-|" );/*/
    }
    pop_wmops(); /*push_wmops( "(IDR) LOOP1 PSDs PATH3 B <<-|" );/*/

    diff_start_band = 0;
    move16();