private void AddDecodingBuffer(UserState userState) { // Make sure we don't double add if (_audioDecodingBuffers.ContainsKey(userState.Session)) { return; } //Debug.Log("Adding : " + userState.Name + " #" + userState.Session); //Debug.Log("Adding decoder session #" + userState.Session); DecodedAudioBuffer buffer = _decodingBufferPool.GetDecodingBuffer(); buffer.Init(userState.Name, userState.Session); _audioDecodingBuffers.Add(userState.Session, buffer); EventProcessor.Instance.QueueEvent(() => { //Debug.Log("Adding audioPlayer session #" + userState.Session); // We also create a new audio player for the user MumbleAudioPlayer newPlayer = _audioPlayerCreator(userState.Name, userState.Session); _mumbleAudioPlayers.Add(userState.Session, newPlayer); newPlayer.Initialize(this, userState.Session); }); if (OnNewDecodeBufferThreaded != null) { OnNewDecodeBufferThreaded(userState.Session); } }
// Dispose of all buffers that are currently in use public void Dispose() { while (_audioDecodingBuffers.Count != 0) { DecodedAudioBuffer decodingBuffer = _audioDecodingBuffers.Pop(); decodingBuffer.Dispose(); } }
public DecodedAudioBuffer GetDecodingBuffer() { DecodedAudioBuffer decodingBuffer; if (_audioDecodingBuffers.Count != 0) { decodingBuffer = _audioDecodingBuffers.Pop(); } else { decodingBuffer = new DecodedAudioBuffer(_audioDecodeThread); } return(decodingBuffer); }
public void ReturnDecodingBuffer(DecodedAudioBuffer decodingBuffer) { decodingBuffer.Reset(); _audioDecodingBuffers.Push(decodingBuffer); }