Commit e9646cab authored by vaclav's avatar vaclav
Browse files

fix JBM

parent 4765e6c6
Loading
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -691,7 +691,7 @@ UWord8 apa_exec_fx(
{
    UWord16 i;
#ifdef JBM_MEMORY_OPT
    Word16 frm_in[APA_BUF / APA_MAX_NUM_CHANNELS * 2]; /* in EVS, 2 output channels */ /* NOTE: this buffer could be smaller if alocated dynamically based on the actual sampling rate and number of channels */
    Word16 frm_in[CPE_CHANNELS * APA_BUF / APA_MAX_NUM_CHANNELS]; /* in EVS, 2 output channels */ /* NOTE: this buffer could be smaller if alocated dynamically based on the actual sampling rate and number of channels */
#else
    Word16 frm_in[APA_BUF]; /* TODO(mcjbm): this buffer could be smaller - always allocates space for 16 channels */
#endif
@@ -913,7 +913,7 @@ UWord8 apa_exec_ivas_fx(
    Word16 Q_a_out_init_old;

#ifdef JBM_MEMORY_OPT
    Q_a_out = add( getScaleFactor32_copy( a_in, L_mult0( ps->num_channels, l_in ) ), Q11 - Q16 - Q1 );
    Q_a_out = add( getScaleFactor32_copy( a_in, l_in ), Q11 - Q16 - Q1 );
#else
    Q_a_out = add( getScaleFactor32_copy( a_in, L_mult0( ps->num_channels, APA_BUF_PER_CHANNEL ) ), Q11 - Q16 - Q1 );
#endif
@@ -994,7 +994,7 @@ UWord8 apa_exec_ivas_fx(
        IF( EQ_32( ps->scale, 100 ) )
        {
#ifdef JBM_MEMORY_OPT
            FOR( i = 0; i < L_mult0( ps->num_channels, ps->l_frm ); i++ )
            FOR( i = 0; i < ps->l_frm; i++ )
#else
            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
#endif
@@ -1010,7 +1010,7 @@ UWord8 apa_exec_ivas_fx(
            Word16 *frm_in_ptr = &( frm_in[ps->l_frm] );

#ifdef JBM_MEMORY_OPT
            FOR( i = 0; i < L_mult0( ps->num_channels, ps->l_frm ); i++ )
            FOR( i = 0; i < ps->l_frm; i++ )
#else
            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
#endif
@@ -1064,7 +1064,7 @@ UWord8 apa_exec_ivas_fx(
            }

#ifdef JBM_MEMORY_OPT
            FOR( i = 0; i < L_mult0( ps->num_channels, ps->l_frm ); i++ )
            FOR( i = 0; i < 2 * ps->l_frm; i++ )
#else
            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
#endif
+12 −5
Original line number Diff line number Diff line
@@ -3855,7 +3855,8 @@ static ivas_error apa_exec_evs_wrapper(
    UWord16 *nTimeScalerOutSamples )
{
    Word16 ch;
    Word16 tmp_apaExecBuffer[APA_BUF / APA_MAX_NUM_CHANNELS * 2]; /* in EVS, 2 output channels */
    UWord16 apa_buff_len;
    Word16 tmp_apaExecBuffer[CPE_CHANNELS * APA_BUF / APA_MAX_NUM_CHANNELS]; /* in EVS, 2 output channels */
    DECODER_TC_BUFFER_HANDLE hTcBuffer;

    test();
@@ -3865,19 +3866,21 @@ static ivas_error apa_exec_evs_wrapper(
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

    apa_buff_len = (UWord16) shl( mult0( hIvasDec->nSamplesFrame, nTransportChannels ), 1 );

    hTcBuffer = hIvasDec->st_ivas->hTcBuffer;

    FOR( ch = 0; ch < APA_BUF_PER_CHANNEL * nTransportChannels; ++ch )
    FOR( ch = 0; ch < apa_buff_len; ++ch )
    {
        tmp_apaExecBuffer[ch] = extract_l( L_shr( hTcBuffer->tc_buffer_fx[ch], Q11 ) ); // Q0
    }

    IF( apa_exec_fx( hIvasDec->hTimeScaler, tmp_apaExecBuffer, (UWord16) imult3216( hIvasDec->nSamplesFrame, nTransportChannels ), (UWord16) hIvasDec->tsm_max_scaling, tmp_apaExecBuffer, nTimeScalerOutSamples ) != 0 )
    IF( apa_exec_fx( hIvasDec->hTimeScaler, tmp_apaExecBuffer, (UWord16) mult0( hIvasDec->nSamplesFrame, nTransportChannels ), (UWord16) hIvasDec->tsm_max_scaling, tmp_apaExecBuffer, nTimeScalerOutSamples ) != 0 )
    {
        return IVAS_ERR_UNKNOWN;
    }

    FOR( ch = 0; ch < APA_BUF_PER_CHANNEL * nTransportChannels; ++ch )
    FOR( ch = 0; ch < apa_buff_len; ++ch )
    {
        hTcBuffer->tc_buffer_fx[ch] = L_shl( tmp_apaExecBuffer[ch], Q11 ); // Q11
    }
@@ -5649,12 +5652,16 @@ static ivas_error evs_dec_main_fx(
    IF( st_ivas->hDecoderConfig->Opt_tsm )
    {
        /* BE workaround: in order to keep EVS bit-exact wrt. TS 26.443, convert 'float' output data to 'short' before the TSM */
#ifdef JBM_MEMORY_OPT
        Word32 pcm_buf_local[CPE_CHANNELS * L_FRAME48k];
#else
        Word32 pcm_buf_local[L_FRAME48k];
#endif

        FOR( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ )
        {
#ifdef JBM_MEMORY_OPT
            ivas_buffer_deinterleaved_to_interleaved_fx( &p_output_fx[ch], nOutSamples, 1, pcm_buf_local );
            ivas_buffer_deinterleaved_to_interleaved_fx( &p_output_fx[ch], st_ivas->hDecoderConfig->nchan_out, nOutSamples, pcm_buf_local );
#else
            ivas_syn_output_f_fx( &p_output_fx[ch], nOutSamples, 1, pcm_buf_local );
#endif