42 lines
762 B
C#
42 lines
762 B
C#
using System;
|
|
using OpenTK.Audio;
|
|
|
|
namespace AudioStreamer
|
|
{
|
|
public class OpenALSource : BaseAudioSource, AudioOutput
|
|
{
|
|
public event NewAudioAvailable NewAudioAvailable;
|
|
AudioCapture capture;
|
|
|
|
public OpenALSource()
|
|
{
|
|
if (AudioCapture.AvailableDevices.Count < 1){
|
|
throw new Exception("No Audio Device available");
|
|
}
|
|
|
|
capture = new AudioCapture(AudioCapture.DefaultDevice, 44100, OpenTK.Audio.OpenAL.ALFormat.Mono16, 8192);
|
|
}
|
|
|
|
public override void Start()
|
|
{
|
|
capture.Start();
|
|
}
|
|
|
|
public override void Stop()
|
|
{
|
|
capture.Stop();
|
|
}
|
|
|
|
public override void Source()
|
|
{
|
|
while (capture.AvailableSamples >= 64)
|
|
{
|
|
Int16[] chunk = new Int16[64];
|
|
capture.ReadSamples(chunk, 64);
|
|
|
|
pumpAudio(chunk);
|
|
}
|
|
}
|
|
}
|
|
}
|