_create often locks the mutex before the start_frame_callback, resulting
in bad timestamps. Also an estimated duration causes d3dvideosink to give
poor display, so comment this out for now.
Drop the mutexes and special struct, just create ring buffer of
GstClockTimes. Also rely on callbacks for start/stop of acquisition.
The absolute date-timestamps need to be corrected for the first buffer
timestamp.
Unfortunately IMAQ only lets you examine one buffer at a time, and elements
like queue store up multiple buffers, so avoid-copy=TRUE can only be used in
pipelines without queues or other such elements.
Also, make property strings static.
Previously if the row stride wasn't a multiple of 4, display would not work
correctly. Rely on NI-IMAQ to fix the byte alignment for us. This hasn't
been thoroughly tested yet however.