Changelog

Version 0.11.0

Changes

  • Lower the amount of V4L2 buffers needed and requested by default. This is to reduce the memory requirements.

  • In C++ allow const string format names for set_format and get_framerates.

Version 0.10.0

Changes

  • Allow floating point timeouts in get_frame(). Instead of only integer seconds.

Fixes

  • Fix some compile issues for different kernel versions.

Version 0.9.0

New

  • Added V4L2BusyException to signal EBUSY errors.

  • Added minimal support for newer V4L2 controls types, e.g. AV1 control types.

  • Now adding -qtec to the __version__ field if the module is built with Qtec headers.

Changes

  • No longer stop and restart stream in functions where it could be necessary for the function to succeed, rather let the user handle the exception.

Version 0.8.0

New

  • Add DeviceInfo to hold some V4L2 driver information for the device.

  • Exposure TriggerSequenceValue in non-Qtec builds.

Fixes

  • Add missing fields to BaseEvent.

  • Fix an issue with not freeing buffers if we fail to start the stream.

  • Allow opening a camera device without needing format IOCTLs to function.

  • Fix set_crop() to only do set_resolution() if necessary.

Version 0.7.3

New

  • Added device_info and DeviceInfo.

Fixes

  • Made the Camera constructor a bit more accepting of video devices that are not fully V4L2 compliant.

Version 0.7.2

Fixes

  • Fix duplicated line causing an import error.

Version 0.7.1

Fixes

  • Fix not being able to start the stream if starting the stream previously failed due to the device being busy.

Version 0.7.0

Changes

  • Do control name mapping for the keys of the dictionary returned by list_controls() and the control name arguments for get_control(), set_control(), get_controls(), and set_controls() will be mapped similarly to v4l2-ctl.

Fixes

  • Fix qamlib.ArrayControlValue.to_json() flattening JSON array, it now outputs the values in the correct dimensions.

  • No longer try to flip croppings if horizontal or vertical flip is set in set_control().

Version 0.6.0

Fixes

  • Fix list_controls() not getting updated control information at every call, since this information could be out of date.

  • Fix get_frame() not aborting on SIGINT (Ctrl-C) from Python.

Version 0.5.0

New

  • Added default_value argument to get_ext_control() and get_controls(), to make it possible to get the default value of extended controls.

Fixes

  • Fix FourCC’s not being stripped of trailing space.

Version 0.4.0

New

  • Added example of using the EventDevice class

Changes

  • Deprecate TriggerSequenceValue.add_sequence in favor of TriggerSequenceValue.add_exposure

  • Improved the C++ interface by adding namespaces and fixing the meson.build to work again and produce a static library.

    • Changed the get/set control functions to work better for C++

    • Made ArrayControlValue usable from C++ by using OpenCV’s Mat class to get and set the value.

Fixes

  • Fix get_framerate() to return fractional framerates (eg. 23.6)

Version 0.3.0

New

  • Implement buffering of frames.

    • Let user get a buffered frame with get_frame(buffered=True), get_frame() will still get the newest frame.

    • Add DroppedFrameException to signal if buffered=True and we detect that frames have been dropped. The exception can be disabled with Camera(overflow_exception=False)

    • A runtime_error will be thrown if we detect that qamlib can’t keep up with the driver

Version 0.2.0

New

  • Support multi-crop (Qtec builds)

  • Support extended controls (integer, string, array and trigger sequence)

    • Added functions get_ext_control and set_ext_control

    • Added functions get_controls and set_controls that allows getting/setting multiple controls at once.

    • Added support classes IntegerControlValue, StringControlValue, ArrayControlValue and TriggerSequenceValue.

  • Add to_json for data structures to allow JSON serialization

  • Support V4L2 events on a device, with new EventDevice class

    • Also added support classes (BaseEvent, ControlEvent and SourceEvent) for the events.

  • Added optional timeout to Camera.get_frame()

  • Add option of requesting a different amount of V4L2 buffers with a buffers=10 argument in constructors

Fixes

  • Fix flipping selections even when the value of the flip control does not change

  • Fix sometimes giving an old frame, when the stream is started again. When a frame from a previous stream start, was not retrieved (get_frame)

  • Fix FPS resolution not allowing fractional framerates, e.g. 19.3