Discussion:
[x264-devel] macroblock-level parallelism
liying (AN)
2018-11-06 06:16:20 UTC
Permalink
Hello,

I have studied x264 for a while and I noticed that x264 implemented frame-level and slice-level parallelism and didn't implement macroblock-level parallelism.
I have tried to implement the macroblock-level parallelism based on frame-level parallelism in analysis stage before entropy coding, but the result was very depressing.
The encoding speed is slower than that of encoding with frame-level threads only in default settings even if I don't care about the PSNR.
My question is that is it possible to accelerate x264 by exploring the macroblock-level parallelism? And I wonder Why x264 didn't do it?
Thank you!

Sophie
Guillaume POIRIER
2018-11-06 08:34:27 UTC
Permalink
Hello Sophie,
I have studied x264 for a while and I noticed that x264 implemented frame-level and slice-level parallelism and didn’t implement macroblock-level parallelism.
I have tried to implement the macroblock-level parallelism based on frame-level parallelism in analysis stage before entropy coding, but the result was very depressing.
The encoding speed is slower than that of encoding with frame-level threads only in default settings even if I don’t care about the PSNR.
My question is that is it possible to accelerate x264 by exploring the macroblock-level parallelism? And I wonder Why x264 didn’t do it?
I wouldn't be surprised if thread overhead is simply too big for such
"small tasks". Maybe you could see a slight speed improvement if you
switch to "slow" encoding profiles, since you'd increased the amount
of work done at the macroblock-level. Please use a decent profiler to
check how much time you waste on thread handling to check if my
guesses are right or wrong.

Guillaume
--
Wearing a Rolex is like driving an Audi: It says you've got some
money, but nothing to say.
John Lefèvre
Loading...