snd_pcm_write()

Передача PCM данных в канал воспроизведения

Прототип:

#include <sys/asoundlib.h>
ssize_t snd_pcm_write( snd_pcm_t *handle,
const void *buffer,
size_t size );

Аргументы:

handle
Дескриптор PCM устройства, созданный с помощью snd_pcm_open() или snd_pcm_open_preferred().
buffer
Указатель на буфер с данными.
size
Размер буфера в байтах.

Библиотека:

libasound

Описание:

Функция snd_pcm_write() записывает сэмплы в устройство, определяемое дескриптором handle. Формат сэмплов должен быть задан через snd_pcm_channel_prepare() или snd_pcm_playback_prepare().

Функция может приостановить выполнение приложения, если блокирующие операции активны (см. snd_pcm_nonblock_mode()) и нет места в буферах устройства.

Если субустройство находится в блокирующем режиме (SND_PCM_MODE_BLOCK), количество записываемых данных должно соответствовать выражению N × fragment-size, где N > 0.

Если формат потока не является черезстрочным (поле interleave структуры snd_pcm_format_t не установлено), тогда драйвер ожидает отдельные блоки для каждого голоса, инкапсулированные во фрагменте. Допустим, что имеется два голоса и размер фрагмента равен 512 байтам. Число байт данных для каждого голоса равно 256. Драйвер ожидает первые 256 байт, которые содержат сэмплы для первого голоса и вторые 256 байт фрагмента, которые содержат сэмплы второго голоса.

Возвращаемое значение:

>=0
Число успешно записанных в устройство данных в байтах, если воспроизведение было успешным.
-EAGAIN
Субустройство открыто в неблокирующем режиме и не готово к отправке данных, следует попробовать позднее.
-EINVAL
Одно из следующих условий:
-EIO
Одно из следующих условий:
-EWOULDBLOCK
Операция записи могла быть заблокирована (при неблокирующей записи).

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

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

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

snd_pcm_channel_prepare(), snd_pcm_playback_prepare(), snd_pcm_plugin_write()




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