Like old-time alchemists who turned base metals into gold, Elemental Technologies, Inc. converts industry-standard CPUs and GPUs into the hottest H.264 on-demand encoding box I’ve tested, with incomparable speed and quality that matches the best in the business. While there are some notable deficits, including limited output format support and subpar VC-1 encoding performance, if you need a tool to accelerate your H.264-encoding, Elemental Server should be on the top of your list.
Speeds and Feeds
My test version of Elemental Server was equipped with two six-core Westmere-class Intel Xeon CPUs and two NVIDIA GPUs, each with 512 discrete processors. The unit runs Linux in 6GB of RAM and comes with a 500GB hard drive, two dual-gigabyte Ethernet ports, and an MSRP of $25,950.
File input support is extensive and includes most MPEG-1, MPEG-2, and MPEG-4 containers and codecs, as well as multiple material exchange formats and both Apple ProRes and Avid DNxHD. On the output side, Elemental developed its own H.264 codec, fine-tuning performance for encoding on both GPUs and CPUs. As mentioned, however, format support is light in some areas. In terms of web distribution, Server can’t produce VP6 files, though it does support VC-1 and MPEG-2 in addition to H.264, and it can output all relevant adaptive streaming container formats plus manifest files, as well as UltraViolet .uvu files.
For intermediate formats, the latest version of Server can output ProRes, but not DNxHD, and output support for camera-related container formats and codecs is limited. If you need format-specific support for one or more play-out servers, check for this early because Server is limited here as well, though it does produce CableLabs-compliant MPEG-2 transport streams.
I asked Elemental members of management about their limited file support, and they explained that, as originally envisioned, Elemental Server was focused on producing files for adaptive streaming, since this was an emerging requirement that used relatively few file formats but involved massive numbers of output files. While the company is gradually expanding format support, it sees the product as a highly focused encoding engine, not a Swiss Army knife.
Driving the Beast
You operate Server via three components: presets, profiles, and jobs. Presets contain individual preprocessing and postprocessing options and encoding parameters, while profiles contain collections of presets that can be used in a job or assigned to a watch folder. Jobs marry input files with presets, though you can create a job without presets by choosing encoding parameters directly with the job. Or, you can select a preset or presets and customize those within a job. Jobs can be reused, so it’s easy to create a repeatable workflow that you can manually trigger.
During my tests, I worked with the browser-based interface and via watch folders, but I didn’t study the REST-based API. Over the course of about 2 weeks, I produced more than 45 different presets, and by the end, I greatly appreciated the work Elemental has invested in its interface. For example, if you make an error when creating a job, the interface lets you know right way, clearly identifying the problem areas (Figure 1). With other browser-based encoders, you don’t know there’s a problem until you try to run the job, and by then you may have already walked away.
Figure 1. Elemental’s browser-based interface lets you know when you’ve made a mistake before you walk away.
Elemental also lets you browse for input files and output directories; other browser-based encoders force you to enter an absolute file address, which is time-consuming and error-prone. When you’re making your selections, all parameters have question marks above them that trigger a pop-up help window, which is useful; they also have links to webpages with more detailed instructions.
Once you finalize a preset, you can copy it to create additional presets for adaptive streaming, changing the resolution, data rate, or other parameters as necessary, while preserving configuration options such as container format, bitrate control, codec, and the like. You can also create preset categories that make your presets easier to find when adding them to jobs or profiles.
Presets contain output-specific preprocessors such as cropping and image overlays; a color-correction effect with brightness, contrast, hue, and saturation adjustments; and deinterlacing and noise-reduction filters. On the audio front, Elemental offers manual audio remixing and an audio normalization function that enables compliance with European Broadcasting Union’s R128 or the Commercial Advertisment Loudness Mitigation Act. There are no previews for any of these adjustments, which would have been useful, so you’ll actually have to produce files to gauge your output.
With jobs and profiles, you can set priorities and notification options, as well as insert an image overlay to be applied over all output files or choose intro and outro files.
Beyond the lack of preview capabilities, the only deficit worth mentioning is the lack of automated file-naming options, which are nearly omni-present in the software encoder universe. Specifically, if you want to name your output file source+template name, you have to manually enter the template name in the Name Modifier field in the job or profile. This is not a huge deal since you can save this convention within the job or profile for later reuse, but during the early experimentation phase, an automated naming convention would have come in handy.
Format-Specific Encoding Options
When configuring a preset, you first choose the container format, which sets options such as closed-caption pass-through settings, and then choose a codec, which controls codec-specific encoding options. With all codecs, Elemental doesn’t overwhelm you with encoding options.
For example, with H.264, you can specify critical options such as profile, level, entropy encoding setting, and the number of B-frames and reference frames, but you get no control over esoterica such as search shape and pyramid B-frames. Given the consistently high quality of the H.264 output, this approach makes sense, but if you need comprehensive access to H.264 encoding parameters to customize for a unique scene or output requirement, it’s not available.
The configuration options for producing Windows Media files were similarly spare, with much worse results qualitywise, though I’m guessing that the poor Windows Media quality had little to do with the lack of precision encoding options. More on this later.
Elemental has optimized the supported codecs to run efficiently on both GPUs and CPUs. In discussions with Elemental personnel, however, I learned that GPUs are more efficient with higher-resolution, higher data rate files while CPUs crunch through smaller files faster. To optimize overall encoding performance, Server provides several controls to allocate encoding chores between GPUs and CPUs.
To assist these load-balancing efforts, the Elemental Server produces real-time encoding statistics as shown in Figure 2. On the bottom left of the figure, you see that CPU utilization is low, while the frames per second encoded by the GPU is high. If you were producing multiple files in an adaptive batch, you could adjust the data rate/file size settings to allocate more files to the CPU. In the adaptive encoding tests that I ran, I worked with Elemental personnel to derive the most efficient settings possible to crunch through my tests.
Figure 2. These statistics help you load balance between GPU and CPU.
What I Tested
My tests involved performance, deinterlacing, and encoding quality and a quick check of data rate accuracy and to see if closed-captions feeds passed through property to the encoded files. Let’s start with the easy ones.
Deinterlacing quality is important because interlaced source continues to be a major component of the footage produced by some broadcasters. To test deinterlacing quality, I used a 4:3 interlaced DV test file containing nine scenes, each with high motion, sharp edges, or fine detail that would complicate effective deinterlacing. With each tested encoder, I rendered the DV file to 640×480 progressive using the H.264 codec at 10Mbps, high enough to ensure the absence of compression-related artifacts.
For this test, I compared Elemental to three desktop encoding tools. Elemental proved the clear quality leader, though all tools were competent. The scene where Elemental really distinguished itself is shown in Figure 3, a live event shot against (gulp!) a rattan curtain. As you can see, Elemental was the only tool that could pull the two fields into a cohesive frame.
Figure 3. Elemental produced awesome quality in this deinterlacing test scene.
In another example of interface simplicity, Elemental only offers three deinterlace settings: deinterlace, adaptive, and inverse telecine, with no configurable options; I used the adaptive setting in my tests. Most other tools offer multiple settings with adjustments, increasing tinker time but often not quality. For the record, I used the settings recommended by the various desktop vendors.
Data Rate Accuracy
Many streaming producers take data rate accuracy for granted; they dial in 800 Kbps, and the file produced is actually 800 Kbps. In my experience, it’s better to adopt the Ronald Reagan principle—trust but verify. I ran two sets of tests, each with four Flash files and four Windows Media files produced at 640×360 resolution at 29.97 frames per second, with data rates at 240 Kbps, 540 Kbps, 750 Kbps, and 1200 Kbps. The first test involved files produced via one-pass CBR; the other via two-pass VBR.
In the CBR tests, seven of eight files produced by Elemental Server were encoded within 1% of the target, which is remarkable. Alas, the eighth file, the Windows Media file targeted at 240 Kbps, came in at 388 Kbps. In VBR tests, all H.264 Flash files were within 2% of the target, while the Windows Media files were far less accurate: The 1200 Kbps file rendered at 1088 Kbps, the 750 Kbps file produced at 690 Kbps, the 540 Kbps file accurately rendered at 542 Kbps, and the 240 Kbps target, again, was too high at 386 Kbps.
I am not an expert in captioning, but I know that it’s a critical function to many broadcasters. For this reason, with Elemental’s help, I set about exploring Elemental Server’s captioning capabilities and discovered an extensive range of captioning and subtitle support, including the ability to embed subtitles or create subtitle files (SRT, SMI, and TTML files) for MPEG-2 transport streams, Smooth Streaming, Flash, and Apple iDevices. To test these functions, I created an MPEG-2 transport stream with embedded captions, an F4V file with captions in a separate SRT file, an MP4 file with captions in a separate SRT file, and a WMV file for Smooth Streaming with captions in an SMI file.
After producing these files, I was able to verify the presence of the captions in video analysis tool MediaInfo and/or watch the c a p tions in a caption-aware player such as the VLC player, as you can see in Figure 4. Once you move into format-specific requirements (and, heaven forbid, overseas distribution), captioning gets complicated in a hurry. From my tests, it appears that Elemental provides all the necessary tools and the technical know-how to successfully add captions to a range of formats.
Figure 4. Closed captions in an F4V file
In terms of performance, the only close-to-equivalent test bed that I could configure was a 3.33 GHz 12-core workstation running a fast software enterprise encoder program that shall remain nameless. I used two sets of tests, both involving a set of 11 presets simulating an adaptive encoding group for Flash (H.264) and Smooth Streaming (VC-1). By way of background, this set of 11 files was very close to the parameters I created during a recent consulting project for a large broadcaster, so the test is realistic for companies in this class.
I looked at two scenarios; the first rendering a 52-minute 1080p file to all 11 presets, and the second rendering 24 1-minute DV files to 11 presets each, or 264 files total. You can see the results in Table 1.
Table 1. Comparative performance between the Elemental Server and a fast enterprise software encoder
Particularly respecting the larger file, the Elemental server was simply much more efficient. This falls in line with the Elemental’s statements that GPUs were more effective with HD content.
To test H.264 and Windows Media quality, I compared the two files in the batch group that represented the most aggressive encoding parameters for each tested codec. Regarding H.264, this meant files produced by Elemental Server and the enterprise encoder at 640x360x29.97 at 240 Kbps. Here, the quality was nearly identical.
Figure 5. Elemental’s one Achilles’ heel is VC-1, here shown at 640x360x29.97 at 540 Kbps.
With Windows Media, since Elemental couldn’t produce the 640x360x29.97 file at 240 Kbps, I compared 540 Kbps files, where the enterprise encoder was clearly superior. I asked Elemental representatives about Windows Media quality, and they said that very few customers were using VC-1 for low bitrate production, so they hadn’t focused on this. They also noted that at higher bitrates, the quality was competitive, which was also true in my tests.
So, the bottom line is that you should avoid Elemental if you need to produce high-quality, low-bitrate VC-1 files or VP6 for that matter, since Elemental doesn’t output in that format. But for high-volume production of high-quality H.264 output, Elemental Server simply can’t be beat.