Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private void OnAudioInput(IWaveBuffer waveBuffer)
 {
     try
     {
         m_audioOutput.Send(waveBuffer.ByteBuffer);
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.Message);
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public void ReturnWaveBuffer(IWaveBuffer waveBuffer)
 {
     m_waveBufferMutex.WaitOne();
     m_waveBuffers.Add(waveBuffer);
     m_waveBufferMutex.ReleaseMutex();
 }
Exemplo n.º 5
0
 private WaveBufferReader(IWaveBuffer buffer)
 {
     m_waveBuffer     = buffer;
     m_bytesRemaining = m_waveBuffer.ByteBuffer.Length;
     m_readIndex      = 0;
 }