snd_pcm_channel_info()

Updated: April 19, 2023

Get information about a PCM channel's current capabilities

Synopsis:

#include <sys/asoundlib.h>

int snd_pcm_channel_info(
       snd_pcm_t *handle, 
       snd_pcm_channel_info_t *info );

Arguments:

handle
The handle for the PCM device, which you must have opened by calling snd_pcm_open_name(), snd_pcm_open(), or snd_pcm_open_preferred().
info
A pointer to a snd_pcm_channel_info_t structure that snd_pcm_channel_info() fills with information about the PCM channel.

Before calling this function, set the info structure's channel member to specify the direction. This function sets all the other members.

If the rates, formats, min_rate, max_rate, min_voices, max_voices, and max_fragsize fields of snd_pcm_channel_info_t all contain zeroed data, the PCM device is currently not available for further playback or capture sessions.

Library:

libasound.so

Use the -l asound option with qcc to link against this library.

Description:

The snd_pcm_channel_info() function fills the info structure with the current capabilities of the PCM channel selected by handle.

Note: This function and the plugin-aware version, snd_pcm_plugin_info(), get a dynamic “snapshot” of the system's current capabilities, which can shrink and grow as subchannels are allocated and freed. They're similar to snd_ctl_pcm_channel_info(), which gets information about the complete capabilities of the system.

Returns:

EOK on success, a negative errno upon failure. The errno values are available in the errno.h file.

Errors:

Additional information for common error values:
-EINVAL
The state of handle is invalid, an invalid params was provided as input, or an invalid state change occurred. You can call snd_pcm_channel_status() to check if the state change was invalid and if you want to recover from the error.

Classification:

QNX Neutrino

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Read the Caveats

Caveats:

This function is not thread safe if handle (snd_pcm_t) is used across multiple threads.