As I understand it, Hydrogen doesn't have a fast enough flame front to work in a lower compression piston engine. at so many rpms it just burns so slowly that the expansion in the cylinder is slower than the engine is working, so you're overrunning your fuel.
Under extremely high compression the hydrogen actually decomposes, the efficiency goes through the roof, the flame front dissapeares and the pistons turn into shrapnel. BOOM!!
So the proposed solution is to use a improvement of the Wankel rotary three chamber engine. That's what they put in the Mazdas I think. A rotary engine works on the same basic pronciples as a gear oil pump. you bring in air and as the engine rotates the chamber gets smaller and smaller. At the point of highest compression, you inject fuel, and the expansion rotates the engine. There is no linear motion to convert so you don't have to worry about breaking cranks, no rods, no pistons no valves to float.
I believe it's Duke University that's working on a prototype, but I'll try to find and post a link. It explains it much better that me.