Until the commit e11f0f90a626 ("ALSA: pcm: remove SNDRV_PCM_IOCTL1_INFO
internal command"), there was a possibility to pass information
about the synchronized streams to the user space. The mentioned
commit removed blindly the appropriate code with an irrelevant comment.
The revert may be appropriate, but since this API was lost for several
years without any complains, it's time to improve it. The hardware
parameters may change the used stream clock source (e.g. USB hardware)
so move this synchronization ID to hw_params as read-only field.
It seems that pipewire can benefit from this API (disable adaptive
resampling for perfectly synchronized PCM streams) now.
Note that the contents of ID is not supposed to be used for direct
comparison with a specific byte sequence. The "empty" case is when
all bytes are zero (driver does not offer this information)
and all other cases must be only used for equal comparison among
PCM streams (including different sound cards) if they are using
identical hardware clock.
Cc: Takashi Sakamoto <takaswie@xxxxxxxxxx>
v6->v7:
- rename sync_flag to std_sync_id per Takashi's request
v5->v6:
- remove wrong line from comment (suggested by Amadeusz)
v4->v5:
- extend commit message (clarification for ID use) for first patch
- mark union snd_pcm_sync_id as deprecated
- do not use get_unaligned() - reviewers are confused and the code
is removed in the second path (optimization)
v3->v4:
- more code shuffle as suggested by Takashi
- remove unused snd_pcm_empty function in the second patch
- put back snd_pcm_set_sync documentation
v2->v3:
- fix pcm_sync_empty() function (wrong comparison) [thanks Takashi Sakamoto]
- more documentation for snd_pcm_set_sync_per_card (ID composition)
v1->v2:
- remove union usage per Takashi's request
- reduce memory usage
- use standard ID generation scheme
Jaroslav Kysela (2):
ALSA: pcm: reinvent the stream synchronization ID API
ALSA: pcm: optimize and clarify stream synchronization ID API
include/sound/pcm.h | 16 ++++++++++--
include/uapi/sound/asound.h | 9 ++++---
sound/core/pcm_lib.c | 50 +++++++++++++++++++++++++++++--------
sound/core/pcm_native.c | 6 +++++
sound/pci/emu10k1/p16v.c | 17 +++++++++----
5 files changed, 77 insertions(+), 21 deletions(-)
--
2.45.2
[Index of Archives]
[Pulseaudio]
[Linux Audio Users]
[ALSA Devel]
[Fedora Desktop]
[Fedora SELinux]
[Big List of Linux Books]
[Yosemite News]
[KDE Users]