JPEG XS Codec Support #414
Replies: 8 comments 16 replies
-
I am in full support of this as well. I've been in talks with them as well and maybe there is a way to share the expense. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
What are your resolution requirements? |
Beta Was this translation helpful? Give feedback.
-
Starting at 1920x1080i then 1920x1080p and then up to 4k and higher, but the main use would be 1920x1080i from my use cases |
Beta Was this translation helpful? Give feedback.
-
according to this chart from here: https://fastcompression.medium.com/jpeg-xs-modern-visually-lossless-low-latency-lightweight-codec-2f9299407d8e j2K has a better PSNR than XS. From several articles, it seems XS was designed for low complexity and latency, but compression efficiency was secondary, so I believe the previous information to be inaccurate and maybe even inverse. There are some additional alternative codecs for JPEG** in FFMPEG |
Beta Was this translation helpful? Give feedback.
-
@TheSashmo I wanted to chime in here, I think you may not yet have the background to understand the information you are reading and reporting back on this thread. I would encourage you to keep reading and learning about compression technology, it is interesting stuff. JPEG2000 has better quality per bit than JPEG-XS. The downside of the original JPEG2000 (standardized more than 20 years ago) is that is computationally intensive (thus requiring GPU implementations for realtime performance or many CPU cores). JPEG-XS was designed to be a low-complexity low-memory/low-latency codec but is significantly worse from a compression efficiency (quality per bit) point of view than JPEG2000, so that means, for example, if you like the quality of JPEG2000 at 100Mbs data rate, you would need say 140Mbs data rate when using JPEG-XS to achieve the same quality with the same imagery as JPEG2000 operating at 100Mbs. High-Throughput JPEG2000 (HTJ2K) is an enhancement to JPEG2000 that was published in 2019, it replaces the slow entropy coder in JPEG2000 with a fast one, but keeps everything else from JPEG2000. The compression efficiency is worse than JPEG2000, but not as One other thing to consider is licensing and patent royalties. Patent royalties are demanded with JPEG-XS but are not required with JPEG2000 and HTJ2K, because JPEG2000 and HTJ2K are royalty-free standards. You can find many open-source implementations of JPEG2000 and HTJ2K but there is only one for JPEG-XS. There are also commercial implementations of JPEG2000, HTJ2K and JPEG-XS. An excellent HTJ2K open source implementation is OpenJPH, available here: https://github.com/aous72/OpenJPH HTJ2K decoders have also been included in recent releases of popular open-source packages OpenJPEG and FFMPEG |
Beta Was this translation helpful? Give feedback.
-
Thank you all for the thoughtful discussion so far. I think it’s important to refocus on our core intentions and see if we can find some common ground. In our lab, we have two main use cases: 1. Collaborative Viewing for Clients: We need to deliver low-latency video of sufficient quality for clients to view content remotely, ideally in a “plug and play” setup with lower-powered hardware. However, even with lower-powered devices, the compression requirements remain high. We’re looking for a solution that supports native RGB 4:4:4, with at least 10-bit color depth, as anything less tends to introduce banding in gradients, which our clients find unacceptable. 2. Remote Operations for Operators: For our operators working remotely from satellite locations, we need to deliver a very high-quality, high-bitrate video signal. This typically involves UHD/4K with 12-bit 4:4:4 color, as the content will be viewed in DI theaters and grading suites. Latency must remain minimal since operators control their systems via technologies like RGS or Teradici. Any noticeable delay between screen updates will cause significant frustration. UltraGrid has been ideal in terms of latency—it outperforms anything else we've tried. However, finding the right compression format for each use case has been a challenge. We've primarily relied on HEVC with Nvidia hardware for encoding and decoding, but HEVC's complexity, especially above HD resolutions, and the limitations of hardware-accelerated libraries (e.g., lack of support for greater than 4:2:0 or 8-bit formats) are problematic. While these constraints make sense for consumer devices, where delivery formats typically don’t exceed those specs, they fall short for professional use. We’ve built systems supporting 4K 12-bit 4:4:4 using Nvidia NVENC/NVDEC and dedicated SDI hardware, and at around 100Mb/s bitrate in 4K, the quality is perceptively very good. However, miniaturizing that into a “set-top” style device for client use has proven challenging. On the other hand, I’d love to leverage J2K for our high-quality satellite workflows, but licensing the Comprimato SDK has been financially prohibitive at our current scale. I don’t expect a one-size-fits-all solution for both use cases, which is why I suggested exploring JPEG XS. From what I’ve read, it’s designed to be less complex while still supporting higher bit depths and pixel formats. I reviewed the patent licenses, and while I’m no legal expert, the costs for small-scale usage seem fairly reasonable (though I could be misinterpreting the published rates). That said, I still need to run more tests to evaluate how a 30-50 Mb/s JPEG XS stream performs in HD. At that bitrate, the quality may not be sufficient for our needs. However, it may prove more useful for our Remote Operations use case, where we typically maintain 100-200 Mb/s network connections over WAN. For our Collaborative Viewing use case, we may still need to rely on HEVC, given the stricter bandwidth constraints, which is fine, but I wish there were better pix_format support without relying solely on software. C'est la vie! I’ll admit, I don’t know much about HTJ2K, but based on @michaeldsmith post, it seems like an interesting possibility as well. |
Beta Was this translation helpful? Give feedback.
-
Starting to discuss the options to support JPEG XS as a codec option for Ultragrid. I am working through the licensing terms right now and unless I am miss understanding them the costs are not impossible at the small scales we will be using.
Wondering if JPEG XS support in UG would be possible, as it appears Intel have published their library to support encode and decode. (https://github.com/OpenVisualCloud/SVT-JPEG-XS) I was also going to inquire with IntoPIX for a quote for their SDK as well. This might be considered an alternative to Comprimato J2K support.
Beta Was this translation helpful? Give feedback.
All reactions