Skip to content

Commit 71f7fc1

Browse files
committed
audio: src: only allocate delay lines if size changes
If the delay line size hasn't changed no need to re-allocate the buffer. Also use size_t for some byte-size variables and structure members. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
1 parent d7f0242 commit 71f7fc1

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

‎src/audio/src/src_common.c‎

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,7 @@ int src_params_general(struct processing_module *mod,
480480
struct comp_data *cd = module_get_private_data(mod);
481481
struct comp_dev *dev = mod->dev;
482482
size_t delay_lines_size;
483+
size_t old_total;
483484
int32_t *buffer_start;
484485
int n;
485486
int err;
@@ -510,6 +511,8 @@ int src_params_general(struct processing_module *mod,
510511
cd->source_frames = dev->frames * cd->source_rate / cd->sink_rate;
511512
cd->sink_frames = dev->frames;
512513

514+
old_total = cd->param.total;
515+
513516
/* Allocate needed memory for delay lines */
514517
err = src_buffer_lengths(dev, cd, cd->channels_count);
515518
if (err < 0) {
@@ -529,14 +532,16 @@ int src_params_general(struct processing_module *mod,
529532
}
530533
delay_lines_size = ALIGN_UP(sizeof(int32_t) * cd->param.total, 8);
531534

532-
/* free any existing delay lines. TODO reuse if same size */
533-
mod_free(mod, cd->delay_lines);
535+
if (!cd->delay_lines || old_total != cd->param.total) {
536+
/* free any existing delay lines */
537+
mod_free(mod, cd->delay_lines);
534538

535-
cd->delay_lines = mod_alloc(mod, delay_lines_size);
536-
if (!cd->delay_lines) {
537-
comp_err(dev, "failed to alloc cd->delay_lines, delay_lines_size = %zu",
538-
delay_lines_size);
539-
return -ENOMEM;
539+
cd->delay_lines = mod_alloc(mod, delay_lines_size);
540+
if (!cd->delay_lines) {
541+
comp_err(dev, "failed to alloc cd->delay_lines, delay_lines_size = %zu",
542+
delay_lines_size);
543+
return -ENOMEM;
544+
}
540545
}
541546

542547
/* Clear all delay lines here */

0 commit comments

Comments
 (0)