• Jaroslav Kysela's avatar
    ALSA: pcm: reinvent the stream synchronization ID API · f05c1ffc
    Jaroslav Kysela authored
    Until the commit e11f0f90 ("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@kernel.org>
    Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20240625172836.589380-2-perex@perex.cz
    f05c1ffc
pcm_lib.c 71.9 KB