Syndicate content

Project Rémoulade

Ten years ago, the world of digital video was transformed when a codec named DivX ;-) was unleashed upon the Internet underground by a Frenchman known as Gej. Shortly thereafter, realizing their opportunity to make advanced media technologies available to all, a team of enthusiasts banded together to form DivXNetworks, Inc. and began to develop the DivX codec under the codename Project Mayo (so chosen because, like Gej, mayonnaise is French and, like mayonnaise, creating a good codec requires a great deal of finesse). To build on Gej’s original work, the DivX Advanced Research Center (DARC) team was established, comprising leading specialists from around the globe and in mid 2001 DivX 4.0 was born.

Today, over eight years later, the DivX format provides a platform that allows anyone to create high-quality, high-definition digital video, to mobilize media for on-the-go viewing, to share content with others via the web, to transport the DivX experience to the living room and to play DivX video on thousands of low-cost devices.

Over time we have worked to make DivX technology better, faster, easier and more accessible, while retaining full interoperability with an enormous ecosystem of DivX software, content and devices. But time does not stand still and today new technologies present a fresh opportunity to extend the reach of the DivX experience by bringing new devices, content and services together in an interoperable way as part of the DivX ecosystem and putting powerful new tools into the hands of all who require them.

It is in this spirit that we present Project Rémoulade: A much better Mayo ;-)

DivX H.264 Encoder Alpha 1 & Tutorial

DivX H.264 Encoder Alpha 1

The second package to be released from Project Rémoulade is an alpha version of the DivX H.264 Encoder. Complementing the DivX H.264 Decoder, this multithreaded encoder produces high definition H.264 video bitstreams that are compatible with the draft profile for DivX 7 H.264 HD video. The encoder is a command line utility and accepts input from raw AVI files as well as the AVISynth frameserver.

View our tutorial for the DivX H.264 Encoder

DivX H.264 Decoder Beta 2

Project Remoulade Logo

DivX H.264 Decoder Beta 2

Beta 2 is here!

Thanks to a wealth of feedback since our first beta release last week, we have already completed work on many improvements to the decoder and still more are underway. Once again, we ask for your help testing and we look forward to seeing more of your results


What's new in Beta 2

The following changes have been made to the decoder:

  • The preferred output format has been changed to YV12 and, used in conjunction with renderers that accept this format, decoding should be faster
  • More routines have been implemented in SSE for acceleration on older processors
  • An issue causing high jitter on certain clips has been corrected
  • Experimental support for "old-style" lossless bitstreams has been added
  • Multithreading code has been adapted to address infrequent crashes
  • CABAC decoding has improved error resilience

Known-issues for Beta 2

This non-exhaustive list of known-issues summarizes some important points you should be aware of when using Beta 2:

  • The decoder does not perform as well as expected when running on AMD CPUs (we are actively investigating this issue)
  • DVBViewer crashes if the DivX H.264 Decoder is selected for live streams.

DivX H.264 Decoder Beta 1

Project Remoulade Logo

DivX H.264 Decoder Beta 1

Our first release from Project Rémoulade is a beta version of the DivX H.264 decoder. It is a multithreaded DirectShow filter supporting high profile bitstreams and is capable of decoding all streams from the current version of x264 with incredible playback performance.


Features of the DivX H.264 Decoder

 
  • H.264 Main, High, High 10, High 4:2:2 profiles
  • Full interlace support (MBAFF, PAFF, mixed)
  • Multithreading supporting up to 8 CPUs
  • Optimizations for MMX, SSE, SSE2

Configuring the decoder

Once installed the decoder can be configured either by accessing the filter property page from a host application (i.e. a media player), or by selecting the H.264 Decoder Config link in the DivX programs group on your Start menu:



Click to enlarge

The options that can be set include:

 
  • Deblocking

    Deblocking should normally be on for H.264 video because the encoder assumes that the decoder will perform in-loop deblocking in accordance with the format specification and codes the video accordingly. Turning off deblocking will therefore introduce artifacts during playback, but because deblocking is computationally expensive this option can be desirable for low-powered systems that could not normally decode H.264 or where battery life is at a premium. Disabling deblocking does not look too bad with most content. Deblocking is enabled by default.

  • Multithreading

    When enabled, this option allows the decoder to subdivide the decoding process across multiple CPUs or cores to accelerate decoding and provide a smoother playback experience. Multithreading is enabled by default.

  • Low latency

    This is an experimental feature that may increase the frame rate for more basic bitstreams at lower resolutions, or on systems with larger CPU cache. Low latency is enabled by default.

  • Disable logo

    Turns off the small DivX logo that appears in the lower-right of the picture for a few seconds at the start of playback. Disable logo is disabled by default.

  • Use default encoding settings in this application When this decoder filter property page is accessed from within a host application, this setting instructs the decoder to turn off features such as color correction and the logo overlay and turn on features such as deblocking to ensure that DivX video sources are processed in their original form without any adjustments applied. This is important when transcoding for example. This option is disabled by default and is set on a per-application basis.

  • Brightness, Contrast, and Saturation

    These sliders enable image adjustments that may improve the appearance of H.264 video on your computer. Each slider is centered by default.

Creating our test clips

To test the new decoder we encoded a 12 minute long video sequence from Last Man Standing, a very sharp source clip combining high texture detail, fast motion, strong color contrast, flashing lights, frequent scene changes, computer graphics, indoor and outdoor scenes, and smoke and particles. It was encoded using x264 version 0.59.807 08b5132 with the following options:

  --keyint 250 --bframes 4 --b-pyramid --ref 4 --aq-strength 0 --partitions "all" --8x8dct --direct "auto" --weightb --me "umh" --merange 32 --subme 7 --b-rdo --mixed-refs --trellis 2 --no-fast-pskip --no-dct-decimate --sar 1:1

We ran one encoding using --qp 16, resulting in output with an average data rate of 45.57Mbps, and another with --bitrate 15000 --pass <1,2>. The 45 Mbps stream is extremely high quality and the high data rate ensures that during benchmarks the majority of the CPU time is spent in the decoder (as opposed to the file splitter, renderer, or host application). The 15 Mbps stream represents a rate more typical of common 1080p material.

Our test clips are too large to post but you can view some representative sample images:



Click to view slideshow


Results of our own initial testing

In order to provide some insight into Beta 1 we ran a few benchmarks against some mature third-party H.264 decoder filters, namely CoreAVC 1.7.0 and FFDShow-tryouts rev 1945 CLSID build, dated 2008-04-17. For each decoder we used GraphEdit to create a filter graph comprising the Haali splitter, the H.264 decoder and the default video renderer filter. The graph configuration looked like this:



Click to enlarge

We disabled the clock for the graph, displayed the properties for the renderer filter, used Process Explorer to measure the total CPU time required to decode each clip subtracting any CPU time accumulated until the graph was run, and also noted the average frames per second achieved. We decoded each clip with every decoder three times for all of our dual core benchmarks but only twice for our single CPU benchmarks because these take much longer and the dual core tests had showed almost no deviation across multiple repetitions for any decoder on our test machine. For fairness, for every decoder we chose the result with the highest average frame rate per second of CPU time.

Our test system used an Intel Core 2 Extreme X6800 (Conroe) CPU @ 2.93Ghz, 1066Mhz FSB, 4MB of L2 cache, 4GB of DDR2 RAM, and a PCI-Express NVIDIA Quadro FX 3550/4000 SDI video card with 256MB of memory, a 256-bit bus, and ForceWare version 6.14.11.6265.



Click to enlarge

To begin, these charts show the average frames per second per decoder according to the renderer filter:



Click to view charts

You can see that on our test system Beta 1 already achieves far more frames per second (average) than FFDShow-tryouts, and also bests CoreAVC in three out of four cases. But how much CPU time was used by each decoder to obtain these results? A fast decoder is not necessarily performing well if it consumes too much CPU time. To further investigate the performance of each decoder we also charted the total CPU time used in each case:



Click to view charts

Once again the decoder performs extremely well for it's first beta release! The charts clearly show that the DivX H.264 decoder is not simply achieving high frame rates at the expense of excessive CPU time. Performance will be further enhanced as we roll out more beta releases at DivX Labs. Stay tuned ;)


An update on performance

Since releasing Beta 1 we have gathered a lot of information from members of the beta group including performance statistics for many more CPU types. Although we can consistently reproduce the above illustrated performance on our test system which was not specially selected, proving the high efficiency of the decoder core, third-party performance tests on other processors have shown some variance - particularly those performed with CPUs that have less L2 cache. This is somewhat expected as early versions of the decoder are tested for the first time on a wider range of hardware and the current beta version generally performs to within 10% of the frame rate achieved by CoreAVC on the same system. We are actively working to ensure that the decoder performs equally well across all common processor configurations.


Downloading DivX H.264 Decoder Beta 1

This is a closed beta release and our beta group has limited capacity. We are now making efforts to contact active members of the video community with invitations, as well as developers and enthusiasts who might help us with testing and provide feedback. If you believe that you fall into these categories and you are interested in testing this beta please create a free DivX Labs account and send me a private message including your preferred e-mail address and a short summary of any relevant projects or groups that you are involved with. Please be patient when applying, we will try to respond quickly but we're only human and we too need our beauty sleep ;)

Connected Plug-ins

License Agreement

NO COMMERCIAL USE: This License Agreement grants our community members the right to use the Software downloaded from DivX Labs for personal use only in order to evaluate and provide feedback about it to DivX, Inc. Commercial use of the Software or of the work products resulting from its use is not permitted under the Terms of Use of DivX Labs.

"