gpt4 book ai didi

c - snd_pcm_writei 延迟后不工作

转载 作者:行者123 更新时间:2023-11-30 17:21:46 26 4
gpt4 key购买 nike

我试图使用 ALSA 生成蜂鸣声。应发出 2 声蜂鸣声,第二声在延迟 1 秒后发出。我的代码如下所示。

if ((err = snd_pcm_prepare (playback_handle)) < 0) {
printf("cannot prepare audio interface for use \n");
return -1;
}


for (i = 0; i < TABLE_SIZE; i ++){
samples[i] = 100*sin(2.0*pi*f*(i/44100.0));
if ((err = snd_pcm_writei (playback_handle, &samples[i], 4)) != 4) {
printf("write to audio interface failed \n");
return -1;
}
}

//snd_pcm_drain(playback_handle);

printf("ending beep !!! \n");
sleep(1);

if ((err = snd_pcm_prepare (playback_handle)) < 0) {
printf("cannot prepare audio interface for use \n");
return -1;
}
for (i = 0; i < TABLE_SIZE; i ++){
samples[i] = 100*sin(2.0*pi*f*(i/44100.0));
if ((err = snd_pcm_writei (playback_handle, &samples[i], 4)) != 4) {
printf("write to audio interface failed \n");
return -1;
}
}

这里可以正确听到第一声蜂鸣声,但第二声蜂鸣声不正常。谁能帮我解决这个问题。

最佳答案

snd_pcm_write*() 只是将样本写入缓冲区,但当所有样本都在缓冲区中时立即返回。

要等待缓冲区中的所有样本都已播放,请调用 snd_pcm_drain()

关于c - snd_pcm_writei 延迟后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28196433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com