Release 4.0.0
Build date
2023-06-16
Release status
Type: Fourth production ready release
Release content
Product version
4.0.0
Release artifacts
Details | Filename | SHA-256 |
---|---|---|
Ingest and Rendering Engine binaries, headers, and shared libraries | agile-live-4.0.0-d02f52d.zip | 9f95bfe78ab7d295268ad2de913ed18cda8b9407d977feb9afc7f5a738034a73 |
System Controller | agile-live-system-controller-4.0.0-745ecee.zip | f19331fffa499db7d57d10c99af09b78e94fec5459188d6df832a009b0b92947 |
Library details
libacl-ingest.so
Version: 10.0.0
Library containing the core Ingest functionality used by the acl-ingest
executable.
libacl-productionpipeline.so
Version: 11.0.0
Library containing the MediaReceiver, MediaStreamer and ControlDataReceiver classes, used to implement a Rendering Engine. Also used by the acl-renderingengine
application
libacl-controldatasender.so
Version: 9.0.0
Library containing the ControlDataSender class, used to send control messages to a ControlDataReceiver component.
Changelog
- The system now requires Chrony as the NTP client for time synchronization. See NTP instructions for more details. The applications will not start if Chrony reports an drift greater than 5 ms.
- New environment variables
ACL_LOG_MAX_FILE_SIZE
andACL_LOG_MAX_LOG_ROTATIONS
to control the number and size of the rotated log files for the applications - Fix parsing of boolean environment variables
Ingest 10.0.0
- Support for transporting up to 16 channels of audio to the production, where a subset of the channels can be selected.
- Added support for using Opus as audio codec in transport to the Production Pipeline. This codec has a lower delay compared to the existing AAC codec. The user can now select codec per connected stream.
- Improved handling of NDI sources.
- Handle cases when SDI sources deliver one extra or one too few audio sample.
- The built-in MediaSourceGenerator now has a lower audio level of -20 LUFS.
Rendering Engine 2.0.0
- New audio mixer implementation with per-input-strip three-band parametric equalizer, compressor and panning.
- New automatic transition types: left and right wipe
- Add support for picture-in-picture effects. Currently the rendering engine support two separate picture-in-picture effects with an additional graphic effect on top.
- All control commands executed by a rendering engine is now written to a log file in
/tmp
- Fix bug where disconnecting a source would leave the last frame frozen in the input slot with corrupted audio.
Production Pipeline 11.0.0
- It is now possible to include input slots where no stream has been connected yet to a multi-view output. The view will be empty until a source has been connected to that input slot, with the label visible.
- Views in the multi-view will remain after the corresponding input slot has been disconnected, showing a black frame with the label. The video will automatically turn up again when another stream is connected to the same input slot.
- Fix bug where the multi-view output would stop sending video when none of the sources in the multi-view were connected.
- Add support for SRT in caller mode for multi-view outputs and MediaStreamer outputs.
- Add support for setting the SRT latency and an optional passphrase for the multi-view outputs and MediaStreamer outputs.
MediaReceiver
API has a new methodremoveCustomMultiViewSourceInput
to remove a custom feedback input earlier registered usinggetCustomMultiViewSourceInput
.- Improved latency of video decoder with ~1 frame.
Control Data Sender 9.0.0 and Control Data Receiver 10.0.0
- Fix application crash with
acl-tcpcontrolpanel
on connection failure. - Updated control command protocol for video commands, where the first word addresses the node in the graph to make the change to. This allows for the same node to be used multiple times. See Rendering Engine commands for more details on the new protocol.
- Updated API where multiple, separate control commands can be sent in the same message, guaranteed to be delivered to the Rendering Engine at the same time point. The new method
sendMultiRequestToReceivers
is used to send such messages. The old API for sending just a single control command per message is unchanged. - Raise the maximum control message length to 65535 bytes.
System Controller 4.0.0
- Expose a number of new metrics from the components for system monitoring in the REST API and Prometheus endpoint, including average/min/max encode and decode durations per stream, frame counters for video and audio in multiple locations, statistics for outgoing output streams and round trip time and measured bandwidth on the contribution links.
- The POST
/streams
endpoint now require anaudio_mapping
to know which audio channels to transport to the production. Use"[[0,1]]"
for the same behavior as in previous versions (i.e. transport only channels 0 and 1, encoded as stereo). - New counter
lost_frames
for Pipeline streams. It counts fully lost frames, not only broken frames, as thereceived_broken_frames
counter. - The counter
lost_packets
in theGET /ingests/{uuid}/streams
endpoints has been removed in favor for thelost_packets
anddropped_packets
in the Pipeline. - Counter
queuing_video_frames
has changed name tovideo_frames_in_queue
. - REST API now correctly returns the selected port when automatic port selection is requested (by setting the
local_port
to 0), instead of returning the port number as 0. - REST API now show if sources are active or inactive, instead of hiding inactive sources (a source is active if it is ready to be used, as opposed to an inactive source, which has been seen earlier, but not any longer)
- Fix bug where the wrong port numbers of Control Connections would be shown in REST-API for port numbers automatically assigned by the OS.
Known limitations
GPU performance
The GPU utilization in the Ingest status message is currently not working. Use intel_gpu_top
and/or nvidia-smi
instead.
MPEG-TS over UDP
For Outputs and multi-view outputs it is currently not possible to bind to a specific IP and port with MPEG-TS over UDP, even if local_ip
and local_port
are exposed in the REST API.
Drivers
You need to install the CUDA Toolkit on Ingest machines, even if they don’t have Nvidia cards.
Security issues
There is no rate limiting implemented in any of the components. Should the application be running in a network where ports are accessible to unauthorized users, there is a risk of a denial of service (DOS). The network should be configured with firewall rules closing out unauthorized users.
Encryption (HTTPS) is not enabled by default in acl-system-controller. This means that pre-shared keys (PSK) used for encrypted communication between components and the System Controller will be exchanged in the clear and could be revealed.
Client authentication is not enabled by default in acl-system-controller so anyone with access to HTTP on the machine hosting acl-system-controller will have access to the REST API.
Even when client authentication is enabled, there is no enforcement of the length or format of the password. Also note that HTTPS should be enabled when using client authentication since the credentials would otherwise be sent in clear text.
It is strongly recommended to enable both HTTPS and client authentication.