DeepStream Reference Application - deepstream-nmos app
=======================================================
Application Architecture
---------------------------
The image below shows the architecture of the NVIDIA\ :sup:`®` DeepStream NMOS reference application.
.. image:: /content/DS_reference_nmos_app.png
:align: center
:alt: DeepStream NMOS Reference Application Architecture
This application demonstrates how to create any DeepStream app as an `NMOS `_ Node.
It uses a library (:doc:`NvDsNmos `) which provides the APIs to create, destroy and internally manage the NMOS Node.
The NMOS Node can automatically discover and register with an NMOS Registry on the network using the `AMWA IS-04 `_ Registration API.
It also shows how to create various Video and Audio pipelines, run them simultaneously and reconfigure them based on NMOS events such as `AMWA IS-05 `_ Connection API requests from an NMOS Controller.
This application has three modes of operations:
**As NMOS Receiver (Default)**
In this mode, application provides NMOS Receivers that can be used to configure UDP sources to receive SMPTE ST 2110-20/-30 streams. Received (Video / Audio) streams are rendered to local Video / Audio sinks after some processing (Object detection and Bounding box overlay in case of Video).
**As NMOS Sender**
In this mode, application provides NMOS Senders that can be used to configure UDP sinks to transmit SMPTE ST 2110-20/-30 streams. Transmitted streams are created from ``videotestsrc`` and ``audiotestsrc``.
**As Both NMOS Receiver and Sender**
In this mode, application provides NMOS Receivers to configure UDP sources and after processing the data transmits streams from UDP sinks which are configured by NMOS Senders.
Using Easy-NMOS for NMOS Registry and Controller
------------------------------------------------
This application requires AMWA IS-05 Connection API requests for its operation. These events are generated by an NMOS Controller. Easy-NMOS is a simple and easy way to set up an NMOS Controller and Registry. Follow the instructions below to set up the NMOS Registry and run the NMOS Controller.
.. Note::
These instructions expect that docker and docker compose are already installed. If not then refer steps provided here - https://docs.docker.com/engine/install/ and https://docs.docker.com/compose/install/.
Or follow the quick instructions here - https://github.com/rhastie/easy-nmos/blob/master/install_docker.md
1) Clone the git repository as follows: ::
git clone https://github.com/rhastie/easy-nmos.git
2) Modify the ``docker-compose.yml`` to replace the values of "ipv4_address" fields of each container accordingly.
3) Start the docker containers as follows: ::
docker-compose up
Once setup is complete, the NMOS Controller should be running on following address. ::
http://nmos-registry.local/admin
Refer to https://github.com/rhastie/easy-nmos for detailed instructions for setup.
Refer to https://www.amwa.tv/easy-nmos-videos for a tutorial on Easy-NMOS.
Refer to https://specs.amwa.tv/nmos/ for details about the NMOS specifications.