Audio, Video and Desktop Capture Library Specification

Modules

Video

Should be written using platform native APIs, i.e. no GStreamer, OpenCV, QtMultimedia, etc.

Windows:

OS X:

Expected functionality to be implemented

  • Get a list of all camera devices, with their respected camera ids and UI-friendly device names.
  • Specify which camera to use, based on the camera id from the camera list.
  • Use multiple cameras at once.
  • Capture a single frame (a still image).
  • Capture a continuous stream (a video).
  • All capturing should be done in YUV and RGB.
  • Get list of supported camera resolutions.
  • Set resolution of capturing images.
  • Get notified when a camera is connected to/disconnected from the computer.
  • Change image brightness, contrast, saturation.

Audio

Should be written using platform native APIs (what about OpenAL?).

Expected functionality to be implemented

  • Get a list of all audio recording devices, with their respected device ids and UI-friendly device names.
  • Specify which audio recording device to use, based on the device id from the device list.
  • Capture audio in 48khz 16bit signed PCM.
  • Get a list of all audio playback devices, with their respected device ids and UI-friendly device names.
  • Specify which audio playback device to use, based on the device id from the device list.
  • Audio playback.
  • Audio mixing.
  • Get notified when an audio device is connected to/disconnected from the computer.

Desktop

Should be written using platform native APIs. On Linux it should support X11, Wayland and Mir.

Expected functionality to be implemented

  • Get a list of all monitors.
  • Specify which monitor to capture, based on the list.
  • Capture a single frame.
  • Capture a continuous stream. Some(?) APIs provide this, which is different from manually capturing frame by frame.
  • All capturing should be done in YUV and RGB.
  • Get monitor's properties, such as resolution.
  • Get notified when a monitor is added/removed.
Print/export