0

cd_paranoia我正在尝试使用(从包中)播放音频 CD,cdio并将读取的数据移交给 ALSA 声音输出。当然是缓冲的。我现在的问题如下:如本示例程序中所述,调用paranoia_read ()返回int16_t*包含一个扇区(2,352 字节)的音频数据,然后可以将其转换为char*.

snd_pcm_writei ()另一方面,ALSA方法需要 a 中的一大块音频数据char*,其长度将通过使用该snd_pcm_hw_params_get_period_size ()方法确定,该方法基本上返回发送到声音设备的字节数,直到它触发中断。还出售此示例源代码

这两种方法几乎肯定会返回不同的值,因为 ALSA 帧的大小与 CD 扇区的大小不同。这意味着我必须以cd-paranoia某种方式划分数据,以便它们适合 ALSA 的框架结构。或者将 CD 音频数据流式传输到一个大字节数组std::queue<char>

有什么提示吗?谢谢你。

4

1 回答 1

0

snd_pcm_writei()处理任意数量的帧。

于 2019-07-10T15:28:07.383 回答