Передача PCM данных из канала захвата
#include <sys/asoundlib.h>ssize_t snd_pcm_read( snd_pcm_t *handle,void *buffer,size_t size );
libasound
Функция snd_pcm_read() считывает сэмплы из устройства, определяемого дескриптором handle. Формат сэмплов должен быть задан через snd_pcm_channel_prepare() или snd_pcm_capture_prepare().
Функция может приостановить выполнение приложения, если блокирующие операции активны (см. snd_pcm_nonblock_mode()) и нет готовых к чтению данных.
Если субустройство находится в блокирующем режиме (SND_PCM_MODE_BLOCK
), количество прочитанных данных должно соответствовать выражению N × fragment-size, где N > 0
.
Если формат потока не является черезстрочным (поле interleave структуры snd_pcm_format_t не установлено), тогда драйвер вернет отдельные блоки для каждого голоса, инкапсулированные во фрагменте. Допустим, что имеется два голоса и размер фрагмента равен 512 байтам. Число байт данных для каждого голоса равно 256. Драйвер возвращает первые 256 байт, которые содержат сэмплы для первого голоса и вторые 256 байт фрагмента, которые содержат сэмплы второго голоса.
NULL
, но size не рпвен 0
или является отрицательным.ЗОСРВ «Нейтрино»
snd_pcm_capture_prepare(), snd_pcm_channel_prepare(), snd_pcm_format_t, snd_pcm_plugin_read(), snd_pcm_write()
Предыдущий раздел: Библиотека libasound