0
對於此代碼:爲什麼腐敗的聲音?
while (1) {
generate_noise(frames, period_size);
snd_pcm_writei(dev, frames, period_size);
}
它工作正常..
但對於這樣的:
generate_noise(frames, period_size);
while (1) {
snd_pcm_writei(dev, frames, period_size);
}
聲音被打破。每個迭代都有一個可聽見的裂縫! 這會導致始終更新緩衝區。 爲什麼?
UPD:
typedef struct {
int16_t left;
int16_t right;
} pcm_frame;
...
void
generate_noise(pcm_frame *frames, const size_t size)
{
size_t pos = 0;
while (pos < size) {
frames[pos].left = rand() % 200;
frames[pos].right = rand() % 200;
pos += 1;
}
}
是否generate_noise每次都會生成不同的樣本? ,如果沒有,snd_pcm_writei是否有足夠的延遲來確保寫入完成(處理器運行速度可能比PCM塊快)? –
@bare_metal我是更新的信息瞭解更多信息。 – Deep
在第一種情況下,您每次都會生成新的樣本,而在第二種情況下,您一次又一次地使用相同的樣本。 –