• AnyStream is having some DRM issues currently, Netflix is not available in HD for the time being.
    Situations like this will always happen with AnyStream: streaming providers are continuously improving their countermeasures while we try to catch up, it's an ongoing cat-and-mouse game. Please be patient and don't flood our support or forum with requests, we are working on it 24/7 to get it resolved. Thank you.

H264 AVC mencoder threads example and feature request...

AtTheAsylum

Well-Known Member
Thread Starter
Joined
Jan 17, 2008
Messages
56
Likes
0
Hi all,

For the last couple of hours I've been experimenting with mencoder from the command line - trying out a few options encoding to H264 AVC video.

One thing I discovered was that x264 codec accepts a 'threads' parameter - so I tried a couple quick of experiments :) I used a short DVD segment (1 chapter from the movie Solaris ;) 2 mins 19 secs long) and encoded on my laptop (Core 2 Duo 1.83 Ghz).

Default settings (ie: very similar to PS3 profile in CD-M):
Code:
mencoder.exe dvd:// -dvd-device d:\demodvd -af volume=10 -aspect 16:9 -of avi -noodml -ovc x264 -x264encopts bitrate=1000:level_idc=41:bframes=3:frameref=2:nopsnr:nossim:pass=1 -vf scale=320:180,harddup -info name="TEST" -alang en -oac copy -o NUL -passlogfile x264pass.log

Time to encode: 1 min 17 secs.
CPU usage (Windows Task Manager): 50%
Threads (Windows Task Manager): 1
Frames per sec: 50.

2 threads:
Code:
mencoder.exe dvd:// -dvd-device d:\demodvd -af volume=10 -aspect 16:9 -of avi -noodml -ovc x264 -x264encopts bitrate=1000:level_idc=41:bframes=3:frameref=2:nopsnr:nossim:pass=1:threads=2 -vf scale=320:180,harddup -info name="TEST" -alang en -oac copy -o NUL -passlogfile x264pass.log

Time to encode: 37 secs.
CPU usage: 90%+
Threads: 2
Frames per sec: 95

Auto threads:
Code:
mencoder.exe dvd:// -dvd-device d:\demodvd -af volume=10 -aspect 16:9 -of avi -noodml -ovc x264 -x264encopts bitrate=1000:level_idc=41:bframes=3:frameref=2:nopsnr:nossim:pass=1:threads=auto -vf scale=320:180,harddup -info name="TEST" -alang en -oac copy -o NUL -passlogfile x264pass.log

Time to encode: 37 secs
CPU usage: 90%+
Threads: fluctuates between 1 and 5.
Frames per sec: 95

I don't have access to a full DVD at the moment so I can't perform a 'real' test but these results look very interesting. When you consider that currently it can take upwards of 8 hours to encode a DVD to H264 AVC.

Also, this seems (on my system anyway) to work a whole lot better than the 'threads' option when creating DivX's (using lavc). There is a definite speed increase when using x264, whereas there is no speed increase when using lavc (although, as pointed out by 'profcolli', the 'threads' option in lavc does spread the load a lot more evenly across cores).

Another point - the encoding speed (in my quick tests) approached that of DivX and XviD. 125 and 110 frames per sec respectively.

Note: Since this is the first pass all the examples above dump the output to NUL (ie: no output file is created). Second pass, where output is dumped to and AVI, achieve the same results (ie: encode times are the same as above).

The problem is that if I add the 'threads' option to the '-x264encopts' in an appropriate profile in CD-M it seems to be ignored :(

My request to the developers: please enable the 'auto' threads option by default when encoding to H264 AVC using the x264 codec.

Fantastic product BTW - Licensed my copy today :)

Edit: Ran some more tests on my sample using a higher bitrate (3000) and resolution (852x480). I still saw a two-fold increase in performance using threads=2 when encoding to H264 AVC - 10 fps (1 thread) versus 20 fps (2 threads). At the same resolution DivX achieved 75 fps and Xvid 25 fps. All results are from the second pass.
 
Last edited:
Back
Top