Git Product home page Git Product logo

audioswitcher's People

Contributors

jsakamoto avatar lukazoid avatar mojoe-playground avatar pengowray avatar xenolightning avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

audioswitcher's Issues

New NuGet Package

Are you able by any chance to release a new NuGet package. I am having a lot of issues with setting volume and memory corruptions which seem to be fixed with your latest changes which are not yet available via NuGet.

Thanks.

How to check for disconnected devices?

Hi, I'm looking for a way to detect when a device has been disconnected. CoreAudioDevice.SessionController.SessionDisconnected is called when a device is disconnected from the machine, but is seems to be only called once, and is not called for subsequent reconnections and disconnections.
You have created issue #39 to expose aggregate session messages through a single point. Have there been any updates regarding this issue?
Is there some other work around to reliably get messages when a device is connected and disconnected?

Kind regards,

Anders Egberts

Is possible to make +100% volume?

Hi, I'm creating a simple audio project. But I would like to know if I can pass the limit of 100% of the volume (like the google extensions for volumegain) I am programming in C#

NullReferenceException triggered from other process

Very strange behaviour here. I've written an app that can do different things based on the command line parameter.

  1. It can open my external speakers (S/PDIF) and play a short inaudible sound to prevent the speakers from turning off after some idle time.
  2. It can play sounds at an interval on the same external speakers.

I use this library to set the desired volume for each task.

Option 1 is started through the Windows task scheduler at every full hour.

I can start option 2 interactively. It's a console application that only plays a sound (with NAudio) every few minutes.

Now when the interactive program is running and the keep-alive tasks runs in the background, then the interactive program crashes with a NullReferenceException in AudioSwitcher.AudioApi.CoreAudio.CoreAudioSession.Dispose(), called from AudioSwitcher.AudioApi.CoreAudio.CoreAudioSession.Finalize(). That's all I get when I attach a Visual Studio debugger. The exception is not in my code so I can't see it. Also, the exception occurs in another process than was started.

What is it doing there that affects other processes using the same library?

Here's the keep-alive part:

Guid deviceGuid = DirectSoundOut.DSDEVID_DefaultPlayback;
foreach (var dev in DirectSoundOut.Devices)
{
	if (dev.Description.Contains(name))
		deviceGuid = dev.Guid;
}
var cac = new CoreAudioController();
caDevice = cac.GetDevice(deviceGuid);
if (caDevice == null)
	return false;
bool wasMuted = caDevice.IsMuted;
double previousVolume = caDevice.Volume;
if (wasMuted)
	caDevice.Mute(false);
caDevice.Volume = 5;

PlaySine(19000, 0.5, 0.5);   // with NAudio
Thread.Sleep(50);

caDevice.Volume = previousVolume;
if (wasMuted)
	caDevice.Mute(true);
caDevice.Dispose();

The interactive task doesn't do anything while it crashes. It has played a sound before but isn't currently playing when the keep-alive task starts. So it's not interacting with the library and sits in a Sleep call somewhere while it dies.

Incorrect/Missing info on SessionController

Some IAudioSession that I get from CoreAudioController().DefaultPlaybackDevice.SessionController have invalid information, such as blank DisplayName(s) or no ExecutablePath(s), even though I still can control their volume by modifying their .Volume attribute. Is it my fault or is it an issue? (some apps that cause this are Chrome, Teamspeak or the internal System sounds.

OutOfMemoryException

The issue is raised every time I leave my application running for about 3 days. I don't have a full stacktrace, because the exception is caught in AppDomain.CurrentDomain.UnhandledException but it's something like this:

2019-03-19 12:22:50.6656|ERROR|WindowsServiceClient.WindowsClient|Domain unhandled exceptionSystem.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Diagnostics.NtProcessInfoHelper.GetProcessInfos(IntPtr dataPtr, Predicate`1 processIdFilter)
   at System.Diagnostics.NtProcessInfoHelper.GetProcessInfos(Predicate`1 processIdFilter)
   at System.Diagnostics.ProcessManager.GetProcessInfosCore(String machineName, Boolean isRemoteMachine)
   at System.Diagnostics.Process.GetProcesses(String machineName)
   at System.Diagnostics.Process.GetProcesses()
   at AudioSwitcher.AudioApi.CoreAudio.ProcessMonitor.ProcessTerminatedCheck(Object state)
   at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.TimerQueueTimer.CallCallback()
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()
   at System.Threading.TimerQueue.AppDomainTimerCallback()
2019-03-19 12:22:26.2306|ERROR|WindowsServiceClient.WindowsClient|Domain unhandled exceptionSystem.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Collections.ArrayList.set_Capacity(Int32 value)
   at System.Collections.ArrayList.EnsureCapacity(Int32 min)
   at System.Collections.ArrayList.Add(Object value)
   at System.Diagnostics.NtProcessInfoHelper.GetProcessInfos(IntPtr dataPtr, Predicate`1 processIdFilter)
   at System.Diagnostics.NtProcessInfoHelper.GetProcessInfos(Predicate`1 processIdFilter)
   at System.Diagnostics.ProcessManager.GetProcessInfosCore(String machineName, Boolean isRemoteMachine)
   at System.Diagnostics.Process.GetProcesses(String machineName)
   at System.Diagnostics.Process.GetProcesses()
   at AudioSwitcher.AudioApi.CoreAudio.ProcessMonitor.ProcessTerminatedCheck(Object state)
   at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.TimerQueueTimer.CallCallback()
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()
   at System.Threading.TimerQueue.AppDomainTimerCallback()
2019-03-19 12:22:50.6656|ERROR|WindowsServiceClient.WindowsClient|Domain unhandled exceptionSystem.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.String.CtorCharPtrStartLength(Char* ptr, Int32 startIndex, Int32 length)
   at System.Runtime.InteropServices.Marshal.PtrToStringUni(IntPtr ptr, Int32 len)
   at System.Diagnostics.NtProcessInfoHelper.GetProcessInfos(IntPtr dataPtr, Predicate`1 processIdFilter)
   at System.Diagnostics.NtProcessInfoHelper.GetProcessInfos(Predicate`1 processIdFilter)
   at System.Diagnostics.ProcessManager.GetProcessInfosCore(String machineName, Boolean isRemoteMachine)
   at System.Diagnostics.Process.GetProcesses(String machineName)
   at System.Diagnostics.Process.GetProcesses()
   at AudioSwitcher.AudioApi.CoreAudio.ProcessMonitor.ProcessTerminatedCheck(Object state)
   at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.TimerQueueTimer.CallCallback()
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()
   at System.Threading.TimerQueue.AppDomainTimerCallback()
2019-03-19 12:22:50.6656|ERROR|WindowsServiceClient.WindowsClient|Domain unhandled exceptionSystem.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Linq.Set`1.Resize()
   at System.Linq.Set`1.Find(TElement value, Boolean add)
   at System.Linq.Enumerable.<ExceptIterator>d__73`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at AudioSwitcher.AudioApi.CoreAudio.ProcessMonitor.ProcessTerminatedCheck(Object state)
   at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.TimerQueueTimer.CallCallback()
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()
   at System.Threading.TimerQueue.AppDomainTimerCallback()

The system I'm running has 32GB of RAM and at the point when this exception is invoked I don't observe any huge system memory consumption.

"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll

I'm using VS2017 on Windows 10. My WPF application is using the lastest version of this API and has a Realtek onboard sound card

I want to set the volume of the windows setting to max like that:

 CoreAudioDevice defaultCaptureDevice = new CoreAudioController().DefaultCaptureDevice;
 defaultCaptureDevice.Volume = 100;

So far it's working but after the first call my CPU usage is increasing and I constantely receive this message in the VS2017 output window:

"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll
"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll
"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll
"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll
"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll
"System.NullReferenceException" in AudioSwitcher.AudioApi.CoreAudio.dll
....

It's not stopping. What is wrong?

I'm using AudioSwitcher.AudioApi.CoreAudio. 3.0.0.1 And I have to problem with Win 7 and Win 10

My WPF application has as target framework .NET 4.5.2

Natural Async for all device related functions

There is a lot of "fake async" calls in the current api.

These should be replaced with truly sync and async counterparts to improve performance.

Candidates for natural async:

  • Set Volume
  • Set Mute
  • Toggle Mute
  • Set Default Device
  • Set Default Comm

Along with this, all Task.Factory.StartNew or Task.Run faking async will be replace with a Task.FromResult to not consume unnecessary resources.

This should not break any current functionality.

Properties Inaccessible when device is removed.

Details:

Audio Switcher
Version: 1.6.3.1
Operating System: Microsoft Windows NT 6.2.9200.0 64-bit
Administrator Privileges: False

User Comments:

unplugged a device i think

Stacktrace:

System.NullReferenceException: Object reference not set to an instance of an object.
   at AudioSwitcher.AudioApi.CoreAudio.CoreAudioDevice.get_FullName()
   at FortyOne.AudioSwitcher.AudioSwitcher.RefreshNotifyIconItems()
   at FortyOne.AudioSwitcher.AudioSwitcher.RefreshPlaybackDevices()

Disabling/enabling TV as a display device crashes the app

I'm using Windows 8 enterprise 64bit, running the app with admin rights. I have a TV plugged into my gpu hdmi output, so it acts as a video and an audio device at the same time. Whenever I change my display mode (PC only, Extend, Second screen only) so that the TV is toggled (win+P) right clicking the AudioSwitcher makes it blink in and out and becomes unusable. I have to kill the process and restart. Looking into this would be much appreciated, your app is the best one I found so far. Let me know if I can provide any more details.

Unknown device when HDMI Audio with AVR reconnects

Noticed this unknown device bug for a while in the AudioSwitcher windows app and in my MP1-Audioswitcher (Mediaportal plugin) recently as well.

Steps to recreate

  • Start AudioSwitcher app
  • Make HDMI audio device the default (Denon AVR in my case)
  • Let the AVR go into standby or power off so that it does passthru HDMI signal
  • Will still list HDMI audio device correctly.
  • Now turn the AVR back on
  • AudioSwitcher app will now list an device named "unknown" which can be set as active and is indeed the HDMI audio device just not with the proper name however with same device.id.

Current workarounds

  • Restart AudioSwitcher app and it will no longer list the unknown device.
  • In the case of MP1-Audioswitcher I have to reload the CoreAudio class like so as otherwise it would need an Mediaportal restart:

RickDB/MP1-AudioSwitcher@a9d22e5

Possible solution in AudioSwitcher library might be to always reload the CoreAudio class in case of unknown devices during .GetDevices call however that is more of workaround than an actual fix.
Or during the reloading of device lists in library internally it does it too quickly during reconnects and requires a longer delay for certain sources (HDMI audio in this case)

Library version installed via Nuget:

AudioSwitcher.AudioApi
v4.0.30319

OS:
Windows 10 x64

Powershell Module?

Controlling desktop audio devices via Powershell is exactly what I'm looking for, but the links to the documentation seem to be broken. Also it would be helpful if there was a pre-compiled DLL and a sample script.
Sorry if I just missed any of the above.

Event Ordering from INotificationClient

Events are forwarded without the updates taking place.

Extract out a system notification source, and get each device to sub to events.

Use those events to propagate to controller

Feature request - Playback + Recording change at the same time

edit going to repost this in the V1 issues instead of the .NET library. Sorry...

Thanks for this very handy little utility.

One thing I'd like to see added is some type of convention to change the playback and recording devices at the same time. Either through a hotkey or favorite selection.

Use case is that I've got two different device "profiles" (playback device + recording device) that I'd like to quickly switch between. I can almost get there now, it takes a couple clicks to do it, but it would be great if a combination could be created to change both at the same time.

Known Issue: Audio Sessions - "Random" exceptions

There is an issue in the session create code which causes either COM Objects to be access in a non thread safe manner, or the lifecycle is disposed prematurely.

The session controller should probably not be a DeviceCapability it causes oddities.

Default Device Changed - Fires Changed for playback twice

When a recording device is set as default it fires the event twice for the CoreAudioDevice. It should only fire once for a single default action.

System events fire twice, one for eRole.Console & eRole.Console. These should be aggregated so that only one event is fired internally.

CoreAudioController constructor results in method access exception - Unity3D

MAE

The following is the error when calling the CoreAudioConstructor:

System.MethodAccessException: Method System.__ComObject..ctor()' is inaccessible from method System.__ComObject..ctor()'
at (wrapper managed-to-native) System.Object.__icall_wrapper_mono_throw_method_access(intptr,intptr)
at System.__ComObject..ctor () [0x00000] in :0
at (wrapper cominterop-invoke) System.__ComObject..ctor()
at (wrapper managed-to-native) System.Reflection.MonoCMethod.InternalInvoke(System.Reflection.MonoCMethod,object,object[],System.Exception&)
at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00002] in :0

hotkey to cycle the audio devices

just like clicking the try icon to cycle through the audio device. is there a hotley to add or configure to do the same function?

Consolidate setting of defaults

There are "too many" ways to set a device as a default.

Controller/Device, and there's a weird interdependence between the types because of this.

Default is a property of a device, therefore all setting of defaults will be done directly against the device, and not the controller.

Error with Activator.CreateInstance() Type.GetTypeFromCLSID(new Guid(ComInterfaceIds.DEVICE_ENUMERATOR_CID));

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.MethodAccessException: Method System.__ComObject..ctor()' is inaccessible from method System.__ComObject..ctor()'.

I have tried changing all internals to public, is it possible something else is wrong? This is on a Windows 10. Not sure what else you would need to know...

Thank you

Disconnected blue tooth devices

Hi,
I'm not quite sure if this is the right place to put a request...
anyways - thank You very much for this app!

I wonder, if it's possible to connect disabled BT-devices ?

  • thats the main reason why I was looking for such an app.
    Nobody seems to have managed that, yet...

Cheers,

Stephan

Changing CoreAudio Name property

Goal.

I have been trying to change the name property of a CoreAudio device with this library.

Setup.

This could not work with the nuget package because I don't have access to the COM thread used in this library. To work around this I added this project as a subproject to mine and changed the ComThread class to public so that I could use it's invoke method to do operations I would want to do.

Observation.

When I tried changing the name property this way(running as admin else the change would not be done) the desktop environment started flashing as if it was constantly reloading. Disabling the changed audio device through Control Panel would make the flashing stop. Reenabling would make the desktop flash again. After a reboot the system would behave normally again.

I have also seen that setting the name property was not covered by any of the tests

Minimum reproducible example.

I used the following function to change the name of the default device:

static void Test() {
	var controller = new CoreAudioController();
	ComThread.Invoke(() => { controller.DefaultPlaybackDevice.Name = "Test"; });
}

I have done this for 2 devices I had available, my usb headset and my hdmi monitor.

Remarks

Is this a bug or should setting the name not even be done with this library?

When library is started with device turned off, it does not fire VolumeChange events when it is later turned on

When the library is started with an audio device in "NotPresent/Unplugged" state, the VolumeChange events are not fired when this device is turned on later.

This is caused by GetAudioEndpointVolume called only in CoreAudioDevice constructor. It should be called in EnumeratorOnAudioDeviceChanged as well.

Quick - but working - fix that made the library work as expected for me - run the following in EnumeratorOnAudioDeviceChanged:

        ComThread.BeginInvoke(() =>
        {
            LoadProperties(_device);
            if (AudioMeterInformation == null)
            {
                GetAudioMeterInformation(_device);
            }
            if (AudioEndpointVolume == null)
            {
                GetAudioEndpointVolume(_device);
                if (AudioEndpointVolume != null)
                    AudioEndpointVolume.OnVolumeNotification += AudioEndpointVolume_OnVolumeNotification;
            }
        })

Setting default audio device return s false

I'm trying to set a default audio device on my computer like so:

bool ok = device.SetAsDefault();

Very often (seemingly at random) the call fails and returns false. Is this supposed to happen? Are there any more information available on why/when this happens?

Is there a way to ensure the default device is set?

[feature request] Device toggle

An option to have one shortcut to toggle between devices, instead of having a shortcut per device.
Some sort of prompt on which device has been changed to would also be nice, preferably not as a taskbar notification.

Invalid Device - Add/State Change

Invalid devices are ignored during an "Add".

This may cause the Api to fail to further detect the device.

Possible solutions:

  • Attempt to add the device (if it doesn't exist) on every system change event
  • Add the devices in an invalid state, and mark them as invalid so they can be filtered out of queries

Strange exception: msvcrt.dll

Hello,

I randomly encounter the following error in my program when using this library:

Exception thrown at 0x00007FF81DD03F80 (msvcrt.dll) in FireDeptStopwatch.exe: 0xC0000005: Access violation reading location 0x0000000014585ED8.

The following line of code is enough to trigger the exception:
var sessions = audioController.DefaultPlaybackDevice.GetCapability<IAudioSessionController>();

Any clue what might be wrong?

NullRef Exeception

Hi,

i got an exception:

System.NullReferenceException ist aufgetreten.
HResult=0x80004003
Nachricht = Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Quelle = AudioSwitcher.AudioApi.CoreAudio
Stapelüberwachung:
bei AudioSwitcher.AudioApi.CoreAudio.CoreAudioDevice.<>c__DisplayClass55_0.<Timer_UpdatePeakValue>b__0()

Hope it helps.

Greetings

Recursive Readlock

Details:

Audio Switcher
Version: 1.6.3.1
Operating System: Microsoft Windows NT 6.1.7601 Service Pack 1 64-bit
Administrator Privileges: False

User Comments:

Stacktrace:

System.Threading.LockRecursionException: In this mode, the import recursively read locks are not allowed. 
Location: System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore (TimeoutTracker timeout) 
Location: System.Threading.ReaderWriterLockSlim.TryEnterReadLock (TimeoutTracker timeout) 
Location: AudioSwitcher.AudioApi.CoreAudio.CoreAudioDeviceEnumerator.GetDevices (DeviceType deviceType, DeviceState state) 
Location:AudioSwitcher.AudioApi.CoreAudio.CoreAudioDeviceEnumerator.AudioSwitcher.AudioApi.IDeviceEnumerator.GetDevices(DeviceType type, DeviceState eRole) 
Location: FortyOne.AudioSwitcher.AudioSwitcher.RefreshPlaybackDevices ()

Can this library enumerate properties of an audio device?

I'm trying to find a way, having retrieved reference to the device, of enumerating the properties (such as channel count, sampling rate, whether it allows exclusive mode access etc).. The Visual Studio object browser contents seem to imply the answer is "No", though it looks like some classes internally do reference or use the properties..

Can I use GetMasterVolumeLevelScalar with this API?

I have downloaded AudioSwitcher.AudioApi.CoreAudio using NuGet.

I was then trying to use GetMasterVolumeLevelScalar to get the Windows volume.

However, I don't find this function in the Api.

Could you give me a hint to get the MasterVolumeLevelScalar?

Default Device Changed - Does not fire for previous default device

Events are fired correctly on the new default device, but not on old devices.

This will cause any current system which actively monitor the default device being set to false to have unexpected behavior.

Events should fire on the previous and current default device, to signal that default device has changed for both devices (because it has)

Some packages are compatible with UAP version 10.0? (NuGet)

I'm probably being an idiot, but the NuGet library doesn't install because some of the packages aren't compatible with Windows Universal App Platform (UAP). I'll list the output I got:

`Restoring packages for 'CortanaComponent'.

Restoring packages for C:\Users\User\Documents\Visual Studio 2015\Projects\Cortana\CortanaComponent\project.json...

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0.

Some packages are not compatible with UAP,Version=v10.0.

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-arm).

Some packages are not compatible with UAP,Version=v10.0 (win10-arm).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-arm-aot).

Some packages are not compatible with UAP,Version=v10.0 (win10-arm-aot).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x64).

Some packages are not compatible with UAP,Version=v10.0 (win10-x64).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x64-aot).

Some packages are not compatible with UAP,Version=v10.0 (win10-x64-aot).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x86).

Some packages are not compatible with UAP,Version=v10.0 (win10-x86).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x86-aot).

Some packages are not compatible with UAP,Version=v10.0 (win10-x86-aot).

Package restore failed for 'CortanaComponent'.

Restoring packages for 'HomeControl'.

Restoring packages for C:\Users\User\Documents\Visual Studio 2015\Projects\Cortana\CortanaExt\project.json...

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0.

Some packages are not compatible with UAP,Version=v10.0.

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-arm).

Some packages are not compatible with UAP,Version=v10.0 (win10-arm).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-arm-aot).

Some packages are not compatible with UAP,Version=v10.0 (win10-arm-aot).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x64).

Some packages are not compatible with UAP,Version=v10.0 (win10-x64).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x64-aot).

Some packages are not compatible with UAP,Version=v10.0 (win10-x64-aot).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x86).

Some packages are not compatible with UAP,Version=v10.0 (win10-x86).

AudioSwitcher.AudioApi.CoreAudio 3.0.0.1 is not compatible with UAP,Version=v10.0 (win10-x86-aot).

Some packages are not compatible with UAP,Version=v10.0 (win10-x86-aot).

Package restore failed for 'CortanaExt'.

Package restore failed. Rolling back package changes for 'CortanaComponent'.

========== Finished ==========
`

SessionDisconnected only fires once for programs with multiple audio sessions

Since FireFox is the only program I know of that creates multiple audio sessions, I haven't been able to try this with anything else.

Every time I create a new tab in FireFox, the SessionCreated fires, and a new audio session is also visible in the Windows volume mixer.

When I close one tab, the SessionDisconnected event fires like you would expect, and the session disappears from the Windows volume mixer.

The problem is, that this is the only SessionDisconnected event I will get. Closing any more tabs doesn't fire the event again, and even closing FireFox altogether doesn't work.

As a side note: Even if the event were to go off for every session created by FireFox, I have no way of knowing which session was actually removed, since the ID is the same for every session. As far as I can tell the only thing differentiating the sessions is the ProcessID.

Remote desktop connection causes memory overflow?

Disposed instances with direct delegate roots (Show details) (Ignore...)
One type has instances that are disposed and directly rooted by a delegate. This often indicates that the delegate has not been properly removed and is a common cause of memory leaks.
Investigate the type below for more information.
CoreAudioSession

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.