Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The ACS .NET SDK shows less video devices than the ACS JS SDK #420

Open
JohanKroese opened this issue Nov 16, 2021 · 3 comments
Open

The ACS .NET SDK shows less video devices than the ACS JS SDK #420

JohanKroese opened this issue Nov 16, 2021 · 3 comments

Comments

@JohanKroese
Copy link

JohanKroese commented Nov 16, 2021

Is your feature request related to a problem? Please describe.
The ACS .NET SDK returns only a subset of local video devices. I have two physical video devices in my laptop:
Microsoft Front Camera
Microsoft Back Camera

I also have several virtual camera devices, two of them:
OBS Virtual Camera (provided by OBS Studio)
PowerToys VideoConference Mute (provided by PowerToys)

I retrieve the cameras collection using the ACS .NET SDK:
var callClient = new CallClient();
var deviceManager = await callClient.GetDeviceManager();
var cameras = deviceManager.Cameras;

The cameras object only returns the 2 actual webcams (Microsoft Front/Back Camera).

The MS Teams (windows desktop) Client running on the same machine does show al the different cameras:
image

Running the Group Calling Sample project that uses the ACS JS SDK also returns all the camera's:

image

Note that we tested this on different machines and all return the same results; the ACS .NET SDK only returns a subset of video devices. Both MS Teams and applications built on the ACS JS SDK show all devices.

Describe the solution you'd like
The ACS SDK returns all available video devices, like the MS Teams client and the ACS JS SDK do.

Describe alternatives you've considered
Using the ACS JS SDK. This however reduces the video quality to 720p.
Adding a network camera in Windows 10/11. This has the drawback that there is no way to influence camera settings or views. Suprisingly, adding a network camera this way does enable the device to show up using the ACS .NET SDK. Since we have one device that has four camera's and a 'quad view', using the network camera in Win10 this way would limit us to a single camera.

@ghost ghost added the Needs: triage 🔍 label Nov 16, 2021
@Devmawi
Copy link

Devmawi commented Oct 29, 2023

I have the same Problem with OBS Studio. The following code only returns a subset (physical devices):

this.callClient = new CallClient(new CallClientOptions()
{
    Diagnostics = new CallDiagnosticsOptions()
    {
        AppName = "CallingQuickstart",
        AppVersion = "1.0",
        Tags = new[] { "Calling", "ACS", "Windows" }   
    }   
});

//// Set up local video stream using the first camera enumerated
DeviceManager deviceManager = await this.callClient.GetDeviceManagerAsync();

foreach (var device in deviceManager.Cameras)
{
    //do something with device
}

Edition Windows 10 Enterprise
Version 21H2
Installiert am ‎10.‎06.‎2021
Betriebssystembuild 19044.3324
Leistung Windows Feature Experience Pack 1000.19041.1000.0

@jowang-msft
Copy link
Member

Hi @Devmawi , what version of the ACS Windows SDK are you using?

@JDG-Worker
Copy link

I have the same or even worse problem.
Teams shows 2 sets of speakers+microphones and the built-in camera on my laptop.
The code above doesn't show anything, 0 speakers, 0 microphones, 0 cameras.
JS client displays the correct set of devices.

Azure.Communication.Calling.WindowsClient v1.9.0

Edition Windows 11 Pro
Version 23H2
OS build 22631.4169
Experience Windows Feature Experience Pack 1000.22700.1034.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants