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
67#ifndef NVNMOS_H
68#define NVNMOS_H
69
86#define NVNMOS_VERSION_MAJOR 0
87#define NVNMOS_VERSION_MINOR 2
88#define NVNMOS_VERSION_PATCH 0
89#define NVNMOS_VERSION_PRERELEASE "alpha"
90#define NVNMOS_VERSION_STRING "0.2.0-alpha"
91
98#if defined(NVNMOS_EXPORTS)
99
100#if defined(_WIN32) || defined(__CYGWIN__)
101#define NVNMOS_API __declspec(dllexport)
102#elif defined(__GNUC__) && (__GNUC__ >= 4)
103#define NVNMOS_API __attribute__ ((visibility("default")))
104#else
105#define NVNMOS_API
106#endif
107
108#elif defined(NVNMOS_STATIC)
109
110#define NVNMOS_API
111
112#else
113
114#if defined(_WIN32) || defined(__CYGWIN__)
115#define NVNMOS_API __declspec(dllimport)
116#elif defined(__GNUC__) && (__GNUC__ >= 4)
117#define NVNMOS_API
118#else
119#define NVNMOS_API
120#endif
121
122#endif
123
124#include <stdbool.h>
125#include <stddef.h>
126
127#ifdef __cplusplus
128extern "C"
129{
130#endif
131
135typedef struct _NvNmosVersion
136{
138 unsigned int major;
140 unsigned int minor;
142 unsigned int patch;
145 const char *prerelease;
149 const char *string;
151
163 NvNmosVersion *version);
164
175static inline bool nmos_is_compatible_version(
176 const NvNmosVersion *version)
177{
178 return version->major == NVNMOS_VERSION_MAJOR
179 && (NVNMOS_VERSION_MAJOR == 0
180 ? version->minor == NVNMOS_VERSION_MINOR
181 : version->minor >= NVNMOS_VERSION_MINOR);
182}
183
190#define NVNMOS_ID_LEN 37
191
193
211
227
251
302 NvNmosNodeServer *server,
303 NvNmosSide side,
304 const char *name,
305 const char *transport_file);
306
308
333 NvNmosNodeServer *server,
334 const char *name,
335 const char *output_id,
336 const NvNmosChannelMappingActiveMapEntry *active_map,
337 size_t num_active_map);
338
356
361typedef struct _NvNmosTag
362{
364 const char *key;
379 const char **values;
381 unsigned int num_values;
383
444
464 NvNmosNodeServer *server,
466 const char *name,
467 const NvNmosAnnotation *annotation);
468
473enum {
489
501typedef void (* nmos_logging_callback)(
502 NvNmosNodeServer *server,
503 const char *categories,
504 int level,
505 const char *message);
506
511
598
603typedef struct _NvNmosAssetConfig
604{
606 const char* manufacturer;
608 const char* product;
611 const char* instance_id;
614 const char** functions;
616 unsigned int num_functions;
618
676
736
742{
745 const char* domain;
746
754 unsigned int registration_port;
759
763 const char* system_address;
767 unsigned int system_port;
771 const char* system_version;
773
779typedef struct _NvNmosNodeServer
780{
790 void *impl;
792
805 const NvNmosNodeConfig *config,
806 NvNmosNodeServer *server);
807
819 NvNmosNodeServer *server);
820
833 NvNmosNodeServer *server,
834 const NvNmosReceiverConfig* config);
835
849 NvNmosNodeServer *server,
850 const char* receiver_name);
851
864 NvNmosNodeServer *server,
865 const NvNmosSenderConfig* config);
866
880 NvNmosNodeServer *server,
881 const char* sender_name);
882
919 NvNmosNodeServer *server,
920 NvNmosSide side,
921 const char *name,
922 const char *transport_file);
923
952 NvNmosNodeServer *server,
954 const char *name,
955 const NvNmosAnnotation *annotation);
956
967
992
1015
1028
1043
1060 NvNmosNodeServer *server,
1061 const char *name,
1062 const NvNmosChannelMappingConfig *mapping);
1063
1072 NvNmosNodeServer *server,
1073 const char *name);
1074
1093 NvNmosNodeServer *server,
1094 const char *name,
1095 const char *output_id,
1096 const NvNmosChannelMappingActiveMapEntry *active_map,
1097 size_t num_active_map);
1098
1119 const char *seed,
1120 char *out,
1121 size_t out_len);
1122
1137 const char *seed,
1138 char *out,
1139 size_t out_len);
1140
1159 const char *seed,
1160 const char *sender_name,
1161 char *out,
1162 size_t out_len);
1163
1182 const char *seed,
1183 const char *receiver_name,
1184 char *out,
1185 size_t out_len);
1186
1208 const char *seed,
1209 const char *sender_name,
1210 char *out,
1211 size_t out_len);
1212
1235 const char *seed,
1236 const char *sender_name,
1237 char *out,
1238 size_t out_len);
1239
1252 const NvNmosNodeServer *server,
1253 char *out,
1254 size_t out_len);
1255
1269 const NvNmosNodeServer *server,
1270 char *out,
1271 size_t out_len);
1272
1291 const NvNmosNodeServer *server,
1292 const char *sender_name,
1293 char *out,
1294 size_t out_len);
1295
1314 const NvNmosNodeServer *server,
1315 const char *receiver_name,
1316 char *out,
1317 size_t out_len);
1318
1341 const NvNmosNodeServer *server,
1342 const char *sender_name,
1343 char *out,
1344 size_t out_len);
1345
1369 const NvNmosNodeServer *server,
1370 const char *sender_name,
1371 char *out,
1372 size_t out_len);
1373
1393 const char *seed,
1394 NvNmosResourceType type,
1395 const char *name,
1396 char *out,
1397 size_t out_len);
1398
1408 const NvNmosNodeServer *server,
1409 NvNmosResourceType type,
1410 const char *name,
1411 char *out,
1412 size_t out_len);
1413
1414#ifdef __cplusplus
1415}
1416#endif
1417
1418#endif
1419
NVNMOS_API bool nmos_get_id(const NvNmosNodeServer *server, NvNmosResourceType type, const char *name, char *out, size_t out_len)
enum _NvNmosChannelMappingParentType NvNmosChannelMappingParentType
#define NVNMOS_VERSION_MAJOR
Definition nvnmos.h:86
NVNMOS_API bool nmos_make_device_id(const char *seed, char *out, size_t out_len)
struct _NvNmosNetworkServicesConfig NvNmosNetworkServicesConfig
Definition nvnmos.h:510
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)
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:237
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:332
#define NVNMOS_VERSION_MINOR
Definition nvnmos.h:87
NVNMOS_API bool remove_nmos_sender_from_node_server(NvNmosNodeServer *server, const char *sender_name)
static bool nmos_is_compatible_version(const NvNmosVersion *version)
Definition nvnmos.h:175
void(* nmos_logging_callback)(NvNmosNodeServer *server, const char *categories, int level, const char *message)
Definition nvnmos.h:501
bool(* nmos_connection_activation_callback)(NvNmosNodeServer *server, NvNmosSide side, const char *name, const char *transport_file)
Definition nvnmos.h:301
struct _NvNmosNodeServer NvNmosNodeServer
Definition nvnmos.h:192
NVNMOS_API bool nmos_get_flow_id(const NvNmosNodeServer *server, const char *sender_name, char *out, size_t out_len)
bool(* nmos_annotation_update_callback)(NvNmosNodeServer *server, NvNmosResourceType type, const char *name, const NvNmosAnnotation *annotation)
Definition nvnmos.h:463
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:119
struct _NvNmosChannelMappingOutput NvNmosChannelMappingOutput
struct _NvNmosReceiverConfig NvNmosReceiverConfig
Definition nvnmos.h:508
enum _NvNmosUpdate NvNmosUpdate
enum _NvNmosResourceType NvNmosResourceType
NVNMOS_API bool nmos_get_sender_id(const NvNmosNodeServer *server, const char *sender_name, char *out, size_t out_len)
_NvNmosUpdate
Definition nvnmos.h:348
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)
NVNMOS_API bool nmos_annotation_update(NvNmosNodeServer *server, NvNmosResourceType type, const char *name, const NvNmosAnnotation *annotation)
_NvNmosTransport
Definition nvnmos.h:201
struct _NvNmosAssetConfig NvNmosAssetConfig
Definition nvnmos.h:507
struct _NvNmosTag NvNmosTag
struct _NvNmosSenderConfig NvNmosSenderConfig
Definition nvnmos.h:509
_NvNmosSide
Definition nvnmos.h:221
struct _NvNmosVersion NvNmosVersion
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:961
NVNMOS_API bool nmos_get_version(NvNmosVersion *version)
struct _NvNmosChannelMappingActiveMapEntry NvNmosChannelMappingActiveMapEntry
Definition nvnmos.h:307
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:485
@ NVNMOS_LOG_DEVEL
Definition nvnmos.h:475
@ NVNMOS_LOG_WARNING
Definition nvnmos.h:481
@ NVNMOS_LOG_ERROR
Definition nvnmos.h:483
@ NVNMOS_LOG_VERBOSE
Definition nvnmos.h:477
@ NVNMOS_LOG_FATAL
Definition nvnmos.h:487
@ NVNMOS_LOG_INFO
Definition nvnmos.h:479
@ NVNMOS_RESOURCE_FLOW
Definition nvnmos.h:245
@ NVNMOS_RESOURCE_RECEIVER
Definition nvnmos.h:249
@ NVNMOS_RESOURCE_SOURCE
Definition nvnmos.h:243
@ NVNMOS_RESOURCE_SENDER
Definition nvnmos.h:247
@ NVNMOS_RESOURCE_DEVICE
Definition nvnmos.h:241
@ NVNMOS_RESOURCE_NODE
Definition nvnmos.h:239
@ NVNMOS_UPDATE_RESET
Definition nvnmos.h:354
@ NVNMOS_UPDATE_UNCHANGED
Definition nvnmos.h:350
@ NVNMOS_UPDATE_SET
Definition nvnmos.h:352
@ NVNMOS_TRANSPORT_RTP
Definition nvnmos.h:205
@ NVNMOS_TRANSPORT_MXL
Definition nvnmos.h:209
@ NVNMOS_SIDE_RECEIVER
Definition nvnmos.h:225
@ NVNMOS_SIDE_SENDER
Definition nvnmos.h:223
@ NVNMOS_CHANNELMAPPING_PARENT_TYPE_RECEIVER
Definition nvnmos.h:963
@ NVNMOS_CHANNELMAPPING_PARENT_TYPE_SOURCE
Definition nvnmos.h:965
Definition nvnmos.h:413
unsigned int num_tags
Definition nvnmos.h:442
NvNmosUpdate description_update
Definition nvnmos.h:422
NvNmosUpdate label_update
Definition nvnmos.h:415
NvNmosUpdate tags_update
Definition nvnmos.h:430
const NvNmosTag * tags
Definition nvnmos.h:440
const char * description
Definition nvnmos.h:428
const char * label
Definition nvnmos.h:420
Definition nvnmos.h:604
const char * manufacturer
Definition nvnmos.h:606
const char * instance_id
Definition nvnmos.h:611
const char * product
Definition nvnmos.h:608
unsigned int num_functions
Definition nvnmos.h:616
const char ** functions
Definition nvnmos.h:614
Definition nvnmos.h:1022
unsigned int input_channel
Definition nvnmos.h:1026
const char * input_id
Definition nvnmos.h:1024
Definition nvnmos.h:1033
const NvNmosChannelMappingOutput * outputs
Definition nvnmos.h:1039
const NvNmosChannelMappingInput * inputs
Definition nvnmos.h:1035
size_t num_outputs
Definition nvnmos.h:1041
size_t num_inputs
Definition nvnmos.h:1037
Definition nvnmos.h:972
size_t num_channel_labels
Definition nvnmos.h:982
const char * parent_name
Definition nvnmos.h:984
unsigned int block_size
Definition nvnmos.h:990
const char * id
Definition nvnmos.h:974
const char * description
Definition nvnmos.h:978
NvNmosChannelMappingParentType parent_type
Definition nvnmos.h:986
bool reordering
Definition nvnmos.h:988
const char ** channel_labels
Definition nvnmos.h:980
const char * name
Definition nvnmos.h:976
Definition nvnmos.h:997
const char * name
Definition nvnmos.h:1001
const char * sender_name
Definition nvnmos.h:1009
const char ** routable_inputs
Definition nvnmos.h:1011
size_t num_channel_labels
Definition nvnmos.h:1007
size_t num_routable_inputs
Definition nvnmos.h:1013
const char * description
Definition nvnmos.h:1003
const char ** channel_labels
Definition nvnmos.h:1005
const char * id
Definition nvnmos.h:999
Definition nvnmos.h:742
const char * system_address
Definition nvnmos.h:763
unsigned int registration_port
Definition nvnmos.h:754
const char * domain
Definition nvnmos.h:745
const char * registration_version
Definition nvnmos.h:758
unsigned int system_port
Definition nvnmos.h:767
const char * registration_address
Definition nvnmos.h:750
const char * system_version
Definition nvnmos.h:771
Definition nvnmos.h:517
NvNmosSenderConfig * senders
Definition nvnmos.h:556
nmos_connection_activation_callback connection_activated
Definition nvnmos.h:562
int log_level
Definition nvnmos.h:582
unsigned int num_host_addresses
Definition nvnmos.h:528
nmos_annotation_update_callback annotation_updated
Definition nvnmos.h:576
const NvNmosAnnotation * node_annotation
Definition nvnmos.h:569
unsigned int http_port
Definition nvnmos.h:533
const char * seed
Definition nvnmos.h:547
const char ** host_addresses
Definition nvnmos.h:526
NvNmosReceiverConfig * receivers
Definition nvnmos.h:551
const char * description
Definition nvnmos.h:540
const char * label
Definition nvnmos.h:537
unsigned int num_senders
Definition nvnmos.h:558
const char * host_name
Definition nvnmos.h:521
const NvNmosAnnotation * device_annotation
Definition nvnmos.h:571
nmos_logging_callback log_callback
Definition nvnmos.h:579
unsigned int num_log_categories
Definition nvnmos.h:592
unsigned int num_receivers
Definition nvnmos.h:553
nmos_channelmapping_activation_callback channelmapping_activated
Definition nvnmos.h:566
const char ** log_categories
Definition nvnmos.h:590
NvNmosAssetConfig * asset_tags
Definition nvnmos.h:543
NvNmosNetworkServicesConfig * network_services
Definition nvnmos.h:596
Definition nvnmos.h:780
void * impl
Definition nvnmos.h:790
void * user_data
Definition nvnmos.h:786
Definition nvnmos.h:624
const NvNmosAnnotation * receiver_annotation
Definition nvnmos.h:674
NvNmosTransport transport
Definition nvnmos.h:628
const char * transport_file
Definition nvnmos.h:672
Definition nvnmos.h:682
const NvNmosAnnotation * flow_annotation
Definition nvnmos.h:732
const NvNmosAnnotation * source_annotation
Definition nvnmos.h:729
const char * transport_file
Definition nvnmos.h:726
NvNmosTransport transport
Definition nvnmos.h:686
const NvNmosAnnotation * sender_annotation
Definition nvnmos.h:734
Definition nvnmos.h:362
unsigned int num_values
Definition nvnmos.h:381
const char ** values
Definition nvnmos.h:379
const char * key
Definition nvnmos.h:364
NvNmosUpdate values_update
Definition nvnmos.h:369
Definition nvnmos.h:136
const char * prerelease
Definition nvnmos.h:145
unsigned int major
Definition nvnmos.h:138
const char * string
Definition nvnmos.h:149
unsigned int patch
Definition nvnmos.h:142
unsigned int minor
Definition nvnmos.h:140