Skip to content
This repository has been archived by the owner on Aug 30, 2024. It is now read-only.

Commit

Permalink
Update for 2.2.0-beta.1 release
Browse files Browse the repository at this point in the history
  • Loading branch information
dolbyio-gh-bot committed Nov 10, 2022
1 parent 7f4da7d commit dd1ba72
Show file tree
Hide file tree
Showing 80 changed files with 2,313 additions and 1,851 deletions.
2 changes: 1 addition & 1 deletion docs/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 763d4b7cd9466d1e2ac87367299768d9
config: a288bbb74e1906ae4fa69bedc6040c49
tags: 645f666f9bcd5a90fca523b33c5a78b7
Binary file modified docs/.doctrees/api/coresdk.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/injection/audio.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/injection/example.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/injection/video.doctree
Binary file not shown.
Binary file added docs/.doctrees/api/media_io.doctree
Binary file not shown.
Binary file added docs/.doctrees/api/plugins.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/recording/audio.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/recording/encoded_video.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/recording/example.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/recording/raw_video.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/audio.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/common/async_ops.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/conference.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/device_management.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/injector.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/recorder.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/sdk.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/session.doctree
Binary file not shown.
Binary file modified docs/.doctrees/api/sdk/video.doctree
Binary file not shown.
Binary file modified docs/.doctrees/environment.pickle
Binary file not shown.
Binary file modified docs/.doctrees/index.doctree
Binary file not shown.
Binary file modified docs/.doctrees/other/getting_started.doctree
Binary file not shown.
Binary file modified docs/.doctrees/other/run_time_deps.doctree
Binary file not shown.
Binary file modified docs/.doctrees/other/supported_platforms.doctree
Binary file not shown.
11 changes: 4 additions & 7 deletions docs/_sources/api/coresdk.rst.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
.. _coresdk_api:

CoreSDK API
___________
The main part of the Dolby.io Communications C++ SDK is the Core SDK that is responsible for communicating with the Dolby.io backend and providing conferencing functionalities, such as
Core API
--------
The main part of the Dolby.io Communications C++ SDK, refered to as Core API, is responsible for communicating with the Dolby.io backend and providing conferencing functionalities, such as
creating sessions, joining conferences, receiving Websocket events, sending/receiving messages, receiving WebRTC media streams, managing audio devices and leaving conferences.
The SDK also provides the ability to configure the default Audio/Video recorder to handle and store the incoming media streams in desired formats.
The SDK provides the ability to create a default Audio/Video injector to which the application can provide raw media frames that will
then be injected into the conference. The SDK also provides the ability to set spatial locations of participants' audio and participate in a shared spatial scene within a conference.
The :ref:`api_sdk`, :ref:`api_session`, :ref:`api_conference`, :ref:`api_device_management`, :ref:`api_audio_service`, :ref:`api_video_service`, :ref:`api_recorder`, :ref:`default_injector`
sections are the core of the user interface to the CoreSDK.
The :ref:`api_sdk`, :ref:`api_session`, :ref:`api_conference`, :ref:`api_device_management`, :ref:`api_audio_service`, :ref:`api_video_service` sections are the core of the user interface to the CoreSDK.

.. toctree::
:maxdepth: 2
Expand All @@ -21,8 +20,6 @@ sections are the core of the user interface to the CoreSDK.
sdk/audio.rst
sdk/video.rst
sdk/device_management.rst
sdk/recorder.rst
sdk/injector.rst
sdk/common/async_ops.rst
sdk/common/log_level.rst
sdk/common/exception.rst
Expand Down
7 changes: 4 additions & 3 deletions docs/_sources/api/injection/audio.rst.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
.. _api_inject_audio:

Audio Source Interface
========================
Audio
=====
#include <dolbyio/comms/media/media_engine.h>

The interface through which raw audio frames are provided to the CoreSDK. This audio source must provide signed 16 bit PCM data in 10ms chunks at 10ms intervals. Application writers who want to
implement this source must override the two virtual functions of :cpp:func:`registering <dolbyio::comms::audio_source::register_audio_frame_rtc_source>` and
:cpp:func:`deregistering <dolbyio::comms::audio_source::deregister_audio_frame_rtc_source>` the RTC Audio Source on the Injector. Attaching the RTC Audio source to the injector establishes the audio
pipeline so that frames can be passed to the CoreSDK.
pipeline so that frames can be passed to the CoreSDK. The :cpp:class:`Audio Source <dolbyio::comms::audio_source>` must be provided to the SDK using the :cpp:func:`Set Audio Source <dolbyio::comms::services::media_io::set_audio_source>` method and this
must be done before starting a Conference.

.. doxygenclass:: dolbyio::comms::audio_source
:project: C++ SDK
Expand Down
2 changes: 1 addition & 1 deletion docs/_sources/api/injection/example.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pipeline.

The interfaces inherited by this custom_injector example must be implemented by any custom injector intended to inject video and audio frames to a conference.

If you want to use a custom injector module instead of the default injector module, you can replace the CMakeLists.txt in the :ref:`getting_started_server` section with the sample below.
If you want to use a custom injector module instead of the default injector module, you can replace the CMakeLists.txt in the :ref:`getting_started_sample` section with the sample below.
The paths in this CMakeLists.txt are assuming that the file is located in the same place as in the Writing Application portion of the Getting Started.

custom_injector.h
Expand Down
22 changes: 4 additions & 18 deletions docs/_sources/api/injection/video.rst.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,8 @@
.. _api_inject_video:

Video Source Interface
========================
#include <dolbyio/comms/media/media_engine.h>

The interface through which raw video frames are provided to the CoreSDK. Application writers who want to implement this source must override the two virtual functions of :cpp:func:`registering <dolbyio::comms::video_source::register_video_frame_rtc_source>` and cpp:func:`deregistering <dolbyio::comms::video_source::deregister_video_frame_rtc_source>` the RTC Video Source on the Injector. When a
VideoTrack is successfully added to an active PeerConnection, these virtual functions are invoked to provide/remove the reference to the RTC Video Source. Attaching the RTC Video source to the
injector establishes the video pipeline so that frames can be passed to Webrtc.

.. doxygenclass:: dolbyio::comms::video_source
:project: C++ SDK


The RTC Video Source is NOT to be implemented by the application. This is the interface through which the injector can view its own Video Sink. After receiving video frames from some media source, the
injector provides the raw video frames to this RTC Video Source. The RTC Video Source then pushes the frame buffers along the video pipeline until they are injected into the conference. The
raw video frame is deleted once it has been encoded. The RTC Video Source expects :cpp:class:`video frames <dolbyio::comms::video_frame>`.

.. doxygenclass:: dolbyio::comms::rtc_video_source
:project: C++ SDK
Video
=====
For details about Video Injection please refer to :ref:`vid_frame_handle`. The application must create a :cpp:class:`Video Source <dolbyio::comms::video_source>` and then provide it to the SDK using the
:cpp:func:`Local Video Service Start <dolbyio::comms::services::local_video::start>` method.

See :ref:`injection_example` for an example of child injection class for all possible media.
45 changes: 45 additions & 0 deletions docs/_sources/api/media_io.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
.. _media_io_api:

Media IO API
======================
The Media IO feature allows for :ref:`injecting <api_injection>` video and audio streams into a conference as well as :ref:`recording <api_recording>` the remote participants' streams.

The basic usage of the Session Service consists of the following steps:
1) Access the service after :cpp:func:`creating <dolbyio::comms::sdk::create>` and instance of the SDK through the :cpp:func:`sdk::media_io <dolbyio::comms::sdk::media_io>` method.
2) Set an :cpp:func:`Audio Sink <dolbyio::comms::services::media_io::set_audio_sink>`.
3) Set an :cpp:func:`Audio Source <dolbyio::comms::services::media_io::set_audio_source>`.
4) Set an :cpp:func:`Encoded Video Sink <dolbyio::comms::services::media_io::set_encoded_video_sink>`.

.. doxygenclass:: dolbyio::comms::services::media_io

.. _api_injection:

Injection
_________
.. toctree::
:maxdepth: 2
:titlesonly:
:glob:

injection/audio.rst
injection/video.rst
injection/example.rst

.. _api_recording:

Recording
_________
.. toctree::
:maxdepth: 2
:titlesonly:
:glob:

recording/raw_video.rst
recording/encoded_video.rst
recording/audio.rst
recording/events.rst
recording/example.rst

.. note::
The Core SDK API provides methods that are asynchronous in nature and return :ref:`async_result <api_async_result>`. This means that if
the result or the completion of the operation is necessary for subsequent calls, you have to be careful.
19 changes: 19 additions & 0 deletions docs/_sources/api/plugins.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.. _plugins_api:

Plugins
=======
The Plugins are provided as part of the **dolbyio_multimedia_streaming_addon** library. Applications that would like to use our Default Injector/Recorder modules should link against this library.

To record conferences, the C++ SDK uses a Media Recorder that allows processing and storing video frames from the incoming WebRTC media streams. The library provides a default media recorder plugin. The default media recorder plugin is
a ready-to-use library that can be easily configured and included in an application. The plugin automatically records the incoming media streams for conference participants and stores the recorded streams in either raw or encoded format.

The library also provides two flavors of Media Injectors as plugins. One of the default plugins is the Pacing Injector. The injector exposes an interface for an application and allows passing decoded audio and video. Then, the injector provides these frames to WebRTC at specified intervals. This version of the plugin is suitable for injecting media files. The second default injection plugin is the Passthrough Injector, which exposes the application the same interface
for injecting frames, but this plugin directly relays the frames it receives to WebRTC without any internal pacing. The media injection plugins do not provide capturing of audio or video; instead, they serve in constructing the respective media injection pipelines. The application is responsible for performing the audio and video capture and providing the decoded frames to the injector plugin.

.. toctree::
:maxdepth: 2
:titlesonly:
:glob:

sdk/recorder.rst
sdk/injector.rst
8 changes: 4 additions & 4 deletions docs/_sources/api/recording/audio.rst.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
.. _api_record_audio:

Audio Sink Interface
========================
#include <dolbyio/comms/media/media_engine.h>
Audio
======
#include <dolbyio/comms/media_engine/media_engine.h>

The interface for handling incoming audio frames. Applications must set listener which override the virtual function. The
:cpp:func:`handle_audio <dolbyio::comms::audio_sink::handle_audio>` function is called with the decoded PCM audio data. When inside a conference the
C++ SDK will receive a single audio stream which contains the mixed audio of all unmuted participants within that conference.
C++ SDK will receive a single audio stream which contains the mixed audio of all unmuted participants within that conference. The :cpp:class:`Audio Sink <dolbyio::comms::audio_sink>` must be provided to the SDK using the :cpp:func:`Set Audio Sink <dolbyio::comms::services::media_io::set_audio_sink>` function and this must be done before starting a conference.

.. doxygenclass:: dolbyio::comms::audio_sink
:project: C++ SDK
Expand Down
12 changes: 8 additions & 4 deletions docs/_sources/api/recording/encoded_video.rst.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
.. _api_record_encoded:

Encoded Video Sink Interface
============================
#include <dolbyio/comms/media/media_engine.h>
Encoded Video
=============
#include <dolbyio/comms/media_engine/media_engine.h>

The interface for handling encoded video frames. Application must set listeners which override both of the virtual functions. The
:cpp:func:`handle_frame_encoded <dolbyio::comms::video_sink_encoded::handle_frame_encoded>` function is called after the RTP data is depacktized and an encoded frame
is constructed. This function will be executed on the Webrtc DecodingQueue thread created for the track to which the encoded frames belong.
is constructed. This function will be executed on the Webrtc DecodingQueue thread created for the track to which the encoded frames belong. The Encoded Video Sink must be provided to the SDK using the
:cpp:func:`Set Encoded Sink <dolbyio::comms::services::media_io::set_encoded_sink>` function.

.. doxygenclass:: dolbyio::comms::video_sink_encoded
:project: C++ SDK

.. doxygenclass:: dolbyio::comms::encoded_video_frame
:project: C++ SDK

See :ref:`recording_example` for a template for child recording class for all possible media.
4 changes: 2 additions & 2 deletions docs/_sources/api/recording/example.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
Example Recorder Implementation
===============================
Below are the header and cpp files for a Media Recorder Implementation, in order for this recorder to be used by the C++ SDK it must be passed to the conference service as
using the :cpp:func:`dolbyio::comms::services::conference::set_media_sink` method. Now when a conference is joined all incoming media will be passed to the recorder implementation.
using the :cpp:class:`dolbyio::comms::services::media_io`. Now when a conference is joined all incoming media will be passed to the recorder implementation.

The recorder should be configured appropriately to be used for handling encoded or raw video and PCM/AAC audio. The application should set this configuration before passing the recorder implementation
to the conference service.

The interfaces inheritted from by this custom_recorder example must be implemented by any custom recorder which wishes to receive video and audio frames.

At the bottom of the page there is sample CMakeLists.txt which can replace the one shown in the :ref:`getting_started_server` section if you want to use a custom recording module instead of our default one.
At the bottom of the page there is sample CMakeLists.txt which can replace the one shown in the :ref:`getting_started_sample` section if you want to use a custom recording module instead of our default one.
This paths in this CMakeLists.txt are assuming that the file is located in the same place as in the Writing Application portion of Getting Started.

custom_recorder.h
Expand Down
17 changes: 4 additions & 13 deletions docs/_sources/api/recording/raw_video.rst.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
.. _api_record_raw:

Raw Video Sink Interface
========================
#include <dolbyio/comms/media/media_engine.h>
Raw Video
=========
#include <dolbyio/comms/media_engine/media_engine.h>

The interface for handling decoded video frames. Application must set listener which overrides the virtual function. The
:cpp:func:`handle_frame <dolbyio::comms::video_sink_yuv::handle_frame>` function is called after the Webrtc Decoder has decoded the frame and will provide the
decoded data wrapped in the :cpp:class:`frame <dolbyio::comms::frame>` object. The frame class wraps the decoded video frame and essentailly just provides interface
to extract the underlying YUV data.

.. doxygenclass:: dolbyio::comms::video_sink_yuv
:project: C++ SDK

.. doxygenclass:: dolbyio::comms::video_frame
:project: C++ SDK
For details about Raw Video Recording an application must implement a :cpp:class:`Video Sink <dolbyio::comms::video_sink>` to receive the frames and provide this Video Sink to the SDK using the :cpp:class:`Remote Video Service <dolbyio::comms::services::remote_video>`.

See :ref:`recording_example` for a template for child recording class for all possible media.
3 changes: 2 additions & 1 deletion docs/_sources/api/sdk/audio.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

Audio Service
==============

.. note::
The Audio Service is available in SDK versions 2.1.0 and later. Prior to 2.1.0 the methods were part of the :cpp:func:`Conference Service<dolbyio::comms::services::conference::start_audio>`.
The Audio Service is considered to be in Beta phase on Linux systems.

The Audio Service allows enabling and disabling audio for the local and remote participants, as well as configuring audio capture modes.

Expand Down
17 changes: 4 additions & 13 deletions docs/_sources/api/sdk/conference.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,11 @@ The Conference Service allows the application to manage the conference life-cycl

The basic usage of the Conference Service is as follows:
1) Log in to :ref:`sess_serv`.
2) Create the media recording module instance. If you want to use the Default Recorder, use the :ref:`recorder` API, specifically the
:cpp:func:`recorder::create <dolbyio::comms::plugin::recorder::create>` method.
3) Provide the output directory location for the recorder module.
4) Set the media recording module as the Media Sink for the Conference Service. This allows passing the service a pointer to the created recorder instance. After this step, the recorder module should be set with the :cpp:func:`conference::set_media_sink <dolbyio::comms::services::conference::set_media_sink>`.
5) Create the Media Injector Module instance using the Default Injector provided through the :ref:`default_injector` API. Specifically the :cpp:class:`injector_paced <dolbyio::comms::plugin::injector_paced>` or the :cpp:class:`injector_passthrough <dolbyio::comms::plugin::injector_passthrough>` constructors.
6) Create a Media Injection Source that adds the ability to provide raw frames to the Media Injector Module. This can be an application which reads from a file, gets remote stream, and provides the media frames to the injector. This Media Injection Source should be passed as a reference to the Media Injector Module on creation.
7) Set the Injector Module instance as the Media Source for the Conference Service via the :cpp:func:`conference::set_media_source <dolbyio::comms::services::conference::set_media_source>` method.
8) Subscribe to any of the available :ref:`conf_events` using the :cpp:func:`conference::add_event_handler <dolbyio::comms::services::conference::add_event_handler>` method.
9) Create a conference using a conference alias :cpp:func:`conference::create <dolbyio::comms::services::conference::create>`. You can omit this step if you want to join an existing conference.
10) Join a conference using the :cpp:func:`conference::join <dolbyio::comms::services::conference::join>` or :cpp:func:`conference::listen <dolbyio::comms::services::conference::listen>` method. This method returns the conference_info structure (see :ref:`conf_models`) describing the conference. In the case of failure, you will receive an exception returned in the async_result.
11) To leave the conference, call the :cpp:func:`conference::leave <dolbyio::comms::services::conference::leave>` method.
2) Subscribe to any of the available :ref:`conf_events` using the :cpp:func:`conference::add_event_handler <dolbyio::comms::services::conference::add_event_handler>` method.
3) Create a conference using a conference alias :cpp:func:`conference::create <dolbyio::comms::services::conference::create>`. You can omit this step if you want to join an existing conference.
4) Join a conference using the :cpp:func:`conference::join <dolbyio::comms::services::conference::join>` or :cpp:func:`conference::listen <dolbyio::comms::services::conference::listen>` method. This method returns the conference_info structure (see :ref:`conf_models`) describing the conference. In the case of failure, you will receive an exception returned in the async_result.
5) To leave the conference, call the :cpp:func:`conference::leave <dolbyio::comms::services::conference::leave>` method.

By default, Dolby Voice Conference Server audio processing is disabled. You can enable the processing by setting the audio_processing flag to true in :cpp:struct:`dolbyio::comms::services::conference::media_constraints`.

.. _conf_serv:

Conference Interface
Expand Down
9 changes: 3 additions & 6 deletions docs/_sources/api/sdk/device_management.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
Device Management Service
==========================

.. note::
The Device Management Service is intended for Client Applications.

Once the SDK is instantiated, applications have access to the device management service. Currently, this allows managing audio input and output devices. This service provides the ability to:

- Get the available audio devices
Expand All @@ -26,13 +23,13 @@ Device Events
The :ref:`api_device_management` events that are emitted by the SDK. They can be subscribed to using the
:cpp:func:`device_management::add_event_handler <dolbyio::comms::services::device_management::add_event_handler>` methods.

.. doxygenstruct:: dolbyio::comms::device_added
.. doxygenstruct:: dolbyio::comms::audio_device_added
:project: C++ SDK

.. doxygenstruct:: dolbyio::comms::device_removed
.. doxygenstruct:: dolbyio::comms::audio_device_removed
:project: C++ SDK

.. doxygenstruct:: dolbyio::comms::device_changed
.. doxygenstruct:: dolbyio::comms::audio_device_changed
:project: C++ SDK


Expand Down
Loading

0 comments on commit dd1ba72

Please sign in to comment.