forked from naudio/NAudio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNetworkAudioPlayer.cs
37 lines (32 loc) · 1.04 KB
/
NetworkAudioPlayer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using NAudio.Wave;
namespace NAudioDemo.NetworkChatDemo
{
class NetworkAudioPlayer : IDisposable
{
private readonly INetworkChatCodec codec;
private readonly IAudioReceiver receiver;
private readonly IWavePlayer waveOut;
private readonly BufferedWaveProvider waveProvider;
public NetworkAudioPlayer(INetworkChatCodec codec, IAudioReceiver receiver)
{
this.codec = codec;
this.receiver = receiver;
receiver.OnReceived(OnDataReceived);
waveOut = new WaveOut();
waveProvider = new BufferedWaveProvider(codec.RecordFormat);
waveOut.Init(waveProvider);
waveOut.Play();
}
void OnDataReceived(byte[] compressed)
{
byte[] decoded = codec.Decode(compressed, 0, compressed.Length);
waveProvider.AddSamples(decoded, 0, decoded.Length);
}
public void Dispose()
{
receiver?.Dispose();
waveOut?.Dispose();
}
}
}