Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,7 @@ #if 1 #define JBM_MEMORY_OPT /* VA: issue 916: optimization of RAM in the JBM decoder */ #define OPT_TC // separate heap memory from hTcBuffer->tcBuffer[] //#define FIX_OSBA_BR_SW_FLUSH // this is non-BE bugfix //#define REMOVE_APA_BUFFER // remove hIvasDec->apaExecBuffer[] #define MY_DEBUG Loading lib_dec/ivas_jbm_dec.c +13 −7 Original line number Diff line number Diff line Loading @@ -1425,12 +1425,15 @@ ivas_error ivas_jbm_dec_flush_renderer( #ifdef OPT_TC /* render available full slots (with new lower granularity) */ #ifdef FIX_OSBA_BR_SW_FLUSH for ( ch_idx = 0; ch_idx < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ ) #else for ( ch_idx = 0; ch_idx < min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ ) //for ( ch_idx = 0; ch_idx < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ ) #endif { mvr2r( hTcBuffer->tc_buffer_old[ch_idx], hTcBuffer->tc[ch_idx], n_samples_to_render ); } #ifndef FIX_OSBA_BR_SW_FLUSH for ( ; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ ) { /* move it at the beginning of the TC buffer with zero padding */ Loading @@ -1438,6 +1441,7 @@ ivas_error ivas_jbm_dec_flush_renderer( set_zero( hTcBuffer->tc[ch_idx] + n_samples_to_render, hTcBuffer->n_samples_granularity - n_samples_to_render ); mvr2r( hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_rendered + n_samples_to_render, hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_granularity, n_samples_still_available ); } #endif #else /* render what is still there with zero padding */ for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ ) Loading Loading @@ -2069,11 +2073,12 @@ static void ivas_jbm_dec_copy_tc( for ( ch = 0; ch < n_ch_full_copy; ch++ ) { #ifdef OPT_TC mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_rendered, n_samples_still_available ); #endif set_zero( hTcBuffer->tc[ch], hTcBuffer->n_samples_discard ); #ifdef OPT_TC mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_discard, n_samples_still_available ); #else mvr2r( hTcBuffer->tc[ch] + hTcBuffer->n_samples_rendered, hTcBuffer->tc[ch] + hTcBuffer->n_samples_discard, n_samples_still_available ); #endif for ( m = 0; m < nSamplesForRendering; m++ ) { hTcBuffer->tc[ch][n_samples_still_available + hTcBuffer->n_samples_discard + m] = data[m * st_ivas->hTcBuffer->nchan_transport_jbm + ch]; Loading @@ -2085,9 +2090,10 @@ static void ivas_jbm_dec_copy_tc( for ( ; ch < hTcBuffer->nchan_transport_jbm; ch++ ) { #ifdef OPT_TC mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], tc_digest_f[ch], n_samples_still_available ); // VE: TBV!!! #endif mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], tc_digest_f[ch], n_samples_still_available ); #else mvr2r( hTcBuffer->tc[ch], tc_digest_f[ch], n_samples_still_available ); #endif for ( m = 0; m < nSamplesForRendering; m++ ) { tc_digest_f[ch][n_samples_still_available + m] = data[m * st_ivas->hTcBuffer->nchan_transport_jbm + ch]; Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,7 @@ #if 1 #define JBM_MEMORY_OPT /* VA: issue 916: optimization of RAM in the JBM decoder */ #define OPT_TC // separate heap memory from hTcBuffer->tcBuffer[] //#define FIX_OSBA_BR_SW_FLUSH // this is non-BE bugfix //#define REMOVE_APA_BUFFER // remove hIvasDec->apaExecBuffer[] #define MY_DEBUG Loading
lib_dec/ivas_jbm_dec.c +13 −7 Original line number Diff line number Diff line Loading @@ -1425,12 +1425,15 @@ ivas_error ivas_jbm_dec_flush_renderer( #ifdef OPT_TC /* render available full slots (with new lower granularity) */ #ifdef FIX_OSBA_BR_SW_FLUSH for ( ch_idx = 0; ch_idx < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ ) #else for ( ch_idx = 0; ch_idx < min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ ) //for ( ch_idx = 0; ch_idx < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ ) #endif { mvr2r( hTcBuffer->tc_buffer_old[ch_idx], hTcBuffer->tc[ch_idx], n_samples_to_render ); } #ifndef FIX_OSBA_BR_SW_FLUSH for ( ; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ ) { /* move it at the beginning of the TC buffer with zero padding */ Loading @@ -1438,6 +1441,7 @@ ivas_error ivas_jbm_dec_flush_renderer( set_zero( hTcBuffer->tc[ch_idx] + n_samples_to_render, hTcBuffer->n_samples_granularity - n_samples_to_render ); mvr2r( hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_rendered + n_samples_to_render, hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_granularity, n_samples_still_available ); } #endif #else /* render what is still there with zero padding */ for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ ) Loading Loading @@ -2069,11 +2073,12 @@ static void ivas_jbm_dec_copy_tc( for ( ch = 0; ch < n_ch_full_copy; ch++ ) { #ifdef OPT_TC mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_rendered, n_samples_still_available ); #endif set_zero( hTcBuffer->tc[ch], hTcBuffer->n_samples_discard ); #ifdef OPT_TC mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_discard, n_samples_still_available ); #else mvr2r( hTcBuffer->tc[ch] + hTcBuffer->n_samples_rendered, hTcBuffer->tc[ch] + hTcBuffer->n_samples_discard, n_samples_still_available ); #endif for ( m = 0; m < nSamplesForRendering; m++ ) { hTcBuffer->tc[ch][n_samples_still_available + hTcBuffer->n_samples_discard + m] = data[m * st_ivas->hTcBuffer->nchan_transport_jbm + ch]; Loading @@ -2085,9 +2090,10 @@ static void ivas_jbm_dec_copy_tc( for ( ; ch < hTcBuffer->nchan_transport_jbm; ch++ ) { #ifdef OPT_TC mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], tc_digest_f[ch], n_samples_still_available ); // VE: TBV!!! #endif mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], tc_digest_f[ch], n_samples_still_available ); #else mvr2r( hTcBuffer->tc[ch], tc_digest_f[ch], n_samples_still_available ); #endif for ( m = 0; m < nSamplesForRendering; m++ ) { tc_digest_f[ch][n_samples_still_available + m] = data[m * st_ivas->hTcBuffer->nchan_transport_jbm + ch]; Loading