linux - ALSA snd_pcm_readi & snd_pcm_writei

标签 linux alsa

snd_pcm_writeisnd_pcm_readi 有什么区别?当我尝试使用这两个功能时,它们似乎都在从缓冲区中播放?似乎只有 handle 的配置方式 SND_PCM_STREAM_CAPTURE/SND_PCM_STREAM_PLAYBACK 决定了结果。我的印象是写是为了回放而阅读是为了捕捉。 有人可以澄清这一点并发布一个很好的 ALSA 教程吗?

    frames = snd_pcm_writei(handle, Buffer, Size);
    frames = snd_pcm_readi(handle, Buffer, Size);

最佳答案

snd_pcm_writei() 将数据从您自己的缓冲区复制到设备的缓冲区,并且仅适用于播放设备。

snd_pcm_readi() 将数据从设备的缓冲区复制到您自己的缓冲区,并且仅适用于捕获设备。

关于linux - ALSA snd_pcm_readi & snd_pcm_writei,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705462/

相关文章:

linux - 在 Linux 文件中记录系统事件

linux - 使用 dpkg 从 debian 软件包安装的文件不属于 root

linux - 嵌入式 Linux 中的多个 ALSA 声音流?

c - 为什么 portaudio 会突然返回回调?

linux - 让 bash 脚本在 'interactive mode' 提示符下输入数字

c - 系统调用表中的common abi有什么用

python - 编译后的python版本: ModuleNotFoundError at import

c - ALSA:耳机插孔感应的 API 是什么?

c - 使用 alsalib 时奇怪的 C 行为

c++ - 我如何将控制映射到它的设备?