我正在做一些涉及DirectSound緩衝區的維護工作。我想知道如何解釋緩衝區中的元素,也就是知道緩衝區中每個值的含義。這些數據來自麥克風。從麥克風捕獲設備解釋DirectSound緩衝區元素
這波格式正在使用:
WAVEFORMATEXTENSIBLE format = {
{ WAVE_FORMAT_EXTENSIBLE, 1, sample_rate, sample_rate * 4, 4, 32, 22 },
{ 32 }, 0, KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
};
我的目標是檢測麥克風沉默。我目前正在通過簡單地確定緩衝區中的所有值是否未超過某個閾值體積值來完成此操作,假設每個緩衝區元素的強度直接對應於音量。
這就是我目前正在努力:
bool is_mic_silent(float * data, unsigned int num_samples, float threshold)
{
float * max_iter = std::max_element(data, data + num_samples);
if(!max_iter) {
return true;
}
float max = *max_iter;
if(max < threshold) {
return true;
}
return false; // At least one value is sufficiently loud.
}