snd_pcm_channel_info

Name

snd_pcm_info -- obtain information about the PCM direction

Synopsis

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

Description

Fills the info structure with data about the PCM channel selected by handle. The channel member specifies the direction. Other members are read-only. Function returns zero if successful, otherwise it returns an error code.

typedef union snd_pcm_sync {
	char id[16];
	short id16[8];
	int id32[4];
} snd_pcm_sync_t;

typedef struct snd_pcm_digital {
        unsigned char dig_status[24];   /* AES/EBU/IEC958 channel status bits */
        unsigned char dig_subcode[147]; /* AES/EBU/IEC958 subcode bits */
        unsigned char dig_valid: 1;     /* must be non-zero to accept these values */
        unsigned char dig_subframe[4];  /* AES/EBU/IEC958 subframe bits */
        char reserved[16];              /* must be filled with zero */
} snd_pcm_digital_t;

typedef struct snd_pcm_channel_info {
        int subdevice;                  /* subdevice number */
        char subname[32];               /* subdevice name */
        int channel;                    /* channel information */
        int mode;                       /* transfer mode */
        snd_pcm_sync_t sync;            /* hardware synchronization ID */
        unsigned int flags;             /* see to SND_PCM_CHNINFO_XXXX */
        unsigned int formats;           /* supported formats */
        unsigned int rates;             /* hardware rates */
        int min_rate;                   /* min rate (in Hz) */
        int max_rate;                   /* max rate (in Hz) */
        int min_voices;                 /* min voices */
        int max_voices;                 /* max voices */
        int buffer_size;                /* max buffer size in bytes */
        int min_fragment_size;          /* min fragment size in bytes */
        int max_fragment_size;          /* max fragment size in bytes */
        int fragment_align;             /* align fragment value */
        int fifo_size;                  /* stream FIFO size in bytes */
        int transfer_block_size;        /* bus transfer block size in bytes */
        snd_pcm_digital_t dig_mask;     /* AES/EBU/IEC958 supported bits */
        long mmap_size;                 /* mmap data size */
        int mixer_device;               /* mixer device */
        snd_mixer_eid_t mixer_eid;      /* mixer element identification */
        char reserved[64];              /* reserved for future... */
} snd_pcm_channel_info_t;

FlagDescription
SND_PCM_CHNINFO_MMAPHardware supports mmap access.
SND_PCM_CHNINFO_STREAMHardware supports stream mode.
SND_PCM_CHNINFO_BLOCKHardware supports block mode.
SND_PCM_CHNINFO_BATCHHardware does double buffering.
SND_PCM_CHNINFO_INTERLEAVEHardware accepts interleaved stream samples.
SND_PCM_CHNINFO_NONINTERLEAVEHardware accepts non-interleaved stream samples.
SND_PCM_CHNINFO_BLOCK_TRANSFERHardware transfers samples by chunks (for example PCI burst transfers).
SND_PCM_CHNINFO_OVERRANGEHardware supports ADC (capture) overrange detection.
SND_PCM_CHNINFO_MMAP_VALIDFragment samples are valid during transfer. It means that the fragment samples may be used when the io member from the mmap control structure snd_pcm_mmap_control_t is set (the fragment is being transferred).
SND_PCM_CHNINFO_PAUSEHardware supports pause (playback only).