London-based V-Nova has made some impressive claims about Perseus, its compression technology. Streaming Media’s preliminary testing shows that it lives up to some of them.
V-Nova launched its compression technology, Perseus, on April Fools’ Day 2015, claiming “2x–3x average compression gains, at all quality levels, under practical real-time operating scenarios versus H.264, HEVC and JPEG2000.” The timing and the claims certainly raised some eyebrows among the compression cognoscenti, placing a big fat target on V-Nova’s back.
Roughly 12 months later, V-Nova has delivered on some of these claims. But more importantly, it has staked out a unique value proposition (UVP) validated with trophy client Sky Italia. That UVP enables IPTV distributors to deliver Perseus-encoded video at significantly reduced bandwidths compared with H.264 without replacing their encoding facilities or set-top boxes.
As announced in April of this year, software updates enabled Sky Italia’s Harmonic ViBE VS7000 video encoders to output Perseus-encoded video and its set-top boxes to decode that video. Deploying Perseus allowed Sky Italia to reduce its average HD bitrate from 8Mbps to 4Mbps, cutting bandwidth costs and allowing Sky to extend the reach of its service by distributing HD video to customers on slower connections.
At the other end of the quality spectrum, Indian movie distributor FastFilmz announced that it is using Perseus to deliver ultra-low-bandwidth video to Android-based mobile devices in India. This agreement highlights Perseus’ low-bitrate quality and the ability to decode on low-end Android devices typical of the Indian market.
Beyond these distribution-oriented deals are V-Nova’s contribution products, which have been deployed by multiple vendors for several years. Clearly, Perseus is more than a bad April Fools’ joke, and it’s time to take a closer look. In this article, I’ll describe how the technology works, discuss implementation details such as encoding/decoding and file formats, and detail the results of my quality and decoding complexity tests. But there are two caveats.
First, full disclosure: With the approval of my editor, V-Nova flew me to Milan to meet with Sky in Italy, and then to V-Nova’s offices in London to meet with the company’s staff and take a closer look at the technology, paying all expenses.
Second, and more important, I wasn’t able to encode with Perseus technology or decode on as many platforms as I would have liked to. V-Nova’s internal decoder is a complicated command-line implementation that the company was reluctant to share, and there were no commercial video-on-demand (VOD) encoders available for testing while I was writing this piece (though some should be available by the time you read this). Instead, for the tests herein, V-Nova encoded three standard test files to several 1920p configurations, and I matched those encodes with H.264 and HEVC equivalents in my office. I was able to decode on a single Android tablet and on a Linux-based NUC computer that I carried back from London, but not on a Windows or Mac computer. So let’s agree that this is a preliminary look, and I’ll be careful to detail as many assumptions and test details as possible so you can draw your own conclusions from the data.
At a high level, most video codecs encode frames by dividing the frame into blocks and squeezing data from these blocks as necessary to meet the target data rate. This causes the blocky artifacts we’ve all seen on streaming video and fringe cable and satellite channels. Perseus processes each frame at multiple resolutions, encoding the lower levels first and then adding detail as necessary for the higher resolutions. As we’ll see, this schema avoids the blockiness inherent to H.264, MPEG-2, and HEVC. Perseus tends to blur at aggressive encoding configurations.
There are two flavors of Perseus: pure and hybrid. Pure Perseus uses only the Perseus algorithm throughout, and it is used in V-Nova’s contribution encoders, which I’m not going to discuss. Hybrid Perseus, which is for distribution, combines Perseus with other compression technologies, such as H.264. For example, hybrid Perseus can use a 960×540 H.264-encoded stream as one of the lower levels and then build additional levels of detail to full 1920×1080 resolution using only the Perseus codec. This technique has several key benefits.
First, because of how the data is packed in the file (more later), a player such as QuickTime can play the lower resolution H.264 file. Figure 1 shows QuickTime Player playing a 960×540 H.264 file, which is actually a lower-resolution layer in a 1080p-encoded Perseus file. This allows operators to distribute a single file with two decode resolutions depending upon the installed player.
Figure 1. QuickTime Player is playing the 960×540 file that serves as a lower level in a 1080p-encoded Perseus file.
The second benefit is that if H.264 playback is GPU-accelerated on the playback platform, Perseus can access that hardware acceleration for the H.264 layer. On the Android tablet that I tested, this allowed Perseus-encoded files to decode at less than 50 percent of the CPU levels required for HEVC. In essence, this particular capability is what makes Perseus decode possible on the inexpensive Android devices targeted by fastfilmz, as well as inexpensive H.264-based set-top boxes. It is a feature that HEVC simply can’t match.
Note that the H.264 layer accounts for between 70 percent and 80 percent of the total file bitrate of a hybrid Perseus-encoded file. Accordingly, if a higher-quality codec such as HEVC was used for the base layer, the quality and/or efficiency of the Perseus file would improve as well. While V-Nova has proven this concept internally, there are currently no commercial encoders capable of outputting hybrid Perseus videos with HEVC as the base layer. According to the company, this is because V-Nova’s primary focus has been on the H.264 retrofit market, not competition with HEVC. Once HEVC deployments become more commonplace, the company will work with compatible encoder vendors to produce hybrid HEVC/Perseus files.
This hybrid technology, shown in Figure 2, explains why it’s so simple to add Perseus encoding to an existing encoder. Basically, it’s a plug-in that sits on top of the encoder, receiving the lower resolution H.264-encoded video and adding the Perseus layers. V-Nova has integrations with Thomson, NTT DATA, and Imagine Communications, as well as several other encoder vendors. On the decode side, it’s the same schema: The native player decodes the H.264 video and hands it off to the Perseus plug-in to process the additional layers. In addition to VisualOn, whose Android player I tested, V-Nova has worked with Wyplay, which performed the set-top box integration for Sky in Italy. V-Nova offers encoder and decoder software development kits to enable this third-party development.
Figure 2. The Perseus OTT implementation requires little capex.
Completing the picture, the Perseus-enabled encoder creates a standard MPEG-4 elementary stream with the Perseus enhancement layer packed into the stream as supplementary enhancement information (SEI), or it creates an MPEG-2 transport stream with the Perseus layer included as a separate component. In either case, if the player knows what to do with the data, it decodes it; otherwise, it ignores it.
By working with standards-based formats and encoder and decoder plug-ins, Perseus is relatively simple to implement. I spoke with Dominic Charles, joint-CEO and co-founder of fastfilmz, when I was in London. To take care of encoding and decoding, he made two phone calls—one to NTT DATA for encoding, the other to VisualOn for the Android decoder. This freed him to focus on mission-critical tasks such as sourcing his content and planning marketing and distribution.
Evaluating the Perseus Codec
Of course, just because a codec is easy to implement doesn’t mean you should use it. Let’s turn to the qualitative and performance evaluations, starting with quality.
As mentioned earlier, V-Nova encoded all Perseus-encoded files for me, which I decoded in my office for objective quality benchmarks and playback performance testing. V-Nova encoded three test clips I’ve used in the past, a real-world test file (the New file) at 1920×1080 resolution, and excerpts from Blender Foundation movies Sintel and Tears of Steel at 1920×856 resolution. V-Nova encoded all clips to 500Kbps, 1Mbps, 1.5Mbps, 2Mbps, 3Mbps, and 4Mbps. In addition to resolution and data rate controls, the Perseus codec has one encoder setting in which the user chooses between Robust and Sharp. V-Nova sent clips encoded with both settings.
With these clips in hand, I produced equivalently sized MP4 and HEVC clips in-house. Since the Perseus clips are all constant bitrate (CBR), I produced both sets of clips in CBR. With x264/FFmpeg, I set the target data rate, max data rate, and buffer to the same target to achieve a relatively constant bitrate. With x265, I did the same, and I inserted the “–strict-cbr” switch as well. With both encoders, I used the medium preset, which is the default, and two-pass encoding. Then, to simulate live encoding with HEVC, I re-encoded the New clip using x265’s fast preset in a single pass.
I calculated the Peak Signal-to-Noise Ratio (PSNR) and Multi-Scale Structural Similarity (MSSSIM) values for all clips using the Moscow State University Video Quality Measurement Tool (VQMT), and the SSIMplus score using the SSIMWave Quality-of-Experience Monitor. In general, the results from all tests tracked what’s shown in Figure 3. In a nutshell, here are my findings:
- HEVC always delivered the best quality, even in Fast mode.
- Perseus delivered better quality at the low end than MP4, but H.264 crossed over between 1.5Mbps and 3Mbps in all tests for all clips.
- Perseus Robust was almost always better than Perseus Sharp except at the 500Kbps configuration.
Figure 3. PSNR comparisons for the New clip.
The fact that HEVC delivered higher quality than Perseus is not surprising given that the Hybrid Perseus files in our tests were using H.264 for the lower levels, not HEVC. A fairer and more relevant test would be HEVC quality compared with a hybrid Perseus-encoded file built upon an HEVC-encoded file. This is a critical point. It’s easy to read these results as proof that HEVC delivers higher quality than Perseus, but until we can compare hybrid Perseus with HEVC as the base layer, or pure Perseus with HEVC-encoded video, that claim can’t be made.
While at Sky in Italy, I compared H.264-encoded clips against Perseus-encoded clips side-by-side with two large screen TVs connected to the service’s set-top boxes. With H.264 as high as 8Mbps and Perseus as low as 2.5Mbps, I saw very little difference in quality, even when I stopped playback and compared single frames. It may be that x265 and FFmpeg working offline output higher quality than the real-time encoders used by Sky in Italy, which is typically the case. So I’m not sure I would put all my evaluation eggs in the objective benchmark basket, though you certainly can’t discount the objective benchmarks entirely.
The other point relates to how Perseus degrades, particularly as compared with HEVC when simulating live operation by encoding in a single pass and using the fast preset. This is shown in Figure 4, which is the Results visualization screen from the Moscow State University VQMT, which plots the MSS-SIM results for the Perseus Sharp clip (in red) and the HEVC clip (in blue) at 1500Kbps. As you can see, the HEVC clip has significant drops in quality that would be noticeable to users, typically at a scene change. Though HEVC’s overall score was higher than the Perseus clip’s, Perseus delivers a more consistent experience without the transient quality drops.
Figure 4. Dips in the blue plot reveal noticeable quality drops in the HEVC-encoded clip in the single-pass encode (fast preset).
Perseus’ graceful degradation was also particularly noticeable in comparisons with H.264 in the very low data rates. Where H.264 often showed macroblocks, Perseus simply lost detail, which is much less distracting.
Highly Efficient Playback
I tested playback efficiency on a Samsung Nexus 10 tablet, using the MX Player for HEVC and H.264, and the VisualOn player for Perseus, enabling hardware decode in both players. I measured CPU Utilization with an app called CPU Monitor Advanced Pro while playing back the New file at 4Mbps and the Sintel file at 3Mbps. Average CPU consumption was 29.5 for H.264, 31.5 for Perseus, and 75 for HEVC.
Interestingly, during my first pass with Perseus, hardware decode wasn’t enabled and CPU use averaged 68.5, just slightly behind HEVC. After chatting with V-Nova, I enabled hardware H.264 decode, which dramatically reduced Perseus’ CPU load.
I also tested decode on the Intel NUC using the same two files, displaying the Perseus file via V-Nova’s Linux decoder and playing the HEVC and H.264 files using FFplay. I recorded 1 minute of playback in System Monitor. Figure 5 shows the comparison between HEVC and Perseus when playing the New clip. On this computer, Perseus decode was slightly lower than HEVC, with a much more consistent and less bursty usage pattern. For the record, H.264 playback was slightly lower than Perseus, right around 20 percent.
Figure 5. Perseus requires lower and more consistent CPU usage than HEVC.
It’s tough to know what conclusions to draw from the second set of tests. While the graphics chip that powers the NUC has H.264 playback acceleration, I couldn’t tell if it was enabled by FFplay or the V-Nova player.
If you’re distributing H.264 video to set-top boxes and are looking for a way to reduce your streaming bandwidth costs, Perseus is worth checking out. Though the H.264 objective comparisons weren’t encouraging at higher bitrates, Sky Italia’s results certainly warrant a look, particularly given the dearth of other software-only upgrade alternatives.
If you’re distributing ultra-low-bitrate video to mobile devices, the quality and playback tests reported earlier, plus the FastFilmz design-in, make Perseus a natural. Note that VisualOn has an iOS player as well as Android; FastFilmz focused on Android because of Android’s popularity in its target market.
In a more general sense, it’s tough to see Perseus playing a role in general-purpose streaming for browser-based playback anytime soon, since getting playback in browsers is so problematic. This is probably okay with V-Nova’s management and investors, since the revenue opportunities for browser-based playback seem minimal. The world really doesn’t need another competitor with VP9 and the Alliance for Open Media AV1 codec in this space.
Overall, V-Nova has made substantial progress over the last year, with real products and real customers. The management and staff that I met were impressive, as was the investment group. Anyone who still thinks that Perseus is an April Fools’ joke will probably find that the joke is on them.