Savant 0.4.1 continues 0.4.x release cycle, introducing several new features, multiple bug fixes, and sample updates. It is built on DeepStream 6.4 / JetPack 6.0 and widely tested on Jetson Orin Nano, Orin NX, Turing, Ampere, and Ada Lovelace discrete GPUs. In this release, we focused on testing problems that our customers and community users discovered in 0.4.0. Also, we developed an auxiliary watchdog service for pipeline health monitoring.
Auxiliary Video Streams
This new feature allows users to create new video output streams from the PyFunc and produce derived streams in other resolutions or with specific codec parameters. For example, we used this feature to stitch four independent 4K video streams into a single 8K panoramic video. To help you get started with the feature, we implemented a new demo that shows how to transcode the original video into multiple resolutions and cast it to the downstream consumers.
We also changed two previous demos from the workaround implementations to the auxiliary video streams feature:
Now, you can use Savant for AI and video processing for tasks similar to FFmpeg but with fully controlled custom filters.
Read more in the article.
Video Processing Latency Decrease
We configured default parameters to achieve a lower latency than the previous version. In our tests, 0.4.1 has a subsecond end-to-end video delay for RTSP processing, while the earlier parameters led to several seconds, depending on the use cases.
NVENC DTS/PTS Improvement For Jetson
More than one year has passed since we opened a bug on Nvidia about incorrect NVENC behavior. In short, NVENC sometimes reorders video frames incorrectly, which can cause artifacts and wrong decoding. We found a reliable workaround for the problem and implemented it in 0.4.1.
DLA Support
Nvidia Jetson devices have deep-learning accelerator ASICs on board (DLA), which can execute several models efficiently and offload GPU resources. In the release, we added support for DLA model deployment.
Read more in the documentation.
Etcd TLS and X509 Certificate Support
Savant uses Etcd to update pipeline parameters dynamically. Etcd watch mechanism enables highly efficient data distribution to low-latency services that cannot poll remote databases for updates. Moreover, with Etcd, you do not need to implement a custom RESTful API for configuration distribution as it implements RESTful API, strong and mature authentication mechanisms, and established architecture for edge and data center environments.
Previously, we supported only Etcd without X509 certificate authentication, which is suitable for a secure environment. Still, in the modern world full of leaks, MItM issues, and security concerns, it is an issue to have such insecure communication. Thus, we implemented a full-scale secure mechanism for Etcd, and now you can connect pipelines to remote Etcd clusters via insecure networks.
Additional Metrics for Buffer Adapter And Watchdog Service
The buffer adapter plays a key role in our solutions, allowing us to monitor pipeline operations and survive outages and upgrades easily. It provides several metrics that enable monitoring of the pipeline state with Prometheus and Grafana.
We added more metrics in this release, allowing users to understand the pipeline state better. Moreover, we implemented a watchdog service for pipeline reloading when it gets stuck or crashes unexpectedly.
Watchdog is a sidecar container that watches buffer metrics and reacts to their values according to the configured rules. When it determines that downstream or upstream elements have stopped consuming or producing data, it can shut them down or restart them, depending on the configured policy.
Message Dump and Replay
Another improvement for the buffer adapter is a new capability to dump passing-by messages into commit-log-like files, which can later be replayed precisely the same way and at the same time they were gathered.
A massive problem in the streaming system is implementing a reproducible replay of the streamed events. When using a webcam or RTSP stream, you usually cannot replay the video streams without saving them into files with FFmpeg or a similar tool. However, a file differs from a stream because the timing can be different, and you cannot easily synchronize data from multiple files by simulating hundreds of cameras streaming videos into a single pipeline.
With a new feature, you can collect and replay streams for troubleshooting, implementing integration testing, and development.
Read more about the feature in the article.
Future Releases
We will release several minor updates with features and fixes in the 0.4.x branch. By the end of the year, we plan to release Savant 1.0.0 (probably based on DeepStream 7.0 with WSL2 support).
Do not hesitate to contact us on Discord to get more information about Savant and to progress with community help quickly.