View Full Version : x264 speed/quality parameters analysis by YUVsoft
Plamen234
13th August 2007, 12:19
x264 speed/quality parameters analysis by YUVsoft
August 2006
web page: http://www.yuvsoft.com/technologies/codecs_testing/index.html
PDF report direct link: http://www.yuvsoft.com/pdf/x264_parameters_comparison.pdf
I found this resource by chance when reading this http://www.compression.ru/video/codec_comparison/lossless_codecs_2007.html
CruNcher
13th August 2007, 12:31
yeah but this is old stuff x264 changed alot since 2006, it needs to be updated
Plamen234
13th August 2007, 13:25
yeah but this is old stuff x264 changed alot since 2006, it needs to be updated
:) Do we have to pray that YUVSOFT would release an updated version of their report?
Sagekilla
13th August 2007, 18:23
I could actually run a modern version of the test, using all the new features and such.. I have the free time to do this, I'd just need to gather a few appropriate sources to test settings on, because all I have are DVD.
Dark Shikari
13th August 2007, 18:39
I could actually run a modern version of the test, using all the new features and such.. I have the free time to do this, I'd just need to gather a few appropriate sources to test settings on, because all I have are DVD.
Elephant's Dream on standard-def is probably a good, relatively fast source to encode.
Sagekilla
13th August 2007, 18:45
Mmm, I'll use that and look through my DVD collection for slow/medium/high motion videos. Thanks! I'll need to create a list of settings to test too.
Edit: That might actually be a problem, I remember Akupenguin saying that H.264 videos have a bias towards any future encodings using H.264 (x264 for example) again. I'm either going to go up to the high def MPEG-4 version or I'll just drop it all together.
Sagekilla
13th August 2007, 18:57
Hmm, while I was writing up a list of things to do I was wondering. Which encoding method should I use? crf or 2-pass? 2-pass would be useful to see which methods are higher quality with corresponding screenshots, Whereas crf would show me how much of a bitrate decrease I could get from enabling or disabling a certain setting. I still need to figure out the 1st pass settings for that matter if I do one too.
Edit: Alright, I've compiled a list of the settings I'll be testing and I'm downloading the MPEG-4/AVI version (1024x576) to encode. Here's the settings I'll be tweaking to see how the affect the encode
--no-cabac
--bframes
--no-b-adapt
--b-pyramid
--b-bias
--weightb
--bime
--ref
--mixed-refs
--no-deblock
--partitions
--direct
--direct-8x8
--8x8dct
--me
--merange
--subme
--b-rdo
--trellis
--no-fast-pskip
--no-dct-decimate
May be included:
--aq-strength
--aq-sensitivity
Dark Shikari
13th August 2007, 19:01
Hmm, while I was writing up a list of things to do I was wondering. Which encoding method should I use? crf or 2-pass? 2-pass would be useful to see which methods are higher quality with corresponding screenshots, Whereas crf would show me how much of a bitrate decrease I could get from enabling or disabling a certain setting.
I still need to figure out the 1st pass settings for that matter if I do one too.
CRF would require a 3-dimensional graph: speed, bitrate, and quality.
Sagekilla
13th August 2007, 19:07
True, the graph I couldn't really do unless I install software for that. The only other alternative is to just create three different tables, listed by those settings you just said.
Dark Shikari
13th August 2007, 19:29
True, the graph I couldn't really do unless I install software for that. The only other alternative is to just create three different tables, listed by those settings you just said.
GNUPlot is free and makes 3D graphs very easily.
Sagekilla
13th August 2007, 20:26
I'm not quite sure how to go about what settings to use for testing.. I've decided to try a similar approach to what yuvsoft did and do a "use base settings, then add on settings from there." 1st test was the initial command line, each test afterwards shows what settings I added onto that.
Does this look like a good idea or should I do something else? This is just an example of what I might be doing below, by the way.
#1 --crf 20 --thread-input --threads auto --progress
#2 --bframes 4
#3 --bframes 4 --ref 4
#4 --bframes 4 --ref 4 --mixed-refs
#5 --bframes 4 --ref 4 --mixed-refs --b-pyramid
#6 --bframes 4 --ref 4 --mixed-refs --b-pyramid --direct auto
#7 --bframes 4 --ref 4 --mixed-refs --b-pyramid --direct auto --weightb
#8 --bframes 4 --ref 4 --mixed-refs --b-pyramid --direct auto --weightb --bime
Dark Shikari
13th August 2007, 20:44
I'm not quite sure how to go about what settings to use for testing.. I've decided to try a similar approach to what yuvsoft did and do a "use base settings, then add on settings from there." 1st test was the initial command line, each test afterwards shows what settings I added onto that.
Does this look like a good idea or should I do something else? This is just an example of what I might be doing below, by the way.
#1 --crf 20 --thread-input --threads auto --progress
#2 --bframes 4
#3 --bframes 4 --ref 4
#4 --bframes 4 --ref 4 --mixed-refs
#5 --bframes 4 --ref 4 --mixed-refs --b-pyramid
#6 --bframes 4 --ref 4 --mixed-refs --b-pyramid --direct auto
#7 --bframes 4 --ref 4 --mixed-refs --b-pyramid --direct auto --weightb
#8 --bframes 4 --ref 4 --mixed-refs --b-pyramid --direct auto --weightb --bime
"Adding from there" is often a bad idea because it only analyzes the effect from a certain direction, and doesn't analyze varying combinations.
I'd do two separate tests personally; one set of tests going from a "middle ground" setting like --subme 6 --trellis 1 --me hex and adding each of the various other options, and then a separate battery of tests on various combinations of the most important parameters (subme, me, cabac, etc) with the rest constant, perhaps.
Sagekilla
13th August 2007, 20:51
Gotcha.. how's this sound for a "middle ground" test?
x264.exe --crf 19 --subme 4 --me hex --trellis 1 --progress --threads auto --thread-input --output "H:\test\base.264" "H:\test\input.avs"
I went for a slightly lesser subme to show how much improvement is given from boosting it, and vice versa for decreasing.. I'll go write up a list of settings to test according to how you say I should be doing it, then I'll post them here.
Dark Shikari
13th August 2007, 21:11
Gotcha.. how's this sound for a "middle ground" test?
x264.exe --crf 19 --subme 4 --me hex --trellis 1 --progress --threads auto --thread-input --output "H:\test\base.264" "H:\test\input.avs"
I went for a slightly lesser subme to show how much improvement is given from boosting it, and vice versa for decreasing.. I'll go write up a list of settings to test according to how you say I should be doing it, then I'll post them here.
Well ideally the best way to do it would be to pick a bunch of settings:
High Speed: --subme 1 --me dia
Medium Speed: --subme 4 --me hex
Medium-Low Speed: --subme 6 --me hex
Low Speed: --subme 7 -- me umh
And for each of these, do a full test of additional settings. This consists of two things:
1) A test of adding them one at a time until they're all there.
2) A second test of adding only one at a time to test them individually.
The problem with your "baseline" is it doesn't even include bframes.
Plamen234
13th August 2007, 21:47
The PDF is a perfect model, I think.
Just repeating the YUVSOFT report with an updated version of x264 using the same sources is all what is needed to get an updated version.
Bouns: running the tests on some HD sources; only 720p and 1080p is enough
p.s.: no need of 3d charts, 2d work fine, as it is shown already
p.s.2: may be YUVSOFT will finish first :) just kidding, I really appreciate your enthusiasm
Sagekilla
14th August 2007, 02:43
The only trouble with that is I don't have access to YUVSoft's original sources. I'll have to find similar sources to their's to do so.
Plamen234
14th August 2007, 06:06
I'll try finding them, they have been used for this particular purpose for years in many other codec comparisons.
Theliel
14th August 2007, 14:25
I have all of them, but its imposible for me upload all samples. (limited ADSL).
anyway you can found some of them (maybe in lower res) here:
http://media.xiph.org/video/derf/
Sagekilla
14th August 2007, 22:03
Thanks, I'll get to work setting up the encodes now!
Little snag here, how exactly do I pipe the .y4m files to x264? I'm guessing through avisynth, but I can't seem to figure out what I'm supposed to do.
Theliel
14th August 2007, 23:14
i belive remember that x264 can acept y4m format directly. y4m are a raw yuv format with a header. anyway you can use rawsource plugin for avisynth:
rawsource("C:\foreman.y4m")
y4m file have already a header with pixel format and width/heigth
or
rawsource("C:\foreman.yuv,720,576,"UYVY")
with yuv sources you need to know width & heigth and pixel format of the source
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.