[alsa-devel] Is params_format() valid in the _hw_params() function?

Clemens Ladisch clemens at ladisch.de
Wed Jul 16 10:40:50 CEST 2008

Timur Tabi wrote:
> My ASoC driver programs the sample size in the _prepare() callback function,
> because I was under the impression that the sample size cannot be known in the
> _hw_params() callback function.  However, I just ran a test, and it appears that
> the params_format() macro does return the right value.  Once I know the format,
> I can determine the same size.
> Is this always true, even in OSS emulation?

Yes.  The OSS emulation pretends to be an ALSA application.

> I know very little about ALSA and OSS application programming, so I
> don't know what causes _hw_params() to be called vs. _prepare().

*_hw_params() is called to set sample format/rate and buffer parameters.
In most cases, it is called once when the device is initialized, but it
can be called multiple times if an application wants to change some of
these parameters.  (The latter happens with OSS emulation because the
various OSS ioctl calls change only one of multiple parameters.)

*_prepare() is called before a device is started.  It can be called
multiple times without intervening _hw_params() calls when the device
is started/stopped multiple times.


More information about the Alsa-devel mailing list