mbox series

[0/2] ALSA: pcm: reinvent the stream synchronization ID API

Message ID 20240506151218.377580-1-perex@perex.cz (mailing list archive)
Headers show
Series ALSA: pcm: reinvent the stream synchronization ID API | expand

Message

Jaroslav Kysela May 6, 2024, 3:11 p.m. UTC
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.

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 sychronization ID API

 include/sound/pcm.h         | 18 ++++++++++++++++--
 include/uapi/sound/asound.h | 13 ++++---------
 sound/core/pcm_lib.c        | 36 ++++++++++++++++++++++++++----------
 sound/core/pcm_native.c     |  6 ++++++
 sound/pci/emu10k1/p16v.c    | 17 ++++++++++++-----
 5 files changed, 64 insertions(+), 26 deletions(-)

Comments

Takashi Sakamoto May 7, 2024, 3:04 a.m. UTC | #1
On Mon, May 06, 2024 at 05:11:48PM +0200, Jaroslav Kysela wrote:
> 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.
> 
> 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 sychronization ID API
> 
>  include/sound/pcm.h         | 18 ++++++++++++++++--
>  include/uapi/sound/asound.h | 13 ++++---------
>  sound/core/pcm_lib.c        | 36 ++++++++++++++++++++++++++----------
>  sound/core/pcm_native.c     |  6 ++++++
>  sound/pci/emu10k1/p16v.c    | 17 ++++++++++++-----
>  5 files changed, 64 insertions(+), 26 deletions(-)

I reviewed and added some comments per each.

Anyway, we are at the last week of kernel development process. I think
it better to postpone the discussion about this kind of changes until
releasing -rc1, if people working for the task of quality assurance to
the new kernel release.


Regards

Takashi (not this subsystem maintainer) Sakamoto