I just coded multithreaded b-frame's ME.
Patch (p- and b- together):
http://syskin.is.dreaming.org/smp2.patch
Binary (2 threads):
http://syskin.is.dreaming.org/xvidco...ads-bframes.7z
This time, output is not binary identical. This is by design - in theory, the more threads for b-frames the smaller encoder efficiency, however in practice the difference is nil (and up to ~1% bitrate for infinite number of threads).