I've done opencvc++ moving-object counting and have a library (libobjectcounter) that I would use, possibly enhancing the tracking portion with a new opencv c++ tracking library I have create (libmultitracker).
The conditions of your test video seems to be perfect for a tracking demo: there was enough light to see clearly, but mid-day and overcast so that shadows were very minor. He seemed to be tracking after detecting motion (for a highway road lane, that would be looking for motion in one area, then tracking (using something like camshift, tld, or ct, etc) that object until it crosses the counter line. The size of the tracked object, as it crossed the counting line, appears to be how he determined the category (car / small truck / big truck).
So I think by building on my existing tracking and counting opencv c++ libraries, and with optimal camera placement, decent resolution and frame rate, and cooperative outdoor lighting and time of day (like your test video), I could achieve performance comparable to what we see there.
I'm in the middle of another opencv project, so it would be a few weeks from now until I could devote significant hours to this project (so I said 30 days).