More sensible defaults and allow for overriding. Also make PDB installation
optional on Windows if RelWithDebInfo isn't the build type being used.
CMAKE_INSTALL_PREFIX defaults to GStreamer install location on Windows and
/usr/lib on other platforms.
PLUGIN_INSTALL_DIR defaults to CMAKE_INSTALL_PREFIX/gstreamer-1.0
LIBRARY_INSTALL_DIR defaults to CMAKE_INSTALL_PREFIX/
PDB_INSTALL_DIR defaults to CMAKE_INSTALL_PREFIX/
Some newer version of GStreamer requires the plugin name used in
GST_PLUGIN_DEFINE to match the name of the compiled module, excluding
libgst and the extension.
Previous way of creating caps left invalid colorimetry field 0:0:0:0,
which combined with a bug present in GStreamer 1.8 led to GRAY16_LE data
being corrupted when converted to GRAY16_BE (or vice versa). Current
method will properly initialize colorimetry field, avoiding this problem
in 1.8.
_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.
Even though NI-IMAQ can specify 10-, 12-, or 14-bit images, no other standard
element supports it, and in 0.11/1.0 caps are simplified to be gray8/gray16.
We can always add back custom caps if there is a real need for it.
Caused seg fault unless delay was introduced (e.g. with debugging messages
on). Still need to investigate why we don't get a timestamp before the
first frame.