<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Stuttering when using "Simultaneous output""
href="https://bugs.freedesktop.org/show_bug.cgi?id=47899#c32">Comment # 32</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Stuttering when using "Simultaneous output""
href="https://bugs.freedesktop.org/show_bug.cgi?id=47899">bug 47899</a>
from <span class="vcard"><a class="email" href="mailto:tanuk@iki.fi" title="Tanu Kaskinen <tanuk@iki.fi>"> <span class="fn">Tanu Kaskinen</span></a>
</span></b>
<pre>Thanks for the patch again! It's starting to be pretty complicated to review,
but I got through it anyway. Comments:
Apparently the logic for setting the output requested latency is to forward the
combine sink requested latency, except when that is -1, in which case the
maximum of the requested latencies of the downstream sinks is used. I think the
code is a bit broken if it does try to implement this (there's at least the
issue that if any of the downstream sinks has requested latency of -1, that
will propagate to all outputs, and sink_update_requested_latency() doesn't
handle transitions to -1 correctly), but actually I think this whole logic is
unnecessarily complicated. I think it's sufficient to just directly forward the
requested latency of the combine sink to the outputs. If you think -1 needs to
be handled specially, please explain why.
If the requested latency logic is simplified as I suggest, then I think the
userdata->requested_latency and output->requested_latency struct fields can be
removed.
update_latency_range() doesn't handle correctly the case where there are no
outputs, leading to crash in pa_sink_set_latency_range_within_thread(). I think
it would be best to set both the max and min latencies to u->block_usec in this
case.
You should call pa_sink_set_latency_range() before calling pa_sink_put() to
ensure that the initial latency range is sane. The latency values should be the
same that you use in update_latency_range() when there are no outputs.
SINK_MESSAGE_UPDATE_MAX_REQUEST and SINK_MESSAGE_UPDATE_LATENCY_RANGE should be
sent also from sink_input_detach_cb().
Then there's this issue that was there already before: SINK_MESSAGE_ADD_OUTPUT
is sent to the combine sink thread before the output has been attached. After
ADD_OUTPUT, the combine sink thread will start accessing the output parameters,
but the output parameters are not valid before attaching. Fixing this should
probably be done in a separate patch, and maybe this is something that is out
of scope for this bug, so you could ignore this. I have added a todo item for
myself to fix this.
It would be nice to get the next version also on the mailing list for easier
commenting.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>