From: Henrik Eriksson <henrik.eriksson@axis.com>
To: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
alsa-devel@alsa-project.org
Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Subject: [RFC PATCH] ALSA: core: do not update tstamp when hw ptr has not moved
Date: Thu, 16 Nov 2017 13:43:57 +0100 [thread overview]
Message-ID: <20171116124349.GA21810@lnxhenriken2.se.axis.com> (raw)
Hello
This reverts a change that was part of a larger commit. That change
broke timestamps in some application code for us as outlined in the log,
and reverting it obviously fixes this. Since the original change did
not explain why the behaviour was modified I can't speak for the effects
on that use case.
Regards,
/henrik
>8------------------------------------------------------8<
Commit 3179f62001880e588e229db3006a59ad87b7792a ("ALSA: core: add
.get_time_info") made an undocumented change to the behaviour of the
PCM runtime tstamp. Prior to this change the tstamp was not updated
by snd_pcm_update_hw_ptr0() unless the hw ptr had moved, after this
change the tstamp is always updated.
For an application, using alsa-lib, doing snd_pcm_readi() followed by
snd_pcm_status() to estimate the age of the read samples by subtracting
status->avail * [sample rate] from status->tstamp this change degraded
the accuracy of that estimate on devices where the pcm hw does not
provide a granular hw pointer. On a device using
soc-generic-dmaengine-pcm.c and a dma-engine with residue_granularity
DMA_RESIDUE_GRANULARITY_DESCRIPTOR the accuracy of the estimate depended
on the latency between the PCM hw completing a period and when the
driver called snd_pcm_period_elapsed() to notify ALSA core, typically
determined by interrupt handling latency. After this change the
accuracy of the estimate is determined by the latency between the PCM hw
completing a period and the application calling snd_pcm_status(),
determined by the scheduling of the application process.
Revert the part of commit 3179f62001880e588e229db3006a59ad87b7792a
("ALSA: core: add .get_time_info") that changed be behaviour of
snd_pcm_update_hw_ptr0() when the PCM hw pointer has not moved.
Fixes: 3179f6200188 ("ALSA: core: add .get_time_info")
Signed-off-by: Henrik Eriksson <henrik.eriksson@axis.com>
---
sound/core/pcm_lib.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index a93a4235a332..2fbaf9a974cc 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -437,10 +437,8 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
}
no_delta_check:
- if (runtime->status->hw_ptr == new_hw_ptr) {
- update_audio_tstamp(substream, &curr_tstamp, &audio_tstamp);
+ if (runtime->status->hw_ptr == new_hw_ptr)
return 0;
- }
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
runtime->silence_size > 0)
--
2.11.0
--
henrik eriksson
fixed box cameras firmware, base video products, axis communications ab
next reply other threads:[~2017-11-16 12:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-16 12:43 Henrik Eriksson [this message]
2017-11-16 14:48 ` [RFC PATCH] ALSA: core: do not update tstamp when hw ptr has not moved Takashi Iwai
2017-11-16 18:11 ` Pierre-Louis Bossart
2017-11-16 18:49 ` Takashi Iwai
2017-11-17 8:34 ` Henrik Eriksson
2017-11-20 13:13 ` Henrik Eriksson
2017-11-20 13:29 ` Takashi Iwai
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=20171116124349.GA21810@lnxhenriken2.se.axis.com \
--to=henrik.eriksson@axis.com \
--cc=alsa-devel@alsa-project.org \
--cc=perex@perex.cz \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=tiwai@suse.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox