| Updated: October 28, 2024 | 
Set the configurable parameters for a PCM channel (plugin-aware)
#include <sys/asoundlib.h>
int snd_pcm_plugin_params( snd_pcm_t *handle, 
                           snd_pcm_channel_params_t *params );
The snd_pcm_plugin_params() function sets up the transfer parameters according to params.
You can call the function in SND_PCM_STATUS_NOTREADY (initial) and SND_PCM_STATUS_READY states; otherwise, snd_pcm_plugin_params() returns -EBADFD.
If the parameters are valid (i.e., snd_pcm_plugin_params() returns zero), the driver state is changed to SND_PCM_STATUS_READY.
Example calculations for requesting a fragment size that holds 16ms of data
Fragment size (in bytes) = (16000Hz * 2 bytes * 1 channels * 16ms) / 1000
                         = 512000 / 1000
                         = 512
App fragment period = 512 / (16000 * 2 * 1 / 1000) = 16ms libasound up conversions = 512 * (48000/16000 * 2/1) = 3072 bytes Playback fragment period = 3072 / (48000 * 2 * 2 / 1000) = 16ms
EOK on success, a negative errno upon failure. The errno values are available in the errno.h file.
QNX Neutrino
| Safety: | |
|---|---|
| Cancellation point | No | 
| Interrupt handler | No | 
| Signal handler | Yes | 
| Thread | Yes | 
This function is not thread safe if handle (snd_pcm_t) is used across multiple threads.
This function is the plugin-aware version of snd_pcm_channel_params() . It functions exactly the same way. However, make sure that you don't mix and match plugin- and nonplugin-aware functions in your application, or you may get undefined behavior and misleading results.