-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathRELEASE_NOTES
346 lines (294 loc) · 20.7 KB
/
RELEASE_NOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
-------------------------------------------------------------------------------------------
Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
This file is part of the AWS CDI-SDK, licensed under the BSD 2-Clause "Simplified" License.
License details at: https://github.com/aws/aws-cdi-sdk/blob/mainline/LICENSE
-------------------------------------------------------------------------------------------
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 3.1.0 - 05/23/2024
---------------------------------------------------------------------------
What's New
------------
* Added new command line tool called "ndi_test". Used to test NDI inputs and outputs with CDI.
* See details in USER_GUIDE_NDI_TEST_APP.md. Source code is at src/ndi_test
* Requires NDI-SDK to be installed.
* Building on Linux: The make command line option "NDI_SDK=<ndi_sdk_path>" must be specified. Use "make help"
to see all make command line options.
* Building on Windows: Must select the "Debug_DLL_NDI" or "Release_DLL_NDI" Visual Studio solution configuration.
* After build completes, use "ndi_test --help" to see command line options.
* Added new command line options to the cdi_test application:
* "-arx" or "--avm_autorx". For AVM receiver, auto-detect incoming AVM data and output to log.
* "lt" or "--log_timestamps". Log origination_ptp_timestamp values.
* For Windows, updated the Visual Studio projects solutions. There were some issues with dependencies across
configurations and removed some old preprocessor definitions.
Bug Fixes
------------
* Windows EFA driver does not support changing the RNR (Remote Not Ready) configuration, so no need to attempt
to change its value to support versions of libfabric later than libfabric 1.9.x. See changes in src/cdi/adapter_efa.c
* Ensure that WriteLineToLog() does not use invalid handle when writing to stdout. Problem was seen on the Windows
variant. See changes in in src/common/src/logger.c.
* For the windows variant when using the CdiOsSocketReadFrom() API if the socket is not connected, ensure that there
are no packet bytes returned to the caller. See changes in src/common/src/os_windows.c
* In cdi_test application, revised logic that generates timestamps used for origination_ptp_timestamp.
* For the windows variant, addressed GitHub Issue #132.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 3.0.2 - 02/02/2024
---------------------------------------------------------------------------
What's New
------------
* Added command-line tool 'src/tools/convert_image_to_rgb10.py' to convert an image into the 10-bit RGB payload format
supported by the CDI SDK.
* Set libfabric option called FI_OPT_EFA_RNR_RETRY to ensure EFA hardware retries continuously when remote is not ready
to receive new packets. This is same behavior as libfabric 1.9.x.
Bug Fixes
------------
* Made a pool thread-safe that was being used to hold packets as part of establishing a connection. This prevents race
conditions when multiple connections are trying to be established at the same time.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 3.0.1 - 05/30/2023
---------------------------------------------------------------------------
What's New
------------
* Updated install guide for Windows, replacing manual steps with an installation script.
Bug Fixes
------------
* Fixed build and run-time problems with Windows variant. For the newer version of libfabric, must use v1.15.2 until
further notice.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 3.0.0 - 01/20/2023
---------------------------------------------------------------------------
What's New
------------
* NOTE: Additional third-party library source code for libfabric (ie. libfabric_new) and the latest version of the EFA
driver MUST be downloaded and installed in order to use this version of the SDK. Refer to the install guides for
details.
* Added use of post 1.9.x version of libfabric, which eliminates a memory copy of each adapter packet from the adapter
packet buffer into the application buffer. Backwards compatiblity with previous versions of the CDI SDK is maintained
by allowing the CDI SDK to access either libfabric 1.9 or the new version. This decision is made as part of the
existing protocol negotiation process between a transmitter and receiver.
Bug Fixes
------------
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.4.1 - 11/11/22
---------------------------------------------------------------------------
What's New
* Added optional bind IP address when creating connections using CdiAvmTxCreate() and CdiRawTxCreate(). See
bind_ip_addr_str in CdiTxConfigData and CdiRxConfigData.
* Added new command line option to the test application to support specifying the bind IP address. See "-bind_ip" or
"-bip".
* Added new core API to return internal read-only settings. See CdiCoreReadOnlySettings() in cdi_core_api.h.
Bug Fixes
------------
* Fixed issues causing false disconnects related to the out-of-band Tx/Rx ping (keep-alive) mechanism that ensures a
Tx/Rx connection remains valid.
* Fixed bug in CdiQueuePushWaitMultiple(). See changes in queue.c and cdi_queue_api.h. Details in GitHub Issue #76.
* Fixed problems with the test application that were identified in GitHub Issue #82.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.4.0 - 04/22/22
---------------------------------------------------------------------------
What's New
------------
* Created discussion pages on GitHub CDI-SDK site at https://github.com/aws/aws-cdi-sdk/discussions. Please start using
so the whole community can benefit.
* Added additional test content at https://cdi.elemental.com/test_content/index.html
* Added new API for processing ancillary data payloads.
* Added a new check for ancillary data payloads to cdi_test. When using the "--riff" option, cdi_test will check that
received payloads are formatted according to the CDI Baseline Profile format specification at
https://cdi.elemental.com/specs/baseline-ancillary-data.
* Added command line tool 'dump_riff' for inspecting RIFF file content.
* Added kCdiStatusInvalidPayload to enum called CdiReturnStatus in cdi_core_api.h.
* Removed empty/unused functions CdiPoolGetBulk and CdiPoolPutBulk.
* Improved error reporting in os_linux.c.
* Added documentation about thread-pinning the poll threads.
* Rx buffers used in adapters are limited to the size defined within the libfabric provider. For the libfabric socket
provider the limit is 376 adapter packets, which limits the maximum payload size to approximately 3,340,000 bytes. See
logic concerning packet_count in CreatePacketPool(), adapter_efa_rx.c. The version of libfabric being used contains a
memory leak if this limit is not enforced. The leak has been fixed in a later version of libfabric (see details at
https://github.com/ofiwg/libfabric/pull/7145). The next major release of the CDI-SDK will use the newer version of
libfabric.
Bug Fixes
------------
* Fixed a bug in the payload packetizer. The bug caused undefined data in linear receive buffers (buffer type LINEAR).
* Added locking around certain calls to libfabric APIs. Without the locks cdi_test with adapter type SOCKETS_LIBFABIC
may sometimes fail because of race conditions in libfabric.
* Fixed a bug in the Endpoint Manager. The bug caused CdiAvmStreamEndpointDestroy in cdi_avm_api.c to hang without
active data transfer.
* Fixed a bug that prevented creation of multiple CDI endpoints with the SOCKETS_LIBFABRIC adapter.
* Fixes/changes to the cdi_test application:
* Fixed buffer overflow when writing received payloads to a file.
* Skip unexpected payloads received.
* Fixed console logger issues with shutdown and multi-threaded use.
* Fixed timing issue as part of adapter connection setup. See changes in adapter.c.
* Fixed segfault in adapter when freeing Rx buffers. See changes in RxEnqueueFreeBuffer in internal_rx.c.
* Fixed some problems in adapter Tx's GetCompletions in adapter_efa_tx.c.
* Fixed GitHub Issue #67. See https://github.com/aws/aws-cdi-sdk/issues/67
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.3.2 - 11/29/21
---------------------------------------------------------------------------
Bug Fixes
------------
* Fixed problem that was introduced in SDK 2.3.1, which prevented previous versions of SDK transmitters from connecting
to version 2.3.1.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.3.1 - 10/29/21
---------------------------------------------------------------------------
What's New
------------
* Added new logger macros CDI_LOG_WHEN() and CDI_LOG_THREAD_WHEN() that provide log message filtering and occurrence
count logic.
* Added new command line options to the cdi_test application that disables validation of received payload user data.
This should be used when the cdi_test application is receiving payloads sent by applications other than cdi_test. See
"-nopud" or "--no_payload_user_data".
* Renamed macro THREAD to CDI_THREAD in cdi_os_api.h.
* Moved "#ifdef __cplusplus" usage from public API header files to be part of the CDI_INTERFACE define.
* Added a new API CdiAvmValidateBaselineVersionString.
Bug Fixes
------------
* Fixed a bug in the CDI receiver code for linear buffers (buffer type LINEAR). The bug caused CDI applications
receiving data in linear buffer mode to generate error messages instead of processing received payloads.
* Fixed some bugs in the cdi_test application. Cdi_test skipped the payload data check for some configurations, it did
not terminate with an error code for some Rx payload errors, and it incorrectly skipped some Rx checks with pattern
type NONE.
* Fixed a bug in statistics gathering and the cdi_test application if wait time value wraps, causing a hang (very long
sleep).
* Fixed bugs in the multiline logger API that may cause applications to crash when multiline loggers are disabled.
* Fixed a bug in CdiAvmRegisterBaselineProfile. The fix prevents registration of already registered baseline profiles.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.3.0 - 08/30/21
---------------------------------------------------------------------------
What's New
------------
* When creating connections, added ability to share a single poll thread across multiple connections. This can be
used to reduce CPU core usage. The thread must have enough bandwidth to service all connections associated with it.
* See shared_thread_id, which has been added to the CdiTxConfigData and CdiRxConfigData structures. NOTE: Use zero or
a negative value (ie. -1) to disable this feature and create a unique poll thread that is associated only with the
connection being created.
* Added new command line options to the cdi_test application. See "-tc" or "--thread_conn".
* When using more than 6 multiple connections, depending on payload size and available memory, you may have to reduce
the size defined by MAX_RX_PACKETS_PER_CONNECTION. For Linux, you can also increase the number of available
hugepages from a default value of 1024 by modifying /etc/sysctl.conf to contain 2048 or higher as shown below. Must
then use "sudo sysctl -p".
vm.nr_hugepages = 2048
Bug Fixes
------------
* Removed macro NANOSECONDS_PER_SECOND from header cdi_utility_api.h.
* Added prefix CDI_ or Cdi to various macros and symbols in headers cdi_utility_api.h, cdi_core_api.h, cdi_logger_api.h,
cdi_queue_api.h, and cdi_test_unit_api.h.
* Updated code for AVM baseline profiles to match published specifications concerning use of semicolons. The values
generated by CdiAvmMakeBaselineConfiguration() for video width and height were separated by a comma instead of a
semicolon. For example: "width=1920, height=1080;" will now be generated as "width=1920; height=1080;".
* Updated code for GetAvmBaselineUnitSize() which was reporting incorrect unit sizes for audio and ancillary media
profiles. In previous versions GetAvmBaselineUnitSize() returned the number of bytes instead of the number of bits.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.2.0 - 05/19/2021
---------------------------------------------------------------------------
What's New
------------
* Changed protocol version to 2.1 (CDI_PROTOCOL_VERSION.CDI_PROTOCOL_MAJOR_VERSION) and added new probe protocol
version 4 (CDI_PROBE_VERSION) to support bidirectional sockets used by probe control interface.
* Added new OS APIs for sockets. See CdiOsSocketGetSockAddrIn(), CdiOsSocketReadFrom() and CdiOsSocketWriteTo().
* Using bidirectional sockets for the out-of-band probe control interface. A single socket is used for each
connection. Compatibility with previous versions of the probe control interface is maintained.
* Added "CDI_" prefix to defines and types in cdi_os_api.h to prevent name collisions with application code.
* Added support for AVM connections that contain multiple endpoints. They can be used to demux and mux video, audio and
ancillary data streams. Changes include:
* New documentation and diagrams. See include/cdi_avm_api.h.
* New AVM APIs. See CdiAvmTxStreamConnectionCreate(), CdiAvmTxStreamEndpointCreate() and CdiAvmEndpointTxPayload().
* Removed stream_identifier from CdiTxConfigDataStream structure. See include/cdi_avm_api.h.
* Removed stream_identifier from CdiCoreConnectionCbData structure. Added remote_ip_str and remote_dest_port. See
include/cdi_core_api.h.
* Added new command line options to the cdi_test application. See "-XS" or "--new_conns".
* Added payload transfer start time. It is available in the CdiAvmRxCbData/CdiRawRxCbData structure parameter passed to
the Rx payload application callbacks. See CdiCoreCbData, tx_start_time_microseconds in include/cdi_core_api.h.
* Added new CdiCoreNetworkAdapterDestroy() API. This allows dynamic destruction of resources created by
CdiCoreNetworkAdapterInitialize(). Before using CdiCoreNetworkAdapterDestroy(), must ensure all connections using the
adapter are closed. See CdiCoreConnectionDestroy(). Also, all connections and adapters must be closed/destroyed before
using CdiCoreShutdown().
* Added internal reference count to Logger state data. NOTE: Each time CdiLoggerInitialize() is called,
CdiLoggerShutdown() must be called once. The test applications have been updated to call CdiLoggerShutdown().
* Added support for additional internal transport layer protocols. See new types/APIs in cdi/src/protocol.h.
* Protocol version has been added to the application connection callback data. See negotiated_... in
CdiCoreConnectionCbData in include/cdi_core_api.h.
* CDI_PROTOCOL_MAJOR_VERSION has been replaced with CDI_PROBE_VERSION.
* Supports previous protocol/probe version. See cdi/src/protocol_v1.c.
* New protocol/probe version 2.0.3. Contains the new probe command kProbeStateSendProtocolVersion, used to negotiate
a compatible version between local and remote endpoints. Protocol and probe data structure differences are
described in cdi/src/protocol_v2.c.
* Fixed two values in video baseline profile for TCS ("ST2065-1", "ST428-1") and colorimetry ("ST2065-1", "ST2065-3")
that improperly had underscores rather than hyphens. This change brings the implementation in line with the
specifications (ST 2110-20, -30). A calculated risk assessment has been made to not follow the normal process of
incrementing the API version number. While this does introduce an unhandled incompatibility, the likelihood of this
affecting actual workflows was deemed to be insignificant.
Bug Fixes
------------
* Fixed problems with multiple calls to CdiCoreInitialize(). See https://github.com/aws/aws-cdi-sdk/issues/34
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.0.2 - 01/08/2021
---------------------------------------------------------------------------
What's New
------------
* Added initial version of the SDK coding style guide. See CODE_STYLE_GUIDE.md.
* Replaced CdiLoggerSetGlobalLog() API with new CdiLogGlobalGet() API, which returns the global log handle created
via CdiCoreInitialize() API. The deprecated API did not serve any functional purpose.
* Added Windows targets for generating DLLs for the CDI-AWS SDK library. See use of Debug_DLL and Release_DLL in the
Visual Studio solution and project files. Details at: https://github.com/aws/aws-cdi-sdk/pull/26
* Added use of the CDI_INTERFACE define to APIs that were not previously using it. Only affects the new Windows DLL
targets.
* When using CdiOsMemAllocHugePage() API on Linux, the size of bytes allocated must be a multiple of
CDI_HUGE_PAGES_BYTE_SIZE. See definition in cdi_os_api.h. If not, the memory will not be freed when using the
CdiOsMemFreeHugePage() API.
* Renamed the queue type kQueueMultipleWriters to kQueueMultipleWritersFlag to clarify that the value is a flag,
not an OS signal type. See include/cdi_queue_api.h.
* Added defines to uniquely identify the CDI transport protocol used by the SDK. See the CDI_PROTOCOL_VERSION,
CDI_PROTOCOL_MAJOR_VERSION and CDI_PROTOCOL_MINOR_VERSION in include/cdi_core_api.h.
Bug Fixes
------------
* Fixed a problem in RxPollFreeBuffer() that could lead to an assert (segfault in debug build) in CdiListRemove() when
trying to remove an entry from an empty list.
* Fixed a Rx adapter buffer memory leak when using the CdiCoreRxFreeBuffer() API from multiple threads.
* Fixed a segfault when using the CdiLoggerMultilineEnd() API from multiple threads.
* Fixed a segfault in the Windows variant when logging to stdout and stdout did not exist. The global logger created
via CdiCoreInitialize() API is now used instead of stdout. Details at: https://github.com/aws/aws-cdi-sdk/pull/25
* Fixed problem with Linux Makefile that could cause the AWS-SDK to always partially re-build on Linux.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 2.0.0 - 12/14/2020
---------------------------------------------------------------------------
What's New
------------
* Documentation updates.
* Added support for additional AVM baseline profiles. See new types/APIs in include/baseline_profile_api.h.
* Added AVM Baseline profile 2.00.
* Added configuration settings to the following structures:
* CdiTxConfigData: Added max_simultaneous_tx_payloads and max_simultaneous_tx_payload_sgl_entries.
* CdiRxConfigData: Added max_simultaneous_rx_payloads_per_connection.
These settings were previously statically defined. To use the static values, set these to zero. NOTE. Use memset or a
zero structure initializer (= {0}) to set the whole structure to zero before setting the desired members to the
actual values required.
* Added new core utility APIs for getting TAI time. See CdiCoreGetPtpTimestamp() and CdiCoreGetTaiTimeMicroseconds().
* Added new OS types and APIs for using statically allocated mutexes. See CdiStaticMutexType,
CDI_STATIC_MUTEX_INITIALIZER, CdiOsStaticMutexLock() and CdiOsStaticMutexUnlock().
* Added new OS portable type for use by the CdiOsSocket...() APIs to hold socket instance data (ie. port number). This
was done so the transmit side socket no longer has to call connect(), thus preventing failed sends due to ICMP port
unreachable responses. See CdiSocket.
* Moved the Logger to the public API. Header file is located at include/cdi_logger_api.h.
* Moved the Queue to the public API. Header file is located at include/cdi_queue_api.h. Also, added support for multiple
writers. See the new types kQueueSignalModeMask and kQueueMultipleWriters.
* Added new OS portable type for converting between nanoseconds and seconds. See NANOSECONDS_PER_SECOND.
* Added number of bytes transferred to statistics. See num_bytes_transferred in cdi_core_api.h and BytesTransferred in
cloudwatch_sdk_metrics.cpp.
Bug Fixes
------------
* Several connection related issues and segfaults as described in published GitHub issues.
Known Issues
------------
Please refer to the README.md file for a complete list of known issues.
---------------------------------------------------------------------------
CDI (Cloud Digital Interface) SDK Version 1.0.0 - 09/15/2020
---------------------------------------------------------------------------
What's New
------------
Initial release of the SDK.
Bug Fixes
------------
Known Issues
------------
Please refer to the README.md file for a complete list of known issues.