snd_pcm_channel_params_t

PCM channel parameters

Synopsis:

typedef struct snd_pcm_channel_params
{
    int32_t             channel;
    int32_t             mode;
    snd_pcm_sync_t      sync;               /* hardware synchronization ID */
    snd_pcm_format_t    format;
    snd_pcm_digital_t   digital;
    int32_t             start_mode;
    int32_t             stop_mode;
    int32_t             time:1, ust_time:1;
    uint32_t            why_failed;         /* SND_PCM_PARAMS_BAD_??? */
    union
    {
        struct
        {
            int32_t     queue_size;
            int32_t     fill;
            int32_t     max_fill;
            uint8_t     reserved[124];      /* must be filled with zeroes */
        }       stream;
        struct
        {
            int32_t     frag_size;
            int32_t     frags_min;
            int32_t     frags_max;
            uint32_t    frags_buffered_max;
            uint8_t     reserved[120];      /* must be filled with zeroes */
        }       block;
        uint8_t     reserved[128];      /* must be filled with zeroes */
    }       buf;
    char        sw_mixer_subchn_name[32];
    uint8_t     reserved[96];         /* must be filled with zeroes */
} snd_pcm_channel_params_t;

Description:

The snd_pcm_channel_params_t structure describes the parameters of a PCM capture or playback channel. The members include:

channel
The channel direction; one of SND_PCM_CHANNEL_PLAYBACK or SND_PCM_CHANNEL_CAPTURE.
mode
The channel mode: SND_PCM_MODE_BLOCK. (SND_PCM_MODE_STREAM is deprecated.)

You can OR in the following flags:

  • SND_PCM_MODE_FLAG_PROTECTED_CONTENT — indicates that the output path may not change without the client's approval. When the output path does change, the client will change to state SND_PCM_STATUS_UNSECURE. The client can then check the current output path, and call snd_pcm_channel_prepare() to continue playback.
  • SND_PCM_MODE_FLAG_REQUIRE_PROTECTION — indicates that digital protection is required on the audio path. For example, for HDMI, it indicates that HDCP must be enabled for audio to play.
format
The data format; see snd_pcm_format_t.
digital
Not currently implemented.
start_mode
The start mode; one of:
  • SND_PCM_START_DATA — start when some data is written (playback) or requested (capture).
  • SND_PCM_START_FULL — start when the whole queue is filled (playback only).
  • SND_PCM_START_GO — start on the Go command.
stop_mode
The stop mode; one of:
  • SND_PCM_STOP_STOP — stop when an underrun or overrun occurs.
  • SND_PCM_STOP_ERASE — stop and erase the whole buffer when an overrun occurs (capture only).
  • SND_PCM_STOP_ROLLOVER — ROLLOVER (i.e. automatically reprepare and continue) when an underrun or overrun occurs.
time
If set, the driver offers, in the status structure, the time when the transfer began. The time is in the format used by gettimeofday() (see the QNX Neutrino Library Reference).
ust_time
If set, the driver offers, in the status structure, the time when the transfer began. The time is in UST format.
sync
The synchronization group. Not supported; don't use this member.
queue_size
The queue size, in bytes, for the stream mode. Not supported; don't use this member.
fill
The fill mode (SND_PCM_FILL_* constants). Not supported; don't use this member.
max_fill
The number of bytes to be filled ahead with silence. Not supported; don't use this member.
frag_size
The size of fragment, in bytes.
frags_min
Depends on the mode:
  • Capture — the minimum filled fragments to allow wakeup (usually one).
  • Playback — the minimum free fragments to allow wakeup (usually one).
frags_max
For playback, the maximum filled fragments to allow wakeup. This value specifies the total number of fragments that could be written to by an application. This excludes the fragment that's currently playing, so the actual total number of fragments is frags_max + 1.
frags_buffered_max
If this is set, io-audio may block the caller after fewer than frags_max fragments have been passed, if it chooses, but won't block the client before frags_buffered_max fragments have been written.
sw_mixer_subchn_name
By default, the name of all sw_mixer subchannel groups is PCM Subchannel; you can use this field to assign a different name.

Classification:

QNX Neutrino