NvNmos
Loading...
Searching...
No Matches
nvnmos.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3 * SPDX-License-Identifier: Apache-2.0
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
65#ifndef NVNMOS_H
66#define NVNMOS_H
67
74#if defined(NVNMOS_EXPORTS)
75
76#if defined(_WIN32) || defined(__CYGWIN__)
77#define NVNMOS_API __declspec(dllexport)
78#elif defined(__GNUC__) && (__GNUC__ >= 4)
79#define NVNMOS_API __attribute__ ((visibility("default")))
80#else
81#define NVNMOS_API
82#endif
83
84#elif defined(NVNMOS_STATIC)
85
86#define NVNMOS_API
87
88#else
89
90#if defined(_WIN32) || defined(__CYGWIN__)
91#define NVNMOS_API __declspec(dllimport)
92#elif defined(__GNUC__) && (__GNUC__ >= 4)
93#define NVNMOS_API
94#else
95#define NVNMOS_API
96#endif
97
98#endif
99
100#include <stdbool.h>
101#include <stddef.h>
102
103#ifdef __cplusplus
104extern "C"
105{
106#endif
107
114#define NVNMOS_ID_LEN 37
115
117
135
151
174
225 NvNmosNodeServer *server,
226 NvNmosSide side,
227 const char *name,
228 const char *transport_file);
229
231
256 NvNmosNodeServer *server,
257 const char *name,
258 const char *output_id,
259 const NvNmosChannelMappingActiveMapEntry *active_map,
260 size_t num_active_map);
261
266typedef struct _NvNmosTag
267{
269 const char *key;
274 const char **values;
276 unsigned int num_values;
278
289typedef struct _NvNmosAnnotation
290{
292 const char *label;
294 const char *description;
300 unsigned int num_tags;
302
341 NvNmosNodeServer *server,
343 const char *name,
344 const NvNmosAnnotation *annotation,
345 bool label_changed,
346 bool description_changed,
347 bool tags_changed);
348
353enum {
369
381typedef void (* nmos_logging_callback)(
382 NvNmosNodeServer *server,
383 const char *categories,
384 int level,
385 const char *message);
386
391
477
482typedef struct _NvNmosAssetConfig
483{
485 const char* manufacturer;
487 const char* product;
490 const char* instance_id;
493 const char** functions;
495 unsigned int num_functions;
497
555
615
621{
624 const char* domain;
625
633 unsigned int registration_port;
638
642 const char* system_address;
646 unsigned int system_port;
650 const char* system_version;
652
658typedef struct _NvNmosNodeServer
659{
669 void *impl;
671
684 const NvNmosNodeConfig *config,
685 NvNmosNodeServer *server);
686
698 NvNmosNodeServer *server);
699
712 NvNmosNodeServer *server,
713 const NvNmosReceiverConfig* config);
714
728 NvNmosNodeServer *server,
729 const char* receiver_name);
730
743 NvNmosNodeServer *server,
744 const NvNmosSenderConfig* config);
745
759 NvNmosNodeServer *server,
760 const char* sender_name);
761
798 NvNmosNodeServer *server,
799 NvNmosSide side,
800 const char *name,
801 const char *transport_file);
802
813
838
843{
845 const char *id;
847 const char *name;
849 const char *description;
851 const char **channel_labels;
855 const char *sender_name;
857 const char **routable_inputs;
861
874
889
906 NvNmosNodeServer *server,
907 const char *name,
908 const NvNmosChannelMappingConfig *mapping);
909
918 NvNmosNodeServer *server,
919 const char *name);
920
939 NvNmosNodeServer *server,
940 const char *name,
941 const char *output_id,
942 const NvNmosChannelMappingActiveMapEntry *active_map,
943 size_t num_active_map);
944
965 const char *seed,
966 char *out,
967 size_t out_len);
968
983 const char *seed,
984 char *out,
985 size_t out_len);
986
1005 const char *seed,
1006 const char *sender_name,
1007 char *out,
1008 size_t out_len);
1009
1028 const char *seed,
1029 const char *receiver_name,
1030 char *out,
1031 size_t out_len);
1032
1054 const char *seed,
1055 const char *sender_name,
1056 char *out,
1057 size_t out_len);
1058
1081 const char *seed,
1082 const char *sender_name,
1083 char *out,
1084 size_t out_len);
1085
1098 const NvNmosNodeServer *server,
1099 char *out,
1100 size_t out_len);
1101
1115 const NvNmosNodeServer *server,
1116 char *out,
1117 size_t out_len);
1118
1137 const NvNmosNodeServer *server,
1138 const char *sender_name,
1139 char *out,
1140 size_t out_len);
1141
1160 const NvNmosNodeServer *server,
1161 const char *receiver_name,
1162 char *out,
1163 size_t out_len);
1164
1187 const NvNmosNodeServer *server,
1188 const char *sender_name,
1189 char *out,
1190 size_t out_len);
1191
1215 const NvNmosNodeServer *server,
1216 const char *sender_name,
1217 char *out,
1218 size_t out_len);
1219
1239 const char *seed,
1240 NvNmosResourceType type,
1241 const char *name,
1242 char *out,
1243 size_t out_len);
1244
1254 const NvNmosNodeServer *server,
1255 NvNmosResourceType type,
1256 const char *name,
1257 char *out,
1258 size_t out_len);
1259
1260#ifdef __cplusplus
1261}
1262#endif
1263
1264#endif
1265
NVNMOS_API bool nmos_get_id(const NvNmosNodeServer *server, NvNmosResourceType type, const char *name, char *out, size_t out_len)
enum _NvNmosChannelMappingParentType NvNmosChannelMappingParentType
NVNMOS_API bool nmos_make_device_id(const char *seed, char *out, size_t out_len)
struct _NvNmosNetworkServicesConfig NvNmosNetworkServicesConfig
Definition nvnmos.h:390
NVNMOS_API bool nmos_get_node_id(const NvNmosNodeServer *server, char *out, size_t out_len)
NVNMOS_API bool nmos_get_source_id(const NvNmosNodeServer *server, const char *sender_name, char *out, size_t out_len)
NVNMOS_API bool nmos_connection_activate(NvNmosNodeServer *server, NvNmosSide side, const char *name, const char *transport_file)
NVNMOS_API bool nmos_make_node_id(const char *seed, char *out, size_t out_len)
bool(* nmos_annotation_callback)(NvNmosNodeServer *server, NvNmosResourceType type, const char *name, const NvNmosAnnotation *annotation, bool label_changed, bool description_changed, bool tags_changed)
Definition nvnmos.h:340
NVNMOS_API bool remove_nmos_receiver_from_node_server(NvNmosNodeServer *server, const char *receiver_name)
NVNMOS_API bool nmos_make_sender_id(const char *seed, const char *sender_name, char *out, size_t out_len)
_NvNmosResourceType
Definition nvnmos.h:160
NVNMOS_API bool nmos_make_receiver_id(const char *seed, const char *receiver_name, char *out, size_t out_len)
NVNMOS_API bool add_nmos_sender_to_node_server(NvNmosNodeServer *server, const NvNmosSenderConfig *config)
NVNMOS_API bool destroy_nmos_node_server(NvNmosNodeServer *server)
bool(* nmos_channelmapping_activation_callback)(NvNmosNodeServer *server, const char *name, const char *output_id, const NvNmosChannelMappingActiveMapEntry *active_map, size_t num_active_map)
Definition nvnmos.h:255
NVNMOS_API bool remove_nmos_sender_from_node_server(NvNmosNodeServer *server, const char *sender_name)
void(* nmos_logging_callback)(NvNmosNodeServer *server, const char *categories, int level, const char *message)
Definition nvnmos.h:381
bool(* nmos_connection_activation_callback)(NvNmosNodeServer *server, NvNmosSide side, const char *name, const char *transport_file)
Definition nvnmos.h:224
struct _NvNmosNodeServer NvNmosNodeServer
Definition nvnmos.h:116
NVNMOS_API bool nmos_get_flow_id(const NvNmosNodeServer *server, const char *sender_name, char *out, size_t out_len)
NVNMOS_API bool nmos_make_source_id(const char *seed, const char *sender_name, char *out, size_t out_len)
NVNMOS_API bool nmos_get_device_id(const NvNmosNodeServer *server, char *out, size_t out_len)
NVNMOS_API bool create_nmos_node_server(const NvNmosNodeConfig *config, NvNmosNodeServer *server)
struct _NvNmosNodeConfig NvNmosNodeConfig
#define NVNMOS_API
Definition nvnmos.h:95
struct _NvNmosChannelMappingOutput NvNmosChannelMappingOutput
struct _NvNmosReceiverConfig NvNmosReceiverConfig
Definition nvnmos.h:388
enum _NvNmosResourceType NvNmosResourceType
NVNMOS_API bool nmos_get_sender_id(const NvNmosNodeServer *server, const char *sender_name, char *out, size_t out_len)
NVNMOS_API bool nmos_channelmapping_activate(NvNmosNodeServer *server, const char *name, const char *output_id, const NvNmosChannelMappingActiveMapEntry *active_map, size_t num_active_map)
NVNMOS_API bool add_nmos_receiver_to_node_server(NvNmosNodeServer *server, const NvNmosReceiverConfig *config)
struct _NvNmosChannelMappingConfig NvNmosChannelMappingConfig
enum _NvNmosTransport NvNmosTransport
NVNMOS_API bool nmos_make_id(const char *seed, NvNmosResourceType type, const char *name, char *out, size_t out_len)
_NvNmosTransport
Definition nvnmos.h:125
struct _NvNmosAssetConfig NvNmosAssetConfig
Definition nvnmos.h:387
struct _NvNmosTag NvNmosTag
struct _NvNmosSenderConfig NvNmosSenderConfig
Definition nvnmos.h:389
_NvNmosSide
Definition nvnmos.h:145
struct _NvNmosChannelMappingInput NvNmosChannelMappingInput
NVNMOS_API bool add_nmos_channelmapping_to_node_server(NvNmosNodeServer *server, const char *name, const NvNmosChannelMappingConfig *mapping)
NVNMOS_API bool nmos_get_receiver_id(const NvNmosNodeServer *server, const char *receiver_name, char *out, size_t out_len)
enum _NvNmosSide NvNmosSide
_NvNmosChannelMappingParentType
Definition nvnmos.h:807
struct _NvNmosChannelMappingActiveMapEntry NvNmosChannelMappingActiveMapEntry
Definition nvnmos.h:230
NVNMOS_API bool nmos_make_flow_id(const char *seed, const char *sender_name, char *out, size_t out_len)
struct _NvNmosAnnotation NvNmosAnnotation
NVNMOS_API bool remove_nmos_channelmapping_from_node_server(NvNmosNodeServer *server, const char *name)
@ NVNMOS_LOG_SEVERE
Definition nvnmos.h:365
@ NVNMOS_LOG_DEVEL
Definition nvnmos.h:355
@ NVNMOS_LOG_WARNING
Definition nvnmos.h:361
@ NVNMOS_LOG_ERROR
Definition nvnmos.h:363
@ NVNMOS_LOG_VERBOSE
Definition nvnmos.h:357
@ NVNMOS_LOG_FATAL
Definition nvnmos.h:367
@ NVNMOS_LOG_INFO
Definition nvnmos.h:359
@ NVNMOS_RESOURCE_FLOW
Definition nvnmos.h:168
@ NVNMOS_RESOURCE_RECEIVER
Definition nvnmos.h:172
@ NVNMOS_RESOURCE_SOURCE
Definition nvnmos.h:166
@ NVNMOS_RESOURCE_SENDER
Definition nvnmos.h:170
@ NVNMOS_RESOURCE_DEVICE
Definition nvnmos.h:164
@ NVNMOS_RESOURCE_NODE
Definition nvnmos.h:162
@ NVNMOS_TRANSPORT_RTP
Definition nvnmos.h:129
@ NVNMOS_TRANSPORT_MXL
Definition nvnmos.h:133
@ NVNMOS_SIDE_RECEIVER
Definition nvnmos.h:149
@ NVNMOS_SIDE_SENDER
Definition nvnmos.h:147
@ NVNMOS_CHANNELMAPPING_PARENT_TYPE_RECEIVER
Definition nvnmos.h:809
@ NVNMOS_CHANNELMAPPING_PARENT_TYPE_SOURCE
Definition nvnmos.h:811
Definition nvnmos.h:290
unsigned int num_tags
Definition nvnmos.h:300
const NvNmosTag * tags
Definition nvnmos.h:298
const char * description
Definition nvnmos.h:294
const char * label
Definition nvnmos.h:292
Definition nvnmos.h:483
const char * manufacturer
Definition nvnmos.h:485
const char * instance_id
Definition nvnmos.h:490
const char * product
Definition nvnmos.h:487
unsigned int num_functions
Definition nvnmos.h:495
const char ** functions
Definition nvnmos.h:493
unsigned int input_channel
Definition nvnmos.h:872
const char * input_id
Definition nvnmos.h:870
Definition nvnmos.h:879
const NvNmosChannelMappingOutput * outputs
Definition nvnmos.h:885
const NvNmosChannelMappingInput * inputs
Definition nvnmos.h:881
size_t num_outputs
Definition nvnmos.h:887
size_t num_inputs
Definition nvnmos.h:883
Definition nvnmos.h:818
size_t num_channel_labels
Definition nvnmos.h:828
const char * parent_name
Definition nvnmos.h:830
unsigned int block_size
Definition nvnmos.h:836
const char * id
Definition nvnmos.h:820
const char * description
Definition nvnmos.h:824
NvNmosChannelMappingParentType parent_type
Definition nvnmos.h:832
bool reordering
Definition nvnmos.h:834
const char ** channel_labels
Definition nvnmos.h:826
const char * name
Definition nvnmos.h:822
Definition nvnmos.h:843
const char * name
Definition nvnmos.h:847
const char * sender_name
Definition nvnmos.h:855
const char ** routable_inputs
Definition nvnmos.h:857
size_t num_channel_labels
Definition nvnmos.h:853
size_t num_routable_inputs
Definition nvnmos.h:859
const char * description
Definition nvnmos.h:849
const char ** channel_labels
Definition nvnmos.h:851
const char * id
Definition nvnmos.h:845
Definition nvnmos.h:621
const char * system_address
Definition nvnmos.h:642
unsigned int registration_port
Definition nvnmos.h:633
const char * domain
Definition nvnmos.h:624
const char * registration_version
Definition nvnmos.h:637
unsigned int system_port
Definition nvnmos.h:646
const char * registration_address
Definition nvnmos.h:629
const char * system_version
Definition nvnmos.h:650
Definition nvnmos.h:397
NvNmosSenderConfig * senders
Definition nvnmos.h:436
nmos_connection_activation_callback connection_activated
Definition nvnmos.h:442
int log_level
Definition nvnmos.h:461
unsigned int num_host_addresses
Definition nvnmos.h:408
const NvNmosAnnotation * node_annotation
Definition nvnmos.h:449
unsigned int http_port
Definition nvnmos.h:413
const char * seed
Definition nvnmos.h:427
const char ** host_addresses
Definition nvnmos.h:406
NvNmosReceiverConfig * receivers
Definition nvnmos.h:431
const char * description
Definition nvnmos.h:420
const char * label
Definition nvnmos.h:417
unsigned int num_senders
Definition nvnmos.h:438
const char * host_name
Definition nvnmos.h:401
const NvNmosAnnotation * device_annotation
Definition nvnmos.h:451
nmos_logging_callback log_callback
Definition nvnmos.h:458
unsigned int num_log_categories
Definition nvnmos.h:471
unsigned int num_receivers
Definition nvnmos.h:433
nmos_channelmapping_activation_callback channelmapping_activated
Definition nvnmos.h:446
nmos_annotation_callback annotation_changed
Definition nvnmos.h:455
const char ** log_categories
Definition nvnmos.h:469
NvNmosAssetConfig * asset_tags
Definition nvnmos.h:423
NvNmosNetworkServicesConfig * network_services
Definition nvnmos.h:475
Definition nvnmos.h:659
void * impl
Definition nvnmos.h:669
void * user_data
Definition nvnmos.h:665
Definition nvnmos.h:503
const NvNmosAnnotation * receiver_annotation
Definition nvnmos.h:553
NvNmosTransport transport
Definition nvnmos.h:507
const char * transport_file
Definition nvnmos.h:551
Definition nvnmos.h:561
const NvNmosAnnotation * flow_annotation
Definition nvnmos.h:611
const NvNmosAnnotation * source_annotation
Definition nvnmos.h:608
const char * transport_file
Definition nvnmos.h:605
NvNmosTransport transport
Definition nvnmos.h:565
const NvNmosAnnotation * sender_annotation
Definition nvnmos.h:613
Definition nvnmos.h:267
unsigned int num_values
Definition nvnmos.h:276
const char ** values
Definition nvnmos.h:274
const char * key
Definition nvnmos.h:269