mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-09 10:02:53 +07:00
![]() For computation of the the next frame size current value of fs/fps and accumulated fractional parts of fs/fps are used, where values are stored in Q16.16 format. This is quite natural for computing frame size for asynchronous endpoints driven by explicit feedback, since in this case fs/fps is a value provided by the feedback endpoint and it's already in the Q format. If an error is accumulated over time, the device can adjust fs/fps value to prevent buffer overruns/underruns. But for synchronous endpoints the accuracy provided by these computations is not enough. Due to accumulated error the driver periodically produces frames with incorrect size (+/- 1 audio sample). This patch fixes this issue by implementing a different algorithm for frame size computation. It is based on accumulating of the remainders from division fs/fps and it doesn't accumulate errors over time. This new method is enabled for synchronous and adaptive playback endpoints. Signed-off-by: Alexander Tsoy <alexander@tsoy.me> Link: https://lore.kernel.org/r/20200424022449.14972-1-alexander@tsoy.me Signed-off-by: Takashi Iwai <tiwai@suse.de> |
||
---|---|---|
.. | ||
6fire | ||
bcd2000 | ||
caiaq | ||
hiface | ||
line6 | ||
misc | ||
usx2y | ||
card.c | ||
card.h | ||
clock.c | ||
clock.h | ||
debug.h | ||
endpoint.c | ||
endpoint.h | ||
format.c | ||
format.h | ||
helper.c | ||
helper.h | ||
Kconfig | ||
Makefile | ||
media.c | ||
media.h | ||
midi.c | ||
midi.h | ||
mixer_maps.c | ||
mixer_quirks.c | ||
mixer_quirks.h | ||
mixer_s1810c.c | ||
mixer_s1810c.h | ||
mixer_scarlett_gen2.c | ||
mixer_scarlett_gen2.h | ||
mixer_scarlett.c | ||
mixer_scarlett.h | ||
mixer_us16x08.c | ||
mixer_us16x08.h | ||
mixer.c | ||
mixer.h | ||
pcm.c | ||
pcm.h | ||
power.c | ||
power.h | ||
proc.c | ||
proc.h | ||
quirks-table.h | ||
quirks.c | ||
quirks.h | ||
stream.c | ||
stream.h | ||
usbaudio.h | ||
validate.c |