Skip to content

Commit e963760

Browse files
committed
demux: add demux_prepare_active_look_up() function
This commit adds demux_prepare_active_look_up() function. It contains channel parameter checking. Look up table should not include elements referring to channels higher than those actually set in source/sink buffers. Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
1 parent f84f031 commit e963760

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

src/audio/mux/mux.c

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,34 @@ static void mux_prepare_active_look_up(struct comp_dev *dev,
351351
}
352352
}
353353

354+
static void demux_prepare_active_look_up(struct comp_dev *dev,
355+
struct audio_stream *sink,
356+
const struct audio_stream *source,
357+
struct mux_look_up *look_up)
358+
{
359+
struct comp_data *cd = comp_get_drvdata(dev);
360+
uint8_t active_elem;
361+
uint8_t elem;
362+
363+
cd->active_lookup.num_elems = 0;
364+
365+
active_elem = 0;
366+
367+
/* init pointers */
368+
for (elem = 0; elem < look_up->num_elems; elem++) {
369+
if ((look_up->copy_elem[elem].in_ch >
370+
(source->channels - 1)) ||
371+
(look_up->copy_elem[elem].out_ch >
372+
(sink->channels - 1)))
373+
continue;
374+
375+
cd->active_lookup.copy_elem[active_elem] =
376+
look_up->copy_elem[elem];
377+
active_elem++;
378+
cd->active_lookup.num_elems = active_elem;
379+
}
380+
}
381+
354382
/* process and copy stream data from source to sink buffers */
355383
static int demux_copy(struct comp_dev *dev)
356384
{
@@ -431,9 +459,11 @@ static int demux_copy(struct comp_dev *dev)
431459
if (!sinks[i])
432460
continue;
433461

462+
demux_prepare_active_look_up(dev, &sinks[i]->stream,
463+
&source->stream, look_ups[i]);
434464
buffer_invalidate(source, source_bytes);
435465
cd->demux(dev, &sinks[i]->stream, &source->stream, frames,
436-
look_ups[i]);
466+
&cd->active_lookup);
437467
buffer_writeback(sinks[i], sinks_bytes[i]);
438468
}
439469

0 commit comments

Comments
 (0)