SBA Static memory
Using the code-base SHA-1: 30b12f8d from September 9, 2022, there was observed that some handles related to the SBA static memory are used only partially. Also, at the highest bitrates, the static RAM for binaural output is really high where the convolution module is opened and almost not used:
The modules with the most possible saving are listed below. The percentage numbers are related to the memory actually used in the handle. The full report can be obtained by MEM_COUNT_DETAILS
in the framework.
1) encoder, HOA3, 512 kbps -
- init_encoder 768 m:sizeof( IGF_ENC_INSTANCE ) - 0% 4x2071 8284
st->hIGFEnc = (IGF_ENC_INSTANCE_HANDLE) count_malloc( sizeof( IGF_ENC_INSTANCE ) )
-> follow-up in #157 (closed)
- ivas_spar_md_enc_o 165 m:sizeof( ivas_spar_md_enc_state_t ) - 34% 1x4189 4189
hMdEnc = (ivas_spar_md_enc_state_t *) count_malloc( sizeof( ivas_spar_md_enc_state_t ) )
-> follow-up in #161 (closed)
2) decoder, stereo output, 512 kbps
- init_decoder 680 m:sizeof( IGFDEC_INSTANCE ) - 37% 4x2692 10768
st->hIGFDec = (IGF_DEC_INSTANCE_HANDLE) count_malloc( sizeof( IGFDEC_INSTANCE ) )
-> follow-up in #157 (closed)
- ivas_sba_get_hoa_d 119 m:16 * 16 * sizeof( float ) - 13% 1x256 256
*hoa_dec_mtx = (float *) count_malloc( SBA_NHARM_HOA3 * MAX_OUTPUT_CHANNELS * sizeof( float ) )
-> follow-up in #159 (closed)
- ivas_spar_agc_dec_ 118 m:sizeof( float ) * output_frame - 40% 1x960 960
hAgc->agc_com.winFunc = (float *) count_malloc( sizeof( float ) * output_frame )
-> follow-up in #162 (closed)
- ivas_spar_td_decor 135 m:sizeof( ivas_td_decorr_state_t ) - 24% 1x724 724
hCovState = (ivas_td_decorr_state_t *) count_malloc( sizeof( ivas_td_decorr_state_t ) )
-> follow-up in #163 (closed)
- ivas_spar_md_dec_m 154 m:12 * 4 * sizeof( ivas_band_coeffs_ - 63% 1x2496 2496
hMdDec->spar_md.band_coeffs = (ivas_band_coeffs_t *) count_malloc( IVAS_MAX_NUM_BANDS * MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( ivas_band_coeffs_t ) )
-> follow-up in #161 (closed)
- ivas_spar_md_dec_o 316 m:sizeof( ivas_spar_md_dec_state_t ) - 61% 1x8047 8047
hMdDec = (ivas_spar_md_dec_state_t *) count_malloc( sizeof( ivas_spar_md_dec_state_t ) )
-> follow-up in #161 (closed)
3) decoder, HOA3 output, 512 kbps
- same as above except of
hoa_dec_mtx
-> follow-up in #159 (closed)
4) decoder, binaural output, 512 kbps
- ivas_binRenderer_c 166 m:sizeof( BINRENDERER_CONV_MODULE ) - 9% 1x157466 157466
hBinRenConvModule = (BINRENDERER_CONV_MODULE_HANDLE) count_malloc( sizeof( BINRENDERER_CONV_MODULE ) )
-> follow-up in #145 (closed)
5) decoder, 7.1.4 output, 512 kbps
- ivas_dirac_alloc_m 1229 m:sizeof( float ) * 2 * 4 * num_outp - 0% 1x5280 5280
hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc_( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands );
-> follow-up in #158 (closed)
- ivas_dirac_alloc_m 1245 m:sizeof( float ) * num_outputs_diff - 0% 1x660 660
hDirAC_mem->onset_filter = (float *) malloc_( sizeof( float ) * num_outputs_diff * num_freq_bands );
-> follow-up in #158 (closed)
6) decoder, binaural, 80 kbps
ivas_dirac_alloc_m 1184 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1186 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1188 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1190 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1193 m:sizeof( float ) * 2 * num_outputs_ - 0% 1x240 240
ivas_dirac_alloc_m 1201 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1205 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1217 m:sizeof( float ) * size - 100% 1x120 120
ivas_dirac_alloc_m 1222 m:sizeof( float ) * 2 * 4 * num_prot - 0% 1x960 960
ivas_dirac_alloc_m 1229 m:sizeof( float ) * 2 * 4 * num_outp - 0% 1x960 960
ivas_dirac_alloc_m 1235 m:sizeof( float ) * num_freq_bands - 0% 1x60 60
ivas_dirac_alloc_m 1236 m:sizeof( float ) * num_freq_bands - 0% 1x60 60
ivas_dirac_alloc_m 1244 m:sizeof( float ) * 2 * num_freq_ban - 0% 1x120 120
ivas_dirac_alloc_m 1245 m:sizeof( float ) * num_outputs_diff - 0% 1x120 120
ivas_dirac_dec_con 231 m:sizeof( DIRAC_DEC_DATA ) - 9% 1x2241 2241
-> follow-up in #158 (closed)
7) decoder, binaural, 32 kbps
- ivas_dirac_dec_con 772 m:sizeof( float ) * 2 * hDirAC->num_ - 0% 1x240 240
hDirAC->proto_frame_f = (float *) count_malloc( sizeof( float ) * 2 * hDirAC->num_protos_diff * hDirAC->num_freq_bands );
-> follow-up in #158 (closed)
8) encoder, HOA3, 13.2 kbps
- ivas_FB_mixer_open 213 m:sizeof( ivas_filterbank_t ) - 4% 1x1854 1854
hFbMixer->pFb = (ivas_filterbank_t *) count_malloc( sizeof( ivas_filterbank_t ) )
-> follow-up in #126 (closed)
Can the usage be optimized?