W A R N I N G !


W A R N I N G !

This page is full of non-facts and bullsh!t, (just like the internet and especially forums and other blogs), please do not believe entirely without exercising your intellect. Any resemblance to real things in reality is purely coincidental. You are free to interpret/misinterpret the content however you like, most likely for entertainment, but in no case is the text written on this blog the absolute truth. The blog owner and Blogger are not responsible for any misunderstanding of ASCII characters as facts. *cough* As I was saying, you are free to interpret however you like. *cough*

Monday, January 2, 2012

[Review] Eight-Way H.264 Encoders Shootout: Arcsoft MediaConverter, Badaboom, Cyberlink MediaEspresso, Freemake, Handbrake, MediaCoder, SUPER, and TEncoder

Update 14/01/12 - Is what is said in this review the absolute truth? Find out at Freemake vs Mediacoder vs TMPGEnc - PSP edition.

Table of Contents
Reason for doing this
Before we start - Frontends for x264 and encoding settings
GUI and feature comparison
Test setup 
- Why two pass?
Encoding time comparison
Encoding quality comparison
- Thinning the herd
- Round one
- Round two
Conclusion - Which encoder is right for you?

Reason for doing this

So I got an i3-2100 into the family. So I now have GPUs capable of APP, CUDA, and Quick Sync. It was natural for me to do this.

You see, the issue with all the GPU-accelerated encoding is that they can only be done with a few specific software, and what the major hardware reviewing websites do is just compare GPU vs CPU in the same encoder. Back in the days of reviewing MPEG1 encoders I already learnt that different encoders' quality and speed can vary greatly, and usually newcomers perform significantly worse than tried-and-tested solutions. So sure, GPU may be much better than CPU with this particular encoder, but it is possible that another CPU-only encoder is still the better choice, particularly when compression ratio is important.

Before we start - Frontends for x264 and encoding settings

x264 is a free command-line H.264 encoder, and many video converter software use it to do the conversion. Thing is, x264 is just a video converter, so it needs another program to do the file reading, resizing and stuff. Plus most people cannot live without a GUI. That's where all these different software using x264 come in.

Software known to be using x264:
Handbrake
MediaCoder
SUPER
TEncoder
And many more

However, even though all these programs are using the same x264 to encode, they differ in their default settings and the settings available to the user, so features and encoding quality can be vastly different (as we shall soon see).

Well, I will only be testing a few out of the many available, because they are popular/used to be popular. No point testing too many of the same thing.

I will be testing all encoders, both x264-based and not, at as default settings as possible, to simulate what a novice will get after just installing the program.

GUI and feature comparison

First, the CPU-only programs:

Freemake Video Converter


Rather bare settings but enough to get the job done - we get to choose the bitrate, get to choose between one or two-pass, get to limit the file size (but I managed to control the file size via bitrate anyway, so question mark? Maybe it's more useful for one-pass.). No info on how the one-pass is done - I didn't find it out.

Handbrake


Handbrake is the second-best program in the list in terms of the settings you are allowed to tweak, we get two-pass encoding, reference frames B-frames motion estimation deblocking blah... stuff you find in a proper encoder. I would've liked a "maximum bitrate" setting, although the H.264 encoding profiles and levels take care of this somewhat, but as I was typing this I realize this setting isn't available either. But well, there is a ton of other settings, plus the command-line is also available for you to enter the parameters that are not on the menu.

SUPER


The only important setting we get is bitrate. No two-pass on this guy - only one-pass is available, and since there is only a single bitrate setting, it is either A) Constant bitrate, which sucks for quality or B) Constant quality, which means the bitrate kbps is "for reference only", in that the file size can pretty much be anything, which sucks if you are encoding for a portable device. Ironically, we actually get profiles and levels settings.

TEncoder


Somewhere between idiot-proof and geek-only, we get bitrate, two-pass, a bit of extra stuff, that's it. But it also has the option to enter command-line stuff, so it can be as powerful as how much your brain can remember the settings.

Now, the GPU-accelerated programs:

Arcsoft MediaConverter (Tested: AMD APP, Intel Quick Sync and CPU-only)


Arcsoft's MediaConverter supports AMD APP, nVidia CUDA, and Intel Quick Sync. Minimal settings, but some H.264 encoding options are available. Has a 5120kbps lower limit for bitrate.

Badaboom (Tested: nVidia CUDA and CPU-only)


We get to choose between Baseline and Main profiles - High is not available. Bitrate control... either VBR or constant quality... which pretty much mean the same thing because this thing only does one-pass and it doesn't even bother to tell you what bitrate it will try to get.

Cyberlink MediaEspresso (Tested: Intel Quick Sync)


So... we are stuck with 6Mbps minimum for bitrate. I'm seeing a trend here. (Also, remember AVIVO?) Btw, that's all you get for encoder settings.


Ok, so there is also choice for speed or quality, and whether you want to use acceleration. Both the HD 5670 and integrated graphics were installed and being used at the same time, but only Quick Sync got detected. Wierd.

I only tested Quick Sync, because when I unchecked "Enable hardware encoding":


Because I tested the trial version. Just so you know, all software tested were legit - either free or free to try.

MediaCoder


The only free GPU-accelerated encoder being tested is also the most promising-looking encoder being tested. On first glance it looks like a pretty ok interface, kind of limited but good enough to do a good job. It even has max/min bitrate and buffer size options. And then you press the Advanced button.


This is good stuff. If you want to be knowledgeable in video encoding, then look up what all the settings mean. The list goes on, and there is also a place to enter command-line parameters, but would you really need it...?

Test setup

Input: 1920x1080 @ 23.976fps, 1m31s, 17.3Mbps H.264 (High@L5.1) (CABAC / 7 Ref Frames)
Output: 4Mbps*, two-pass if possible, resolution and frame rate unchanged, other parameters as per encoder default

*Arcsoft MediaConverter and Cyberlink MediaEspresso encoded at 6Mbps, because 4Mbps was not available

Computer hardware:

For Arcsoft MediaConverter and Cyberlink MediaEspresso -
Core i3-2100
ASRock H61M-HVS
HD 5670 and HD3000
4GB ram

For all the rest -

Phenom X3 720
GTX 560
2GB ram

Why two-pass?

We encode to get more visual data out of less disk space. A good encoder compresses more data into the same file size. So to see an encoder's performance, we fix the file size and see the image quality.

Problem is, two-pass is one of the only two methods (not counting more passes) which allows the resultant file size to be close to what you set. The other method is constant bitrate (a one-pass method), which is totally suck and hence stupid and hence not used.

Which is why I have always used two-pass encodes to compare video encoders. Problem is, most of the new GPU-accelerated encoders only support one-pass. I have to trial-and-error to get a similar bitrate by playing with the quality-based encoding settings, and it is not easy.

Encoding time comparison

*Tested on the other system
^Two-pass encoding

Okay, so CUDA did increase speed significantly in Badaboom. But in MediaCoder, CUDA actually decelerated the encoding slightly. There seems to be some problem in Arcsoft because all three encodes took the same time. According to AnandTech's review we're supposed to see a significant speed boost with Quick Sync here.

According to this review here, Arcsoft's Quick Sync is supposed to be much faster than Badaboom. So if Quick Sync was faulty in my case, then the expected time should have been very short.

Generally, the encoders that are advertised to have GPU-acceleration all encoded much faster than those using x264 and other CPU-only encoding, even if they only used CPU. But note that the CPU-only encoders mostly encoded in two-pass, so the speed difference is not as big as what the graph may seem to be showing. In fact Freemake's one-pass took only 100 seconds.

So, do the GPU-accelerated programs encode faster because of GPU acceleration or because they choose speed over quality? Maybe both. That is what this review is going to find out.

Encoding quality comparison

Screenshots - all

Screenshots - sorted (see "Thinning the herd")

I ended up having 7 x 15 = 105 pictures, which is too many even if I display the links in a table (this blog's width is too small!), so I have them zipped into a single file. Anyway I won't be able to analyze all (14 choose 2) = 91 different encoder pairs possible, so I will be doing my comparisons like this -

1) Encoders will be categorized into different speed classes
2) The best (subjective) encoder in that particular speed class is picked
3) The best of each speed class are compared

The speed classes are -

Fast: Arcsoft, Badaboom CUDA, Cyberlink
Moderate: Badaboom CPU, Freemake, Handbrake FFMpeg, SUPER
Slow: Handbrake x264, Mediacoder, TEncoder

Note that speed class of an encode does not depend on whether it used GPU-acceleration or two-pass. Although the slow ones are all two-pass, which is kind of unfair because encoding time is almost doubled just for better filesize estimation and a possible slight increase in image quality. I will consider this when making my conclusion.

Thinning the herd

Cyberlink MediaEspresso's fast preset (the default one) actually resulted in a bitrate of ~4Mbps, even though 6Mbps was selected. The quality preset resulted in 6Mbps as it should. Because Arcsoft MediaConverter also encoded in 6Mbps, and Cyberlink's fast preset is on the verge of garbage, the encode by Cyberlink's fast preset will not be considered in the comparison.

Quick comparison also reveals that Badaboom's GPU-accelerated output is the garbage even when compared to Cyberlink's fast preset, despite having a similar bitrate and encoding speed. Hence it will also not be considered for comparison.

Arcsoft's APP and CPU-only settings resulted in identical pictures. And same encoding speed. Maybe the exact same things were done. Then again, Quick Sync resulted in identical speed but different picture. Nonetheless the APP-accelerated output will be ignored.

In the moderate speed category, Badaboom CPU is crap, and MPEG-4 SP (FFMpeg) was included for fun, so there are only two real candidates. And one of them encoded two-pass. One can probably already see where this is going.

Round one

Frame A


Let's start off with an easy one. All encoders (that are still being compared) produced decent to excellent results, Arcsoft's Quick Sync produced the best result in the fast category, Freemake takes a win from SUPER, and everybody in the slow category performed similarly.

Frame B


Poor bitrate allocation strikes hard in this frame. Many encodes are below decent, but the encoders capable of two-pass encoding still have good output. This is why you should do two-pass encoding, or choose quality-based encoding with tight quantization and flexible bitrate and frame type control.

Ranking of the fast encoders is subjective, but I would say that Cyberlink is the best. Freemake wins SUPER again, and the slow category has differences but hard to rank - you be the judge.

Frame C


Another easy frame which also tests how the encoder chooses what information to omit. Outside of the display screen and pavement, all encoders perform similarly and excellently. But the encoders perform differently when encoding the screen - most soften the lines on the screen to various extents, the worst being Arcsoft's Quick Sync. I would say that the best of each category are Arcsoft's CPU, Freemake and TEncoder.

Frame D


Checking for color banding and macroblocking. Around half of the outputs ended up as casualties, there are visible differences between the slow encoders, but even so it is still hard to subjectively judge which is better. Arcsoft CPU had the least artifacts in the fast class, Freemake in the moderate class.

Frame E


No particular reason for choosing this frame, but it turned out that none of the encoders managed to preserve the lines on the display screen properly. Only the two-pass encodes managed to preserve part of those lines. Again it is hard to tell the differences between the slow encoders, but I'd say that Arcsoft CPU is the winner of the fast ones here. Freemake comes out ahead of SUPER again.

Frame F


Cyberlink is the clear winner followed by Arcsoft Quick Sync then CPU-only in the fast class. In the moderate class, Freemake wins yet again. (I know, it gets boring.) Really hard to choose for the slow class.

Frame G


This scene is very easy to encode, contrary to my expectations. Arcsoft Quick Sync just looks that slightly better in the fast class, Freemake is noticeably better than SUPER, and all the slow ones look exactly the same.

Verdict for round one

Quick Sync gave both better and worse quality compared to CPU in Arcsoft; Quick Sync encodes the items that are the center of attraction more clearly but blurs the not-so-obvious. Well all encoders do that, they just differ in how much. I would say Quick Sync will be subjectively more pleasing, and after comparing the moving pictures side-by-side, I confirmed this to be the case. Despite CPU-only scoring so well with still frames.

But, if the still frames of Arcsoft Quick Sync and Cyberlink Quick Sync are compared to each other, Cyberlink's seems like a more balanced and all-rounded improvement over Arcsoft's. (Stupid subjective comparisons.) After comparing the moving pictures, I reluctantly gave Arcsoft's Quick Sync the win. Although really, you can't be too bad with any of the three.

In the moderate speed class, no fight here, Freemake wins, 'nuff said.

For the slow encoders, 4Mbps is too much bitrate to do a subjective comparison with, because all encodes looked the same and so similar to the source. Meanwhile some GPU-accelerated encoders are producing garbage with 4Mbps. This is why I always say that some encoders are garbage.

Now, if only I can get AVISynth to work on my Windows 7 installation, I would be using MSU Video Quality Measurement Tool to get some objective numbers. Maybe next time.

Since the slow encoders all performed so similarly, I will be picking the winner based on speed and features, and MediaCoder is the winner. It deserves the win. And should be your first choice for many things.

Round two - Arcsoft (Quick Sync) vs Freemake vs Mediacoder

Arcsoft's output is acceptably decent, although there is room for improvement. In 2 or 3 of the 7 frames, it looks indistinguishable from the slower encoders. But the point of throwing more bitrate and using better encoders is to minimize the artifacts that only appear in the more difficult scenes, the presence of which can spoil the experience.

Mediacoder is just that slightly better than Freemake, in certain scenes, and if you're lucky. Doesn't change that fact that it still is better.

Conclusion - which encoder is right for you?

Freemake gets special commendation for high-end quality at a reasonably fast speed, and has just enough features to get the basic things done. And it is free.
However, something needs to be mentioned - Freemake's one-pass did not yield decent quality. Remember when I said above that two-pass is just for better filesize estimation? Well this is only true if the rules of bitrate allocation (and other blahs) are the same. Apparently, it wasn't. But then its one-pass was more than twice as fast as the two-pass which gave a hint.
Also, I cannot give Freemake a complete victory (I'm ignoring one-pass performance), because the lack of profile and level and some etc settings can result in the encode being unable to be played on some players. So, not good enough.

Best encoder in terms of quality and features is MediaCoder no doubt. I'll have to try its one-pass someday. But it is slow, as x264 is.

Sadly, no GPU-accelerated fast encoders managed to match the slow CPU ones' quality. If there are visible differences at 4Mbps, then at 2 or 1Mbps it could become garbage already. But Arcsoft encodes so fast with acceptable quality even in CPU-only mode, it is worth considering if you need the speed - just make sure the quality stays acceptable. If Quick Sync increases speed even further, than just wow.

I'm actually tempted to give Arcsoft best speed/quality ratio if the Quick Sync worked properly, but there are different encoders for different jobs. Personally I would choose MediaCoder, because I don't need speed and I need quality and reliability (of playback of encoded videos by the players).

4 comments:

Anonymous said...

You do realize freemake is GPU and intel accelerated, right?

I found it does lousy on single-pass just like you and does great with 2-pass.

Also, it's not documented but it decrypts dvd on the fly when you open a dvd movie...that and the fast gpu encoding make it a real winner.

Anonymous said...

My only wish is that I could turn of B-Frames so that fast horizontal motion was not so jittery when encoding from DVD sources.

Anonymous said...

You should add TX264 to comparison too.

Anonymous said...

Great write up! Thanks for the taking the time to do this. BTW, I tried using MediaCoder, it's so full of adware/viruses my virus scanner deleted it while I was trying to use it the first time! What a shame. Just though I'd warn you.