Run Time Dependencies

MacOS systems

System event loop

  • Ensure that the application has started its mainQueue. This must be done as any UI Rendering of Video Frames or receiving of AVCaptureDevice events relies on the existence of an active mainQueue.

  • In our samples we enable the mainQueue to start processing events as follows (refer to share/dolbyio/comms/sample/utilities/ui_loop/macos_ui.mm for more details):

[NSApp run]
  • IMPORTANT: On macOS some operations performed by the SDK require using the application mainQueue. Blocking the application mainQueue while awaiting any specific SDK operation to finish may lead to deadlocks. Refer to following documentation section to see how to properly chain asynchronous operations and avoid the need for blocking.

Microphone/camera permission

  • Ensure that terminal has access to a microphone and a camera.

  • If not provided, the SDK will request access when launching application; then make sure to grant permission.

  • Failure to grant permissions will not allow the SDK to capture audio/video and send it into the conference.

Windows systems

CRT version

  • All components of the SDK use the dynamic, release, multithreaded runtime. The SDK API requires passing some memory ownership between the application and the SDK.

  • The application needs to use the dynamic, release, multithreaded CRT in the code which interfaces with the SDK.

  • In order to achieve this, the /MD switch should be used for the MSVC compiler; the sample code uses the CMake build system

  • CMake-based applications can easily enforce using the correct CRT flavour using the following directive in the CMakeLists.txt file:

set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)

Microphone/camera permission

  • Ensure that terminal has access to a microphone and a camera.

  • If not provided, the SDK will request access when launching application; then make sure to grant permission.

  • Failure to grant permissions will not allow the SDK to capture audio/video and send it into the conference.

Linux systems

PulseAudio

  • On Linux systems the C++ SDK needs access to the PulseAudio Sound Server in order to successfully initialize.

  • Make sure that the Ubuntu has either system wide PulseAudio running or that an instance of PulseAudio is started by the same user who will run the application.

  • To check if you have pulseaudio installed you can run:

$ pulseaudio --version
  • The Ubuntu machine should already have pulseaudio installed, but if it does not, run the following command. Please note, to use package manager you need to be super user.

$ sudo apt-get install pulseaudio
  • When it is installed, start pulseaudio for your user as follows:

$ pulseaudio