NvNmos
Classes | Macros | Typedefs | Enumerations | Functions
Networked Media Open Specifications (NMOS) API

Classes

struct  _NvNmosNodeConfig
 
struct  _NvNmosAssetConfig
 
struct  _NvNmosReceiverConfig
 
struct  _NvNmosSenderConfig
 
struct  _NvNmosNodeServer
 

Typedefs

typedef struct _NvNmosNodeServer NvNmosNodeServer
 
typedef bool(* nmos_connection_rtp_activation_callback) (NvNmosNodeServer *server, const char *id, const char *sdp)
 
typedef void(* nmos_logging_callback) (NvNmosNodeServer *server, const char *categories, int level, const char *message)
 
typedef struct _NvNmosAssetConfig NvNmosAssetConfig
 
typedef struct _NvNmosReceiverConfig NvNmosReceiverConfig
 
typedef struct _NvNmosSenderConfig NvNmosSenderConfig
 
typedef struct _NvNmosNodeConfig NvNmosNodeConfig
 

Enumerations

enum  {
  NVNMOS_LOG_DEVEL = -40 , NVNMOS_LOG_VERBOSE = -10 , NVNMOS_LOG_INFO = 0 , NVNMOS_LOG_WARNING = 10 ,
  NVNMOS_LOG_ERROR = 20 , NVNMOS_LOG_SEVERE = 30 , NVNMOS_LOG_FATAL = 40
}
 

Functions

NVNMOS_API bool create_nmos_node_server (const NvNmosNodeConfig *config, NvNmosNodeServer *server)
 
NVNMOS_API bool destroy_nmos_node_server (NvNmosNodeServer *server)
 
NVNMOS_API bool add_nmos_receiver_to_node_server (NvNmosNodeServer *server, const NvNmosReceiverConfig *config)
 
NVNMOS_API bool remove_nmos_receiver_from_node_server (NvNmosNodeServer *server, const char *id)
 
NVNMOS_API bool add_nmos_sender_to_node_server (NvNmosNodeServer *server, const NvNmosSenderConfig *config)
 
NVNMOS_API bool remove_nmos_sender_from_node_server (NvNmosNodeServer *server, const char *id)
 
NVNMOS_API bool nmos_connection_rtp_activate (NvNmosNodeServer *server, const char *id, const char *sdp)
 

Detailed Description

Defines the NVIDIA NMOS utility library (NvNmos) API.

The NvNmos utility library provides the APIs to create, destroy and internally manage an NMOS Node for a Media Node application.

The library can automatically discover and register with an NMOS Registry on the network using the AMWA IS-04 Registration API.

The library provides callbacks for NMOS events such as AMWA IS-05 Connection API requests from an NMOS Controller. These callbacks can be used to update running DeepStream pipelines with new transport parameters, for example.

NvNmos currently supports Senders and Receivers for uncompressed Video and Audio, i.e., SMPTE ST 2110-20 and SMPTE ST 2110-30 streams.

The NvNmos library supports the following specifications, using the Sony nmos-cpp implementation:

Typedef Documentation

◆ nmos_connection_rtp_activation_callback

typedef bool(* nmos_connection_rtp_activation_callback) (NvNmosNodeServer *server, const char *id, const char *sdp)

Type for a callback from NvNmos library when an IS-05 Connection API activation occurs.

Parameters
[in]serverA pointer to the server issuing the callback.
[in]idThe unique identifier for the sender or receiver to be activated or deactivated.
[in]sdpThe updated Session Description Protocol data for the sender or receiver, or a null pointer when the sender or receiver is being deactivated. The new data only updates the transport parameters of the sender or receiver, not the media format. The 'inactive' media-level attribute is used to indicate a disabled leg. The 'x-nvnmos-id' session-level attribute specifies the unique identifier for the sender or receiver, id. For a receiver, the 'x-nvnmos-iface-ip' media-level attribute is used to specify the interface IP address on which the stream is received. For a sender, the 'x-nvnmos-src-port' media-level attribute is used to specify the source port from which the stream is transmitted.
Returns
Whether the activation could be applied.

◆ nmos_logging_callback

typedef void(* nmos_logging_callback) (NvNmosNodeServer *server, const char *categories, int level, const char *message)

Type for a callback from NvNmos library for log messages.

Parameters
[in]serverA pointer to the server issuing the callback.
[in]categoriesA comma separated list of topics, indicating e.g. the submodule originating the log message.
[in]levelThe severity/verbosity level. Values greater than zero are warnings and errors. Values less than zero are debugging or trace messages.
[in]messageThe message itself.

◆ NvNmosAssetConfig

Defines asset distinguishing information for BCP-002-02 tags in an NvNmosNodeServer.

◆ NvNmosNodeConfig

Defines configuration settings used to create an NvNmosNodeServer. The structure should be zero initialized.

◆ NvNmosNodeServer

Holds the implementation details of a running NvNmos server. The structure should be zero initialized, with the possible exception of the user_data member.

◆ NvNmosReceiverConfig

Defines configuration settings used to create receivers in an NvNmosNodeServer.

◆ NvNmosSenderConfig

Defines configuration settings used to create senders in an NvNmosNodeServer.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Defines some common severity/logging levels for log messages from the NvNmos library.

Enumerator
NVNMOS_LOG_DEVEL 

Low level debugging information.

NVNMOS_LOG_VERBOSE 

Chatty messages such as detailed API request/response tracking.

NVNMOS_LOG_INFO 

Higher level information about expected API events.

NVNMOS_LOG_WARNING 

Minor problems that could be recovered automatically by the library.

NVNMOS_LOG_ERROR 

More serious recoverable errors such as rejected requests.

NVNMOS_LOG_SEVERE 

Errors which are unlikely to be recoverable without restarting the server.

NVNMOS_LOG_FATAL 

Errors which are likely to cause the server to immediately terminate.

Function Documentation

◆ add_nmos_receiver_to_node_server()

NVNMOS_API bool add_nmos_receiver_to_node_server ( NvNmosNodeServer server,
const NvNmosReceiverConfig config 
)

Add an NMOS Receiver to an NMOS Node server according to the specified configuration settings.

The receiver may be removed using remove_nmos_receiver_from_node_server.

Parameters
[in]serverPointer to the server to update.
[in]configPointer to the configuration settings.
Returns
Whether the receiver has been successfully added.

◆ add_nmos_sender_to_node_server()

NVNMOS_API bool add_nmos_sender_to_node_server ( NvNmosNodeServer server,
const NvNmosSenderConfig config 
)

Add an NMOS Sender to an NMOS Node server according to the specified configuration settings.

The sender may be removed using remove_nmos_sender_from_node_server.

Parameters
[in]serverPointer to the server to update.
[in]configPointer to the configuration settings.
Returns
Whether the sender has been successfully added.

◆ create_nmos_node_server()

NVNMOS_API bool create_nmos_node_server ( const NvNmosNodeConfig config,
NvNmosNodeServer server 
)

Initialize and start an NMOS Node server according to the specified configuration settings.

The server should be deinitialized using destroy_nmos_node_server.

Parameters
[in]configPointer to the configuration settings.
[in]serverPointer to the server to be initialized.
Returns
Whether the server has been created and successfully started.

◆ destroy_nmos_node_server()

NVNMOS_API bool destroy_nmos_node_server ( NvNmosNodeServer server)

Stop and deinitialize an NMOS Node server.

The server should have been successfully initialized using create_nmos_node_server.

Parameters
[in]serverPointer to the server to be deinitialized.
Returns
Whether the server has been successfully stopped and deinitialized.

◆ nmos_connection_rtp_activate()

NVNMOS_API bool nmos_connection_rtp_activate ( NvNmosNodeServer server,
const char *  id,
const char *  sdp 
)

Update the configuration settings of a sender or receiver.

Parameters
[in]serverA pointer to the server to be updated.
[in]idThe unique identifier for the sender or receiver to be activated or deactivated.
[in]sdpThe updated Session Description Protocol data for the sender or receiver, or a null pointer when the sender or receiver is being deactivated. The new data only updates the transport parameters of the sender or receiver, not the media format. The 'inactive' media-level attribute is used to indicate a disabled leg. For a sender, the 'ts-refclk' attributes are used to specify the node clock. The 'x-nvnmos-id' session-level attribute specifies the unique identifier for the sender or receiver, id. For a receiver, the 'x-nvnmos-iface-ip' media-level attribute is used to specify the interface IP address on which the stream is received. For a sender, the 'x-nvnmos-src-port' media-level attribute is used to specify the source port from which the stream is transmitted.
Returns
Whether the update has been successfully applied.

◆ remove_nmos_receiver_from_node_server()

NVNMOS_API bool remove_nmos_receiver_from_node_server ( NvNmosNodeServer server,
const char *  id 
)

Remove an NMOS Receiver from an NMOS Node server.

The receiver may have been adding using create_nmos_node_server or add_nmos_receiver_to_node_server.

Parameters
[in]serverPointer to the server to update.
[in]idThe unique identifier for the receiver to be removed.
Returns
Whether the receiver has been successfully removed.

◆ remove_nmos_sender_from_node_server()

NVNMOS_API bool remove_nmos_sender_from_node_server ( NvNmosNodeServer server,
const char *  id 
)

Remove an NMOS Sender from an NMOS Node server.

The sender may have been adding using create_nmos_node_server or add_nmos_sender_to_node_server.

Parameters
[in]serverPointer to the server to update.
[in]idThe unique identifier for the sender to be removed.
Returns
Whether the receiver has been successfully removed.