Tags give the ability to mark specific points in history as being important
-
v0.5.2
aa0a91c4 · ·libcamera v0.5.2 The abi-compliance checker reports 100% compatibility in this release. As such the SONAME is maintained at 0.5. Binary compatibility: 100% Source compatibility: 100% Total binary compatibility problems: 0, warnings: 0 Total source compatibility problems: 0, warnings: 0 This release brings 129 commits with some substantial development on gstreamer for this release which is nice to see. In core we can see development that cleans up ProcessManager in a drive to reduce singleton patterns throughout libcamera. There's a new ClockRecovery class from Raspberry Pi which supports the new Wallclock timestamps metadata and provides the capablity for synchronising cameras across devices which will very exciting to see in the future. Pipelines are now able to limit the number of requests queued into the pipeline handler which helps prevent issues when applications desire to use a larger request queue. This is particularly beneficial to pipewire based applications it seems with longer processing queues. It's now possible to check if controls exist with new macros defined for every control to help codebases compile against multiple versions: - LIBCAMERA_HAS_$VENDOR_VENDOR_$MODE_$NAME And for developers we now have a b4-config file to support easily using the tool to send patche to the mailinglist! On the apps side, there's lots of development on Gstreamer, including fixing bayer formats for 10/12/14/16 bit depths. Both cam and gstreamer now report the camera properties in full with text representations of all the enum/properties. With the IPA components, Raspberry Pi includes development and updates to Autofocus and makes the maximum digital gain limits configurable. RKISP1 now has ExposureValue control implemented using exposure compensation in the agc_mean_luminance implementation. The ST vd56g3 camera sensor support is added for both RPi and libipa platforms. For Pipeline Handlers notable updates include the imx8-isi being fixed for newer generation chips from NXP adding multi-camera support, and Wallclock timestamp support added to Rapsberry Pi. Finally, on the documentation side - a notable change is the update to use spinhx-doxylink. This should prevent stale links being used in the documentation pages but adds an extra tool to the dependencies for building the documentation. Contributors: 27 Barnabás Pőcze <barnabas.pocze@ideasonboard.com> 23 Laurent Pinchart <laurent.pinchart@ideasonboard.com> 17 Stefan Klug <stefan.klug@ideasonboard.com> 12 David Plowman <david.plowman@raspberrypi.com> 10 Naushir Patuck <naush@raspberrypi.com> 9 Nick Hollinghurst <nick.hollinghurst@raspberrypi.com> 7 Umang Jain <uajain@igalia.com> 5 Antoine Bouyer <antoine.bouyer@nxp.com> 5 Benjamin Mugnier <benjamin.mugnier@foss.st.com> 3 Jaslo Ziska <jaslo@ziska.de> 2 Daniel Scally <dan.scally@ideasonboard.com> 2 Kieran Bingham <kieran.bingham@ideasonboard.com> 1 Christian Rauch <Rauch.Christian@gmx.de> 1 Han-Lin Chen <hanlinchen@chromium.org> 1 Harvey Yang <chenghaoyang@chromium.org> 1 Hou Qi <qi.hou@nxp.com> 1 Milan Zamazal <mzamazal@redhat.com> 1 Nícolas F. R. A. Prado <nfraprado@collabora.com> 1 Paul Elder <paul.elder@ideasonboard.com> 143 files changed, 6004 insertions(+), 1620 deletions(-) Integration overview: The following commits in this release relate to either a bug fix or an improvement to an existing commit. - pipeline: imx8-isi: Cosmetic changes - Fixes: 680cde600509 ("libcamera: imx8-isi: Split Bayer/YUV config generation") - pipeline: imx8-isi: Fix match returned value in error case - Fixes: 0ec982d21086 ("libcamera: pipeline: Add IMX8 ISI pipeline") - gstreamer: Replace NULL with nullptr - Reported-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> - libcamera: base: Fix log level parsing when multiple categories are listed - Fixes: 24c2caa1c1b3 ("libcamera: base: log: Use `std::string_view` to avoid some copies") - libcamera: pipeline: uvcvideo: Silently ignore `AeEnable` - Fixes: ffcecda4d5b9b5 ("libcamera: pipeline: uvcvideo: Report new AeEnable control as available") - ipa: rpi: Defer initialising AF LensPosition ControlInfo and value - Bug: https://bugs.libcamera.org/show_bug.cgi?id=258 - subprojects: libpisp: Update to 1.2.1 - Bug: https://github.com/raspberrypi/libpisp/pull/43 - ipa: rpi: Fix bug in AfState reporting - Fixes: ea5f451c5660 ("ipa: rpi: controller: AutoFocus bidirectional scanning") - libcamera: base: bound_method: Move return value - Bug: https://bugs.libcamera.org/show_bug.cgi?id=273#c1 - libcamera: camera: Fix up the AeEnable control during Camera::start() - Fixes: 7abd4139051c ("libcamera: camera: Pre-process AeEnable control") - libcamera: Put buffer back to V4L2BufferCache when VIDIOC_QBUF fails - Fixes: cadae67e4578 ("libcamera: v4l2_videodevice: Add FrameBuffer interface") - utils: codegen: ipc: Check `ipc_` instead of `isolate_` - Bug: https://bugs.libcamera.org/show_bug.cgi?id=276 - libcamera: camera: Do not call `generateConfiguration()` synchronously - Bug: https://bugs.libcamera.org/show_bug.cgi?id=273 - meson: Update subprojects .gitignore - Fixes: a29c53f6a646 ("meson: Use libyaml wrap file from wrapdb") And the following updates have been made in this release, grouped by category: core: - libcamera: base: log: Take `LogCategory` by reference - libcamera: base: Fix log level parsing when multiple categories are listed - libcamera: process: Use `pid_` member to decide if running - libcamera: process: start(): Use span instead of vector - libcamera: process: closeAllFdsExcept(): Take vector by value - libcamera: process: Move `closeAllFdsExcept()` - libcamera: process: Use `close_range()` when available - libcamera: process: Remove `ProcessManager` singleton - libcamera: process: Disable copy/move - libcamera: process: Misc. cleanup around `execv()` - libcamera: process: Return error if already running - libcamera: process: Ensure that file descriptors are nonnegative - libcamera: framebuffer: Add FrameMetadata::Status::FrameStartup - libcamera: Add ClockRecovery class to generate wallclock timestamps - libcamera: controls: Revert incorrect SPDX removal - libcamera: controls: Remove hyphenation in control description text - libcamera: controls: Use nanoseconds units for FrameWallClock - libcamera: delayed_controls: Inherit from Object class - libcamera: pipeline_handler: Move waitingRequests_ into camera class - libcamera: pipeline_handler: Allow to limit the number of queued requests - libcamera: base: bound_method: Move return value - libcamera: controls: Generate macro for each control - libcamera: camera: Fix up the AeEnable control during Camera::start() - libcamera: Put buffer back to V4L2BufferCache when VIDIOC_QBUF fails - libcamera: camera_manager: Log info message to report camera creation - libcamera: v4l2_videodevice: Add color space to format string representation - libcamera: Drop remaining file names from header comment blocks - libcamera: control_serializer: Accept empty `ControlList` - libcamera: camera: Do not call `generateConfiguration()` synchronously - libcamera: utils: Add scope_exit class - libcamera: v4l2_videodevice: Use scope_exit - libcamera: camera_sensor_properties: Add vd56g3 camera sensor - libcamera: base: bound_method: Forward arguments when possible - meson: Use libyaml wrap file from wrapdb - meson: Update subprojects .gitignore - pipeline: v4l2_subdevice: Add color space to format string representation - utils: gen-debug-controls: Remove line number from control description - utils: gen-debug-controls: Fix handling of controls that appear multiple times - utils: gen-debug-controls: Improve log output - utils: codegen: ipc: Check `ipc_` instead of `isolate_` - controls: Add FrameWallClock control - controls: Add camera synchronisation controls for Raspberry Pi - camera_sensor: Expand on computeTransform() documentation - subprojects: libpisp: Update to 1.2.1 - V4L2VideoDevice: Call FrameBuffer::Private::cancel() in streamOff() - camera: Fix spell error - b4: Add .b4-config - package: Drop Gentoo ebuild apps: - android: camera_device: Do not pass `nullptr` to `Request::addBuffer()` - apps: common: image: Fix assertion - apps: cam: Print enum string for camera properties - apps: lc-compliance: Replace manual include guard with pragma once - qcam: Silence false positive warnings with Qt 6.9.0 and newer - gstreamer: Document improvements when updating minimum GStreamer version - gstreamer: Factor out video pool creation - gstreamer: Reduce indentation in gst_libcamera_create_video_pool() - gstreamer: Rename variable in gst_libcamera_create_video_pool() - gstreamer: Fix leak of GstQuery and GstBufferPool in error path - gstreamer: Drop incorrect unref on caps - gstreamer: Replace NULL with nullptr - gstreamer: Fix libcamerasrc responding latency before setting caps - gstreamer: Use std::exchange() instead of g_steal_pointer() - gstreamer: Make format_map[] const - gstreamer: Fix reconfiguration condition check - gstreamer: Log and check adjusted camera configuration - gstreamer: Enable bayer formats with 10/12/14/16 bits - gstreamer: Split value_set_rectangle() GValue helper - gstreamer: Move existing GValue helpers to gstreamer-utils - gstreamer: Report camera properties as device properties ipa: - ipa: rpi: Replace dropFrameCount in the IPA -> PH interface - ipa: rpi: Rename dropFrameCount_ to invalidCount_ - ipa: rpi: Initialize enum controls with a list of values - ipa: rpi: Defer initialising AF LensPosition ControlInfo and value - ipa: rpi: controller: Improve findPeak() function in AF algorithm - ipa: rpi: controller: AutoFocus weighting tweak - ipa: rpi: controller: Autofocus CAF/PDAF stability tweak - ipa: rpi: controller: AutoFocus tweak earlyTerminationByPhase() - ipa: rpi: controller: Autofocus to use AWB statistics; re-trigger - ipa: rpi: controller: AutoFocus bidirectional scanning - ipa: rpi: Update IMX708 camera tuning files for AutoFocus changes - ipa: rpi: Fix bug in AfState reporting - ipa: rpi: agc: Change handling of colour gains less than 1 - ipa: rpi: agc: Make the maximum digital gain configurable - ipa: rpi: agc: Rename "analogue gain" to "gain" where appropriate - ipa: rpi: Advance the delay context counter even when IPAs don't run - ipa: rpi: agc: Calculate digital gain in process() - ipa: rpi: Update digital gain handling in IPA base and derived classes - ipa: rpi: agc: Remove digital gain from AgcPrepareStatus - ipa: rpi: Fix static initialisation order bug in the Controller - ipa: rpi: Add vd56g3 support for rpi - ipa: rpi: Add vd56g3 tuning files for rpi - ipa: rkisp1: Move Sharpness control creation to Filter algorithm - ipa: rkisp1: agc: Implement ExposureValue control - libipa: pwl: Improve documentation - libipa: pwl: Fix single point Pwl - libipa: agc_mean_luminance: Add debug logging - libipa: agc_mean_luminance: Add exposure compensation support - libcamera: libipa: Add vd56g3 support for libipa pipeline: - pipeline: ipa: rpi: Split RPiCameraData::dropFrameCount_ - pipeline: rpi: Remove disable_startup_frame_drops config option - pipeline: rpi: Remove ispOutputCount_ and ispOutputTotal_ - pipeline: rpi: Add wallclock timestamp support - pipeline: rpi: Fix for enumerating the media graphs - libcamera: pipeline: rpi: Do not set timestamps to 0 if unavailable - libcamera: pipeline: rpi: Do not clear request metadata anymore - pipeline: imx8-isi: Cosmetic changes - pipeline: imx8-isi: Fix match returned value in error case - pipeline: imx8-isi: Dynamically compute crossbar subdevice's first source. - pipeline: imx8-isi: Add constexpr for maximum pipeline and resize if needed - pipeline: imx8-isi: Add multicamera support - libcamera: pipeline: uvcvideo: Silently ignore `AeEnable` - libcamera: pipeline: uvcvideo: Handle controls during startup - pipeline: rkisp1: Limit the maximum number of buffers queued in - pipeline: rkisp1: Properly handle the bufferCount set in the stream configuration - libcamera: pipeline: rkisp1: Don't rely on bufferCount - libcamera: software_isp: Remove type casts in statistics computation - pipeline: simple: Fix matching with empty media graphs - libcamera: mali-c55: Set bytesused appropriately - libcamera: mali-c55: Correct expected entity function test: - libcamera: test: Add a failing test for the log level parser - test: libtest: CameraTest: Set env var before CameraManager - test: ipa: Add basic Pwl test - test: ipa: Add failing test for single point Pwl documentation: - Documentation: Make `doxygen-internal` depend on public inputs - Documentation: application: Update mediactl URL - Documentation: Remove unneeded options from Sphinx configuration - Documentation: Drop documentation author names - Documentation: Use Sphinx doxylink to generate links to doxygen - Documentation: Replace links to Doxygen documentation with doxylink Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> -
-
v0.0.4
6cf637eb · ·libcamera v0.0.4 Bugfixes: * libcamera: yaml_parser: Use C locale * libcamera: base: utils: Support C libraries lacking locale support * py: cam.py: Fix duplicate metadata output if more than one stream * libcamera: camera: Fix validateColorSpaces to choose main colour space * pipeline: raspberrypi: Fix handling of colour spaces Core: * test: Fix/Enable testing with ASan * test: Remove redundant pipeline tests * meson: Only build pipeline handlers needed in host architecture * meson: Add 'all' choice to pipelines option * utils: checkstyle.py: Add commit title checker * libcamera: ipa_module: Relax ipaModuleInfo symbol size check * pipeline: Support configuration file paths ipa: * camera_sensor: Improve h/v flip handling * camera_sensor: Add AR0521 Sensor support * camera_sensor: Add OV4689 Sensor support * camera_sensor: Add support for OmniVision OV8858 * raspberrypi: Support Autofocus with PDAF * raspberrypi: Support for the Sony IMX708 sensor * rkisp1: Raise maximum analogue gain pipeline: * raspberrypi: Support parameters from a configuration file * raspberrypi: Add a parameter to disable startup drop frames * libcamera: rkisp1: Add support for Transform apps: * gstreamer: Add bayer8 support to libcamerasrc * qcam: Show string representation of pixel format ABI Compliance: * abi-compliance-checker reports 100% ABI and API compatibility with with v0.0.3 Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-
v0.0.3
f66a5c44 · ·libcamera v0.0.3 Key bug fixes: * Segfault in the ContolInfo() constructor for an empty V4L2 menu Bug: https://bugs.libcamera.org/show_bug.cgi?id=167 Fix: libcamera: v4l2_device: Workaround faulty control menus This resolves and prevents crashes that have occured in Pipewire when users connect poorly implemented UVC devices. ABI Compliance: abi-compliance-checker reports 100% ABI and API compatibility with with v0.0.2, however 81e7689bb168 ("libcamera: stream: Turn StreamRole into scoped enumeration") modifies an enum into a class enum. This may need minor updates to applications, and didn't appear to be picked up by abi-compliance-checker. - See https://git.libcamera.org/libcamera/libcamera.git/commit/?id=81e7689bb168a for more details. Highlights: Core: * Fix tracing when built as a subproject * Avoid double map lookups in framebuffer_allocator * Workaround faulty control menus * controls: Change LensPosition units to dioptres * camera_sensor: Add IMX519 sensor properties * Documentation: contributing: Add commit message guidelines * Declare generic converter interface utils: * Add libtuning * Add initial libtuning script support for rkisp1 and raspberrypi. * checkstyle.py: Check new header file on new and renamed meson.build files ipa: * Move IPA sensor controls validation to CameraSensor (IPU3/RKISP1) rkisp1: * Support FrameDurationLimits control for FrameRate management * Support raw capture (IPA, configuration, and runtime) * Add support for manual gain and exposure * Fix stream size validation * Add additional default values to controls imx8-isi: * Enumerate supported stream formats * Set SensorTimestamp metadata Raspberry Pi: * Remove generic "pause" mechanism from Algorithm - Remove enum BuffferMask from the mojom interface - Fix digital gain calculations for manual mode - Fix bug in IPA frame drop logic - imx477: Update tuning file for the latest camera modules - Add a "scientific" tuning for the IMX477 Apps: - cam: kms: Avoid 'unused-parameter' warnings - cam: Support parsing array controls in capture scripts - gstreamer: Improve control id lookups - lc-compliance: simple_capture: Free Requests properly python: - Support controls that use an array of Rectangles - Expose the Request Sequence Number in Python Bindings test: - Validate CameraSensor Ancillary Devices (focusLens) - controls: control_info: Test default def() values Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> -
v0.0.2
2b1e1cd1 · ·libcamera v0.0.2 This release contains all the work merged to libcamera over the last 5 weeks, including the following summary highlights: Highlights: Core: * New pipeline handler for the IMX ISI * Fixed memory leak in the logging infrastructure * Fixed meson support for 0.56 * Additional Thread Safety annotations added throughout * Add a release method to pipeline handlers to support freeing resources when a camera is released, but not deleted. * Group test applications under src/apps * Make libdl optional to support Android builds Application layers: * Added DNG File output to cam * Fixes for building against Android * gstreamer framerate control and negotiation IPA: * Support setting metadata directly from (libipa) algorithms * Set AGC and AWB metadata for both RKISP1 and IPU3. * Support for enum serialization and Flags * Support multiple lens shading tables for different colour temperatures on RKISP1/i.MX8MP. Raspberry Pi IPA: * Full line length control * Better HBLANK synchronisation and full line length control * Support ov9281 as ov9281_mono * Update colour temperature whenever manual gains change abi-compliance-checker tells me that this release is 100% abi compatible with v0.0.1. Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-
v0.0.1
a83aed77 · ·libcamera v0.0.1 This patch release commences the package release procedures for the project. Initial releases will include a bump to the patch (0.0.x) version number, as well as a corresponding increment to the soname. Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>