Beispiel #1
0
        private void UpdatePlaybackButtons(AudioDeviceState state)
        {
            if (this.InvokeRequired)
            {
                UpdateButtonsCallback d = new UpdateButtonsCallback(UpdatePlaybackButtons);
                this.Invoke(d, new object[] { state });
            }
            else
            {
                mPauseButton.Text = "Pause";
                switch (state)
                {
                case AudioDeviceState.Stopped:
                    mPlayButton.Enabled  = true;
                    mPauseButton.Enabled = false;
                    mStopButton.Enabled  = false;
                    mCurrentPos          = TimeSpan.Zero;
                    SetTimeLabel();
                    break;

                case AudioDeviceState.PausedPlay:
                    mPauseButton.Text = "Resume";
                    goto case AudioDeviceState.Playing;

                case AudioDeviceState.Playing:
                    mPlayButton.Enabled  = false;
                    mPauseButton.Enabled = true;
                    mStopButton.Enabled  = true;
                    break;

                default:
                    goto case AudioDeviceState.Stopped;
                }
            }
        }
Beispiel #2
0
        public AudioDeviceCollection GetAudioDevices(AudioDeviceKind kind, AudioDeviceState state)
        {
            IMMDeviceCollection result;

            Marshal.ThrowExceptionForHR(_underlyingEnumerator.EnumAudioEndpoints(kind, state, out result));
            return(new AudioDeviceCollection(result));
        }
        /// <summary>
        /// Fires the <see cref="StateChanged"/> event
        /// </summary>
        /// <param name="prevState">The <see cref="AudioDeviceState"/> prior to the change</param>
        protected void FireStateChanged(AudioDeviceState prevState)
        {
            EventHandler <StateChangedEventArgs> d = StateChanged;

            if (d != null)
            {
                d(this, new StateChangedEventArgs(prevState));
            }
        }
        public AudioDeviceCollection GetAudioDevices(AudioDeviceKind kind, AudioDeviceState state)
        {
            IMMDeviceCollection underlyingCollection;
            int hr = _deviceEnumerator.EnumAudioEndpoints(kind, state, out underlyingCollection);
            if (hr == HResult.OK)
                return new AudioDeviceCollection(underlyingCollection);

            throw Marshal.GetExceptionForHR(hr);
        }
        /// <summary>
        /// Sets the <see cref="AudioDeviceState"/> of <c>this</c>,
        /// firing the <see cref="IAudioDevice.StateChanged"/> event if nessesary
        /// </summary>
        /// <param name="newState">The new <see cref="AudioDeviceState"/></param>
        protected void setState(AudioDeviceState newState)
        {
            AudioDeviceState prevState = mState;

            mState = newState;
            if (newState != prevState)
            {
                FireStateChanged(prevState);
            }
        }
Beispiel #6
0
        void IMMNotificationClient.OnDeviceStateChanged(string deviceId, AudioDeviceState newState)
        {
            var handler = DeviceStateChanged;

            if (handler != null)
            {
                AudioDevice device = GetDevice(deviceId);

                handler(this, new AudioDeviceStateEventArgs(device, newState));
            }
        }
        public AudioDeviceCollection GetAudioDevices(AudioDeviceKind kind, AudioDeviceState state)
        {
            int hr = _deviceEnumerator.EnumAudioEndpoints(kind, state, out IMMDeviceCollection underlyingCollection);

            if (hr == HResult.OK)
            {
                return(new AudioDeviceCollection(underlyingCollection));
            }

            throw Marshal.GetExceptionForHR(hr);
        }
Beispiel #8
0
        /// <summary>
        /// Stop the audio session.
        /// </summary>
        /// <returns>A <see cref="ResultCode"/> reporting an error or a success</returns>
        public ResultCode Stop()
        {
            if (_state == AudioDeviceState.Started)
            {
                _hardwareDeviceSession.Stop();

                UpdateReleaseBuffers(true);

                _state = AudioDeviceState.Stopped;
            }

            return(ResultCode.Success);
        }
Beispiel #9
0
 void IMMNotificationClient.OnDeviceStateChanged(string deviceId, AudioDeviceState newState)
 {
     InvokeOnSynchronizationContext(() =>
     {
         var handler = DeviceStateChanged;
         if (handler != null)
         {
             AudioDevice device = GetDevice(deviceId);
             if (device == null)
             {
                 return;     // Device was already removed by the time we got here
             }
             handler(this, new AudioDeviceStateEventArgs(device, newState));
         }
     });
 }
Beispiel #10
0
        /// <summary>
        /// Create a new <see cref="AudioDeviceSession"/>.
        /// </summary>
        /// <param name="deviceSession">The device driver session associated</param>
        /// <param name="bufferEvent">The release buffer event</param>
        /// <param name="bufferRegisteredLimit">The max number of buffers that can be registered to the device driver at a time</param>
        public AudioDeviceSession(IHardwareDeviceSession deviceSession, IWritableEvent bufferEvent, uint bufferRegisteredLimit = 4)
        {
            _bufferEvent           = bufferEvent;
            _hardwareDeviceSession = deviceSession;
            _bufferRegisteredLimit = bufferRegisteredLimit;

            _buffers             = new AudioBuffer[Constants.AudioDeviceBufferCountMax];
            _serverBufferIndex   = 0;
            _hardwareBufferIndex = 0;
            _releasedBufferIndex = 0;

            _bufferAppendedCount   = 0;
            _bufferRegisteredCount = 0;
            _bufferReleasedCount   = 0;
            _volume = 1.0f;
            _state  = AudioDeviceState.Stopped;
        }
Beispiel #11
0
        /// <summary>
        /// Start the audio session.
        /// </summary>
        /// <returns>A <see cref="ResultCode"/> reporting an error or a success</returns>
        public ResultCode Start()
        {
            if (_state == AudioDeviceState.Started)
            {
                return(ResultCode.OperationFailed);
            }

            _hardwareDeviceSession.Start();

            _state = AudioDeviceState.Started;

            FlushToHardware();

            _hardwareDeviceSession.SetVolume(_volume);

            return(ResultCode.Success);
        }
        private static AudioDeviceCollection GetDevices(AudioDeviceManager manager, AudioDeviceKind kind)
        {
            AudioDeviceState state = AudioDeviceState.Active;

            if (Settings.Default.ShowDisabledDevices)
            {
                state |= AudioDeviceState.Disabled;
            }

            if (Settings.Default.ShowUnpluggedDevices)
            {
                state |= AudioDeviceState.Unplugged;
            }

            if (Settings.Default.ShowNotPresentDevices)
            {
                state |= AudioDeviceState.NotPresent;
            }

            return(manager.GetAudioDevices(kind, state));
        }
Beispiel #13
0
 private void UpdateInputFilesButtons(AudioDeviceState state)
 {
     if (this.InvokeRequired)
     {
         UpdateInputFilesButtonsDelegate d = new UpdateInputFilesButtonsDelegate(UpdateInputFilesButtons);
         this.Invoke(d, new object[] { state });
     }
     else
     {
         if (state == AudioDeviceState.Stopped)
         {
             mAddInputFileButton.Enabled    = true;
             mRemoveInputFileButton.Enabled = (mInputFilesListView.SelectedIndices.Count > 0);
             mClearInputFilesButton.Enabled = (mInputFilesListView.Items.Count > 0);
         }
         else
         {
             mAddInputFileButton.Enabled    = false;
             mRemoveInputFileButton.Enabled = false;
             mClearInputFilesButton.Enabled = false;
         }
     }
 }
Beispiel #14
0
 public void OnDeviceStateChanged([MarshalAs(UnmanagedType.LPWStr)] string deviceId, [MarshalAs(UnmanagedType.I4)] AudioDeviceState newState)
 {
     _deviceStateCallBack?.Invoke(deviceId, newState);
 }
Beispiel #15
0
 /// <summary>
 /// Constructor setting the previous <see cref="AudioDeviceState"/>
 /// </summary>
 /// <param name="prevState">The previous state</param>
 public StateChangedEventArgs(AudioDeviceState prevState) : base()
 {
     PreviousState = prevState;
 }
Beispiel #16
0
 public void OnDeviceStateChanged(string deviceId, AudioDeviceState state)
 {
 }
 public AudioDeviceStateEventArgs(AudioDevice device, AudioDeviceState newState)
     : base(device)
 {
     _newState = newState;
 }
Beispiel #18
0
 internal AudioDevice(string id, AudioDeviceState state, IDictionary <string, object> properties)
 {
     Id         = id;
     State      = state;
     Properties = properties;
 }
        private static void AddCommand(AudioDeviceManager manager, ContextMenuStrip strip, AudioDeviceCollection devices, AudioDeviceState state)
        {
            foreach (AudioDevice device in devices.Where(d => d.State == state))
            {
                ToolStripDropDown dropDown = strip.AddNestedCommand(new AudioDeviceCommand(manager, device));

                if (device.State == AudioDeviceState.Active)
                {
                    dropDown.AddCommand(new SetAsDefaultMultimediaDeviceCommand(manager, device));
                    dropDown.AddCommand(new SetAsDefaultCommunicationDeviceCommand(manager, device));
                }
            }
        }
Beispiel #20
0
 public AudioDeviceStateEventArgs(AudioDevice device, AudioDeviceState newState)
     : base(device)
 {
     _newState = newState;
 }
 internal AudioDevice(string id, AudioDeviceState state, IDictionary<string, object> properties)
 {
     Id = id;
     State = state;
     Properties = properties;
 }
Beispiel #22
0
 public void OnDeviceRemoved(string deviceId, AudioDeviceState state)
 {
 }
        void IMMNotificationClient.OnDeviceStateChanged(string deviceId, AudioDeviceState newState)
        {
            InvokeOnSynchronizationContext(() =>
            {
                var handler = DeviceStateChanged;
                if (handler != null)
                {
                    AudioDevice device = GetDevice(deviceId);
                    if (device == null)
                        return;     // Device was already removed by the time we got here

                    handler(this, new AudioDeviceStateEventArgs(device, newState));
                }
            });
        }
 public void OnDeviceStateChanged([MarshalAs(UnmanagedType.LPWStr)] string deviceId, [MarshalAs(UnmanagedType.I4)] AudioDeviceState newState)
 {
     //Plug and Unplug
 }
 internal AudioDeviceStateChangedEventArgs(AudioDevice device, AudioDeviceState changedState)
 {
     Device = device;
     State  = changedState;
 }
Beispiel #26
0
 public void OnDeviceAdded(string deviceId, AudioDeviceState state)
 {
 }
Beispiel #27
0
 internal static extern AudioManagerError GetDeviceState(int deviceId, out AudioDeviceState state);
 public DeviceStateChangedEventArgs(string deviceId, AudioDeviceState audioDeviceState)
     : this()
 {
     DeviceId = deviceId;
     State    = audioDeviceState;
 }