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.
}