This documentation is archived and is not being maintained.

Configuring Media Devices

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

The IUccMediaDeviceManager and IUccMediaDeviceSettings interfaces encapsulate the functionality needed to manually select a media device as the default device for a given media type. Using these interfaces, you can also invoke a tuning wizard for each media device on a local computer.

The IUccMediaDeviceManager interface is instantiated by calling QueryInterface on the Platform object. The Media Device Manager is responsible for configuring application wide audio/video devices.

Audio and video devices capture and render audio/video streams as the selected devices on a local computer. These devices are selected automatically by the Media Device Manager or manually by a user. Audio/Video devices fall into the following categories:

  • Handset device. The device should be Unified Communications certified but can be a non-certified device. The devices are listed in order of auto-selection priority.
    • Unified Communications certified handset with display
    • Unified Communications certified handset with speakerphone
    • Unified Communications certified headset
    • Unified Communications certified device with no speakerphone or display
    • Non-Unified Communications certified handset
  • Speakerphone device:
    • Speakerphone on a handset device
    • Microsoft RoundTable device
    • Default system device
  • Alerting device:
    • Default system speaker. It can be selected using the tuning wizard or through a call to SetSelectedDevice.
  • Video device:
    • Active speaker stream on the RoundTable device. The RoundTable device uses multiple video cameras synchronized to individual microphones. As a microphone on the RoundTable receives audio information, the corresponding video device captures video information.
    • Default system video device. This is normally a webcam.

The selection process operates in the following two modes.

Auto-Select Mode

The Media Device Manager attempts to auto-detect and auto-select preferred audio/video devices for the user. With this feature, the user is not forced to use the tuning wizard. Normally, the tuning wizard is used to override the automatic selections made by the Media Device Manager. Auto-selection is made at the category level with the device with the highest priority becoming the preferred device.

For example, the audio category speaker device choices might be:

  • Catalina speakerphone, priority 1
  • USB audio device, priority 2
  • Internal digital sound card, priority 3

The Media Device Manager auto-selects the speakerphone. If the speakerphone is unplugged, the Media Device Manager selects the USB audio device. Plugging in the speakerphone again restores it as the auto-selected device.

Manual-Select Mode

When a user invokes the tuning wizard to select an audio or video device, the user shifts the category (audio or video) into manual-select mode. Using the previous example, if the user has manually selected the USB audio device, that choice overrides the auto-selected device. Unplugging the USB audio device after manually selecting it causes the Media Device Manager to revert to auto-select mode. Plugging in the USB audio device again sets the Media Device Manager to manual-select mode with the USB audio device chosen as the audio rendering device.

Calling the SetSelectedDevice method on the Media Device Manager is equivalent to allowing the user to select a device using the tuning wizard.

Application Scenarios

The Media Device Manager supports the following scenarios:

  • Annie uses a basic USB telephony device (without speakerphone and display) on her desktop. She borrows a USB telephony device with a speakerphone and a display from her colleague and attaches it to her desktop. She is impressed that Office Communicator auto-detects the new telephony device and configures it to be the new preferred device without her needing to rerun the AV tuning wizard. When she unplugs the borrowed USB telephony device to return it to her colleague, she notices that her earlier USB telephony device is automatically set up as her preferred device.
  • Robert primarily uses a headset with Office Communicator. Sometimes, while still in office, he removes his headset to talk to his colleagues. He is assured that he will not miss any incoming calls because he has set his desktop speakers to also play an alert sound when there is an incoming call.
  • Gordon has a USB telephony device with a speakerphone button on it. He is in the middle of an audio call with his offshore teammate and wants his officemate to also take part in the discussion. He presses the speakerphone button on his telephony device so that his desktop speakers and microphone act as the speakerphone. Now, he and his officemate can both converse with their offshore teammate.
  • Doris sets up her speakers in AV tuning wizard with a very low volume level because her teammate has a very sensitive microphone. When she finishes her conversation with her teammate, she plays her favorite song using Windows Media Player, without needing to adjust the volume level of her speakers. When she returns to Office Communicator to talk to her teammate, she is impressed to see that Office Communicator remembered her low speaker volume setting.
  • Eric takes his laptop to a conference room and plugs in the USB RoundTable device to begin a conference call with his partners. The RoundTable device automatically becomes the preferred audio/video device and is automatically configured to use the built-in AEC (acoustic echo cancellation) on the device.

A IUccMediaDeviceManager interface pointer is found by querying the interface of a co-creatable UccPlatform object. The UccPlatform co-creatable class implements a dispinterface for media device manager events (_IUccMediaDeviceManagerEvents). For more information about registering for event notifications, see Event Model of Unified Communications Client API.

The following example instantiates a IUccMediaDeviceManager interface and registers for the interface events.

UccPlatform _platform = new UccPlatform();
IUccMediaDeviceManager _mediaDeviceMgr = _platform as IUccMediaDeviceManager;

//register for Media Device Manager events