private IWaveBuffer GetWaveBuffer(uint size) { IWaveBuffer waveBuffer = null; m_waveBufferMutex.WaitOne(); var count = m_waveBuffers.Count; //Debug.WriteLine(count); if (m_waveBuffers.Count > 0) { waveBuffer = m_waveBuffers[0]; m_waveBuffers.RemoveAt(0); } m_waveBufferMutex.ReleaseMutex(); // check if the current wavebuffer is the right size if (waveBuffer != null) { if (waveBuffer.ByteBuffer.Length != size) { waveBuffer = null; } } if (waveBuffer == null) { var byteArray = new byte[size]; waveBuffer = new WaveBuffer(byteArray); } return(waveBuffer); }
private void OnAudioInput(IWaveBuffer waveBuffer) { try { m_audioOutput.Send(waveBuffer.ByteBuffer); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
public float GetRms(IWaveBuffer waveBuffer) { if (waveBuffer.ShortBufferCount == 0) { return(0.0f); } long squareSum = 0; for (var i = 0; i < waveBuffer.ShortBufferCount; i++) { squareSum += waveBuffer.ShortBuffer[i] * waveBuffer.ShortBuffer[i]; } var rms = (float)Math.Sqrt((double)squareSum / waveBuffer.ShortBufferCount) / short.MaxValue; return(rms); }
public void ReturnWaveBuffer(IWaveBuffer waveBuffer) { m_waveBufferMutex.WaitOne(); m_waveBuffers.Add(waveBuffer); m_waveBufferMutex.ReleaseMutex(); }
private WaveBufferReader(IWaveBuffer buffer) { m_waveBuffer = buffer; m_bytesRemaining = m_waveBuffer.ByteBuffer.Length; m_readIndex = 0; }