Home

Awesome

An NMOS C++ Implementation Build Status

Introduction

This repository contains an implementation of the AMWA Networked Media Open Specifications in C++, licensed under the terms of the Apache License 2.0.

For more information about AMWA, NMOS and the Networked Media Incubator, please refer to http://amwa.tv/.

The repository structure, and the external dependencies, are outlined in the documentation. Some information about the overall design of nmos-cpp is also included in the architecture documentation.

Getting Started With NMOS

The Easy-NMOS starter kit allows the user to launch a simple NMOS setup with minimal installation steps. It relies on a containerized nmos-cpp build to provide an NMOS Registry and a virtual NMOS Node in a Docker Compose network, along with the AMWA NMOS Testing Tool and supporting services.

Alternatively, it is possible to install a pre-built package for many platforms. See the instructions for installing with Conan.

Getting Started For Developers

Easy-NMOS is also a great first way to explore the relationship between NMOS services before building nmos-cpp for yourself.

The codebase is intended to be portable, and the nmos-cpp CMake project can be built on at least Linux, Windows and macOS.

After setting up the dependencies, follow these instructions to build and install nmos-cpp on your platform, and run the test suite.

Next, try out the registry and node applications in the tutorial.

An nmos-cpp Conan package is occasionally published at Conan Center Index.

Agile Development

<img alt="JT-NM Tested 03/20 NMOS & TR-1001-1" src="Documents/images/jt-nm-tested-03-20-registry.png?raw=true" height="135" align="right"/>

The nmos-cpp applications, like the NMOS Specifications, are intended to be always ready, but steadily developing. They have been successfully tested in many AMWA Networked Media Incubator workshops, and are used as reference NMOS implementations in the JT-NM Tested programme. Several vendors have deployed JT-NM Tested badged products, using nmos-cpp, to their customers.

Build Status

The following configurations, defined by the build-test jobs, are built and unit tested automatically via continuous integration.

PlatformVersionBuild OptionsTest Options
LinuxUbuntu 22.04 (GCC 11.2.0)AvahiSecure Communications<br/>Multicast DNS-SD
LinuxUbuntu 22.04 (GCC 11.2.0)AvahiSecure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD
LinuxUbuntu 20.04 (GCC 9.4.0)AvahiSecure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD
LinuxUbuntu 20.04 (GCC 9.4.0)AvahiSecure Communications<br/>IS-10 Authorization<br/>Unicast DNS-SD
LinuxUbuntu 20.04 (GCC 9.4.0)mDNSResponderSecure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD
LinuxUbuntu 14.04 (GCC 4.8.4)mDNSResponder, not using ConanSecure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD
WindowsServer 2019 (VS 2019)Bonjour (mDNSResponder), WinHTTPSecure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD
WindowsServer 2022 (VS 2022)Bonjour (mDNSResponder), ASIOSecure Communications<br/>Multicast DNS-SD
WindowsServer 2022 (VS 2022)Bonjour (mDNSResponder), ASIOSecure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD
macOS11 (AppleClang 13.0)Bonjour (mDNSResponder)Secure Communications<br/>IS-10 Authorization<br/>Multicast DNS-SD

The AMWA NMOS API Testing Tool is automatically run against the APIs of the nmos-cpp-node and nmos-cpp-registry applications.

Test Suite/Status: BCP-003-01 IS-04-01 IS-04-02 IS-04-03 IS-05-01 IS-05-02 IS-07-01 IS-07-02 IS-08-01 IS-08-02 IS-09-01 IS-09-02

Recent Activity

The implementation is designed to be extended. Development is ongoing, following the evolution of the NMOS specifications in the AMWA Networked Media Incubator.

Recent activity on the project (newest first):

Contributing

We welcome bug reports, feature requests and contributions to the implementation and documentation. Please have a look at the simple Contribution Guidelines.

Thank you for your interest!

This project was formerly known as sea-lion.