C ALSA:扬声器和麦克风的周期大小之间的关系

C ALSA:扬声器和麦克风的周期大小之间的关系,c,linux,alsa,C,Linux,Alsa,我有一个有麦克风和扬声器的音频会议设备。话筒和扬声器的采样率均由snd\u pcm\u hw\u params\u set\u rate\u near()设置相同8000 Hz。我是否需要为这两个设备设置相同的周期大小和周期数(对于两个这样的设备相互通信) 或者我可以为扬声器选择不同于为麦克风配置的周期/周期大小吗? 如何决定使用哪个时段和时段大小 我正在使用snd_pcm_hw_params_set_period_size_near()和snd_pcm_hw_params_set_period

我有一个有麦克风和扬声器的音频会议设备。话筒和扬声器的采样率均由
snd\u pcm\u hw\u params\u set\u rate\u near()设置相同
8000 Hz。我是否需要为这两个设备设置相同的周期大小和周期数(对于两个这样的设备相互通信)

或者我可以为扬声器选择不同于为麦克风配置的周期/周期大小吗? 如何决定使用哪个时段和时段大小

我正在使用
snd_pcm_hw_params_set_period_size_near()
snd_pcm_hw_params_set_periods_near()
API设置扬声器和麦克风的周期大小和周期


(我是ALSA新手)。

支持的时段大小和缓冲区大小取决于驱动程序,但如果是同一设备,则播放和捕获设备可能支持相同的参数

参数是否需要相同取决于应用程序访问这些设备的方式。就驾驶员而言,这些设备独立工作

要使用的缓冲区/周期大小取决于您希望如何平衡延迟、电源使用和过/欠运行安全。 延迟与回放设备上的缓冲区大小或捕获设备上的周期大小成正比。 短时间内,电力使用略有增加。
Xrun的安全性通过更大的缓冲区和更短的周期来提高。

如何确定设备支持的缓冲区/周期大小?是否有一种通用的编程方法来设置alsa周期/缓冲区大小,以适用于任何驱动程序?