From: Clemens Ladisch <clemens@ladisch.de>
To: Jaroslav Kysela <perex@perex.cz>
Cc: alsa-devel@alsa-project.org
Subject: hw_ptr_interrupt removal broke interrupt pointer updates
Date: Tue, 26 Jan 2010 14:39:39 +0100 [thread overview]
Message-ID: <4B5EF09B.3040900@ladisch.de> (raw)
Commit "cleanup & merge hw_ptr update functions" says:
> The main change is hw_ptr_interrupt variable removal to simplify code
> logic. This variable can be computed directly from hw_ptr.
The hw_ptr_interrupt variable was needed to differentiate between the
position at the last normal pointer update and the position of the last
signaled period boundary.
if (in_interrupt) {
/* we know that one period was processed */
/* delta = "expected next hw_ptr" for in_interrupt != 0 */
delta = old_hw_ptr - (old_hw_ptr % runtime->period_size)
+ runtime->period_size;
if (delta > new_hw_ptr) {
hw_base += runtime->buffer_size;
It is possible for the status/delay ioctls to be called when the sound
card's pointer register alreay shows a position at the beginning of the
new period, but immediately before the interrupt is actually executed.
(This happens regularly on a SMP machine with mplayer.) When that
happens, the code thinks that the position must be at least one period
ahead of the current position and drops an entire buffer of data.
Best regards,
Clemens
next reply other threads:[~2010-01-26 13:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-26 13:39 Clemens Ladisch [this message]
2010-01-26 16:16 ` hw_ptr_interrupt removal broke interrupt pointer updates Jaroslav Kysela
2010-01-27 3:09 ` Raymond Yau
2010-01-27 7:06 ` Jaroslav Kysela
2010-01-27 9:49 ` Clemens Ladisch
2010-01-27 10:11 ` Jaroslav Kysela
2010-01-27 14:12 ` Clemens Ladisch
2010-01-27 17:21 ` Jaroslav Kysela
2010-02-01 15:33 ` Colin Guthrie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B5EF09B.3040900@ladisch.de \
--to=clemens@ladisch.de \
--cc=alsa-devel@alsa-project.org \
--cc=perex@perex.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.