snd_pcm_channel_status_t

Статусная структура PCM канала

Прототип:

#include <sys/asoundlib.h>
typedef struct snd_pcm_channel_status {
int32_t channel;
int32_t mode;
int32_t status;
uint32_t scount;
struct timeval stime;
uint64_t ust_stime;
int32_t frag;
int32_t count;
int32_t free;
int32_t underrun;
int32_t overrun;
int32_t overrange;
uint32_t subbuffered;
uint8_t reserved[124]; /* must be filled with zeroes */
} snd_pcm_channel_status_t;

Описание:

Структура snd_pcm_channel_status_t описывает статус PCM канала. Поля структуры включают:

channel
Ориентация канала. Одно из значений:
SND_PCM_CHANNEL_CAPTURE
SND_PCM_CHANNEL_PLAYBACK
mode
Режим передачи: SND_PCM_MODE_BLOCK (значение SND_PCM_MODE_STREAM устарело).
status
Состояние канала. Допустимые значения:
SND_PCM_STATUS_NOTREADY
Драйвер не готов к выполнению операций. После успешного вызова snd_pcm_channel_params(), состояние меняется на SND_PCM_STATUS_READY.
SND_PCM_STATUS_READY
Драйвер готов к выполнению операций. Вызов mmap() для мапирования аудио буфера может быть выполнен только в этом состоянии, но сэмплы еще не могут быть переданы. После успешного вызова snd_pcm_channel_prepare(), snd_pcm_capture_prepare(), snd_pcm_playback_prepare() или snd_pcm_plugin_prepare(), состояние меняется на SND_PCM_STATUS_PREPARED.
SND_PCM_STATUS_PREPARED
Драйвер подготовлен к выполнению передачи данных. Сэмплы могут быть переданы в этом состоянии.
SND_PCM_STATUS_RUNNING
Драйвер активно выполняет передачу данных с использованием оборудования. Сэмплы могут быть переданы в этом состоянии.
SND_PCM_STATUS_UNDERRUN
Канал воспроизведения находится в состоянии underrun (очередь на отправку опустошена). Драйвер полностью опустошил буферы перед получением новых данных. Следует повторно выполнить подготовку канала перед продолжением воспроизведения посредством вызова snd_pcm_channel_prepare(), snd_pcm_playback_prepare() или snd_pcm_plugin_prepare() (см. wave.c).
SND_PCM_STATUS_OVERRUN
Канал захвата находится в состоянии overrun (очередь на получение переполнена). Драйвер записывает данные в буфер быстрее, чем они успевают обрабатываться. Передачи в канале застопорились. Следует повторно выполнить подготовку канала перед продолжением захвата посредством вызова snd_pcm_channel_prepare(), snd_pcm_capture_prepare() или snd_pcm_plugin_prepare() (см. waverec.c).
SND_PCM_STATUS_PAUSED
Воспроизведение поставлено на паузу (не поддерживается аудио стеком).
scount
Число байт данных, обработанных с последнего начала воспроизведения/захвата. Это значение обрезается, когда достигает значения SND_PCM_BOUNDARY и сбрасывается при подготовке канала.
stime
Время начала процедуры воспроизведения/захвата в формате gettimeofday(). Это поле имеет корректное значение только при установке флага time в структуре snd_pcm_channel_params_t.
ust_stime
Время начала процедуры воспроизведения/захвата в формате UST. Это поле имеет корректное значение только при установке флага ust_time в структуре snd_pcm_channel_params_t.
frag
Текущее число фрагментов (доступно только в блочном режиме).
count
Число байт данных в очереди/буфере (см. замечание ниже).
free
Размер свободных байт данных в очереди/буфере (см. замечание ниже).
underrun
Число underrun событий воспроизведения с момента последнего получения статусной информации.
overrun
Число overrun событий захвата с момента последнего получения статусной информации.
overrange
Число обнаруженных overrun событий ADC с момента последнего получения статусной информации.
subbuffered
Число байт данных, буферизированных в плагине.


Note: Поля count и free не используются, если применяется mmap-плагин. Для его отключения следует вызвать snd_pcm_plugin_set_disable().

Классификация:

ЗОСРВ «Нейтрино»




Предыдущий раздел: Библиотека libasound