Skip to content

Commit 5452607

Browse files
committed
mixin-mixout: handle congestion corner case without assert
If one mixout (A) is not able to process data, the 'sinks_free_frames' will be truncated compared other mixout buffers. When the mixin process is producing data to another mixout buffer (B), the number of already mixed frames may be larger than 'sinks_free_frames'. Further it is possible this mixout (B) has pending frames, leading to a larger 'start_frame' value. This is a valid and possible scenario, but will trigger assert(sinks_free_frames >= start_frame) in current code. As 'frames_to_copy' is already correctly calculated as limited to available free frames across all mixouts, no extra logic is needed when this condition happens. Mixin is not able to proceed until the congested mixout (A) has room again for further samples. Link: #6896 Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
1 parent 0f7c8be commit 5452607

File tree

1 file changed

+0
-1
lines changed

1 file changed

+0
-1
lines changed

src/audio/mixin_mixout/mixin_mixout.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,6 @@ static int mixin_process(struct processing_module *mod,
423423
* performance problems with processing data on time in mixout.
424424
*/
425425
start_frame = mixout_data->pending_frames[source_index];
426-
assert(sinks_free_frames >= start_frame);
427426

428427
sink_c = buffer_acquire(sink);
429428

0 commit comments

Comments
 (0)