public void AddBuffer(IAudioInputBuffer buffer) { if (_registeredBuffers.Any(x => x.Device.DeviceID == buffer.Device.DeviceID)) { throw new InvalidOperationException(String.Format("Device '{0}: {1}' is already registered.", buffer.Device.DeviceID, buffer.Device.Name)); } _registeredBuffers.Add(buffer); }
public void RemoveBuffer(IAudioInputBuffer buffer) { var buffersToUnregister = (from x in _registeredBuffers where x.Device.DeviceID == buffer.Device.DeviceID select x).ToList(); foreach (var bufferToUnregister in buffersToUnregister) { //for (int i = 0; i < buffersToUnregister.Count(); i++) _registeredBuffers.Remove(bufferToUnregister); } }
protected override void OpenSystemInputBuffer(IAudioInputBuffer buffer) { if (!(buffer is SystemAudioInputBuffer)) { throw new ArgumentException("Expected " + nameof(SystemAudioInputBuffer) + " for parameter 'buffer'", nameof(buffer)); } var actualBuffer = buffer as SystemAudioInputBuffer; // Main bit - 8.2 - from Learning Core Audio p164 var inputUnit = CreateInputUnit(actualBuffer); ErrorHandler.CheckError(inputUnit.Start); }
protected override void CloseSystemInputBuffer(IAudioInputBuffer buffer) { var systemBuffer = buffer as SystemAudioInputBuffer; systemBuffer.AudioUnit.Stop(); }
/// <summary> /// Closes the hardware device for the given platform. Frees up allocated buffer from memory. /// </summary> /// <param name="buffer">Buffer.</param> protected abstract void CloseSystemInputBuffer(IAudioInputBuffer buffer);
/// <summary> /// Opens the hardware device for the given platform. Audio will begin recording immediately, enabling retrieval of samples upon request. /// </summary> /// <param name="buffer">Uninitialized IAudioInputBuffer.</param> protected abstract void OpenSystemInputBuffer(IAudioInputBuffer buffer);
public void CloseInputBuffer(IAudioInputBuffer buffer) { CloseSystemInputBuffer(buffer); _inputBufferRegistry.RemoveBuffer(buffer); }
public static void CloseInputBuffer(IAudioInputBuffer buffer) { _audioService.CloseInputBuffer(buffer); }