[alsa-devel] Is snd_pcm_hw_constraint_mask64 really needed ?

Chemsi Mehdi chmsmehdi at gmail.com
Mon Mar 13 10:06:34 CET 2017


Thanks a lot dear Takashi, helpful as the habit

2017-03-12 2:24 GMT+01:00 Takashi Sakamoto <o-takashi at sakamocchi.jp>:

> Hi,
>
> On Mar 10 2017 01:23, Chemsi Mehdi wrote:
>
>> I am working with an alsa codec driver  where the driver is calling
>> err = snd_pcm_hw_constraint_mask64(substream->runtime,
>> SNDRV_PCM_HW_PARAM_FORMAT, formats);
>> my driver is already setting format before that so I wonder why this
>> function is called?
>> Looks like it is  needed to add audio constraints to substreams at
>> open/startup time, but why ?
>> what can be the issue if I do not call it ?
>>
>
> It's for user space applications.
>
> In protocol of ALSA PCM interface between kernel/userspace, parameters of
> PCM substream are decided via interaction between drivers and applications.
> Typically, applications keep memory object in user space for 'struct
> snd_pcm_hw_params' and set their preferable parameters to it, then call
> ioctl(2) system call for it with SNDRV_PCM_IOCTL_HW_PARAMS or
> SNDRV_PCM_IOCTL_HW_REFINE. In kernel mode, the memory object is copied to
> kernel space and handled by ALSA PCM core. The constrains and rules
> registered by drivers are applied to it, then the result is copied to user
> space. Finally, applications can get available parameters of PCM substream.
>
> Without this interaction, even if your driver can handle your devices
> correctly, applications cannot use them with proper parameters of PCM
> substream; e.g. wrong PCM samples per frame, wrong sampling rate, and so on.
>
>
> Regards
>
> # I'm another Takashi.
>
> Takashi Sakamoto
>


More information about the Alsa-devel mailing list