[alsa-devel] Is params_format() valid in the _hw_params() function?
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? I know very little about ALSA and OSS application programming, so I don't know what causes _hw_params() to be called vs. _prepare(). If it turns out that params_format() does work in _hw_params(), I can greatly simplify my driver.
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.
HTH Clemens
participants (2)
-
Clemens Ladisch
-
Timur Tabi