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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        protected override void CloseSystemInputBuffer(IAudioInputBuffer buffer)
        {
            var systemBuffer = buffer as SystemAudioInputBuffer;

            systemBuffer.AudioUnit.Stop();
        }
示例#5
0
 /// <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);
示例#6
0
 /// <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);
示例#7
0
 public void CloseInputBuffer(IAudioInputBuffer buffer)
 {
     CloseSystemInputBuffer(buffer);
     _inputBufferRegistry.RemoveBuffer(buffer);
 }
 public static void CloseInputBuffer(IAudioInputBuffer buffer)
 {
     _audioService.CloseInputBuffer(buffer);
 }