On Tue, 21 Nov 2017 09:29:28 +0100, Henrik Eriksson wrote: > > commit 3179f6200188 ("ALSA: core: add .get_time_info") had a side effect > of changing the behaviour of the PCM runtime tstamp. Prior to this > change tstamp was not updated by snd_pcm_update_hw_ptr0() unless the > hw_ptr had moved, after this change tstamp was 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 the estimate on devices where the pcm hw does not > provide a granular hw_ptr, e.g., devices 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 the > driver called snd_pcm_period_elapsed() to notify ALSA core, typically > determined by interrupt handling latency. After the change the accuracy > of the estimate depended on the latency between the PCM hw completing a > period and the application calling snd_pcm_status(), determined by the > scheduling of the application process. The maximum error of the > estimate is one period length in both cases, but the error average and > variance is smaller when it depends on interrupt latency. > > Instead of always updating tstamp, update it only if audio_tstamp > changed. > > Fixes: 3179f6200188 ("ALSA: core: add .get_time_info") > Suggested-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > Signed-off-by: Henrik Eriksson <henrik.eriksson@xxxxxxxx> > --- > Changes since v1: > - Use Pierre-Louis Bossart's suggested fix > - Clean up commit log Applied, thanks. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel