Skip to content
libcamera v0.3.2

abi-compliance-checker reports 100% binary and source compatibility,
so this release does not change the SONAME.

  Binary compatibility: 100%
  Source compatibility: 100%
  Total binary compatibility problems: 0, warnings: 0
  Total source compatibility problems: 0, warnings: 0

bugs:

The following commits in this release relate to either a bug fix or
improvement to existing commit.

 - meson: Enable simple pipeline handler on all platforms by default
   - Fixes: 06e0d8508e5c ("libcamera: pipeline: simple: Enable intel-ipu6 with Soft ISP")
 - libcamera: udev: Catch udev notification errors
   - Bug: https://bugs.libcamera.org/show_bug.cgi?id=230
 - libcamera: Drop remaining file names from header comment blocks
   - Fixes: 829acb3ab0b1 ("libcamera: Drop file name from header comment blocks in templates")
 - Documentation: Fix link to introduction on mainpage.dox
   - Fixes: 860a3e30319c ("Documentation: Rework docs.rst into introduction.rst")
 - Documentation: Fix links from API references to guides
   - Fixes: e93886178106 ("Documentation: Improve doxygen main page")
 - pipeline: uvcvideo: Implement acquireDevice() + releaseDevice()
   - Bug: https://bugs.libcamera.org/show_bug.cgi?id=168

And the following updates have been made in this release, grouped by
category:

core:
 - libcamera: Avoid variable-length arrays
 - meson: Enable simple pipeline handler on all platforms by default
 - libcamera: base: Add MemFd helper class
 - libcamera: base: memfd: Handle uClibc compatibility with function wrapper
 - libcamera: shared_mem_object: Prevent memfd from shrinking or growing
 - libcamera: simple: Log a missing sensor in a better way
 - libcamera: ipa_proxy: Unify configurationFile argument name
 - libcamera: ipa_proxy: Report a missing configuration as a warning
 - libcamera: Remove spaces at end of lines
 - meson: Drop gcc 8 support
 - utils: checkstyle.py: Warn when no valid Signed-off-by line is found
 - libcamera: Drop path prefix from Doxygen file directive
 - libcamera: Make all internal headers visible to Doxygen
 - libcamera: Unify Doxygen file directive prefix for formats.h
 - libcamera: Mark internal parts of public classes with \internal
 - libcamera: Hide *::Private classes with __DOXYGEN_PUBLIC__
 - libcamera: Split public and internal source arrays
 - libcamera: Add version.h to public headers
 - libcamera: Drop libcamera_generated_ipa_headers from sources
 - libcamera: Move IPA headers to the libcamera_private dependency
 - libcamera: Consolidate all IPA headers in libcamera_ipa_headers
 - libcamera: Add missing headers to libcamera_internal_headers
 - libcamera: Consolidate tracepoint header in libcamera_internal_headers
 - libcamera: Don't add libcamera_public_headers to libcamera_public_sources
 - utils: checkstyle.py: Add author property to Commit class
 - utils: checkstyle.py: Validate SoB trailer against author
 - utils: checkstyle.py: Fix trailer parsing for commits with changelogs
 - libcamera: ipa_manager: Remove singleton requirement
 - libcamera: udev: Catch udev notification errors
 - libcamera: Add missing <stdint.h> include to base/file.h
 - libcamera: Add missing <stdint.h> include to internal/yaml_parser.h
 - libcamera: Fix header grouping
 - libcamera: formats: Adding Support for Y12P
 - utils: checkstyle.py: Rework commit message parsing
 - utils: checkstyle.py: Skip title and trailers checkers for pre-commit
 - utils: checkstyle.py: Add __repr__ method to Commit class
 - libcamera: simple: Fix a typo in a doc string
 - libcamera: camera: Hide Camera::create() from the public API
 - meson: Store controls and properties YAML files in variables
 - meson: Fix mismatch in controls and properties generated file names
 - libcamera: Drop remaining file names from header comment blocks
 - meson: Move all code generation scripts to utils/codegen/
 - meson: utils: Provide environment for Python scripts
 - utils: codegen: gen-header.sh: Generate libcamera.h based on meson.build
 - utils: codegen: gen-controls.py: Convert to jinja2 templates
 - utils: codegen: gen-controls.py: Move helper classes to separate file
 - libcamera: controls: Improve formatting of control descriptions in YAML
 - libcamera: pipeline_handler: Fix unlocking media devices too early
 - libcamera: pipeline_handler: Call releaseDevice() before unlocking media devices
 - libcamera: controls: Fix example for ExposureValue
 - utils: update-kernel-headers: Support relative path to kernel git tree
 - include: linux: Update headers for rkisp1 extensible parameters
 - libcamera: camera: Use invokeMethod() for pipe_->acquire() and pipe_->release()
 - libcamera: uvcvideo: Fix includes
 - libcamera: v4l2: Remove unused includes
 - libcamera: v4l2: Fix an include placement
 - libcamera: v4l2: Fix indirect include
 - libcamera: libcamera: Remove unused includes
 - libcamera: libcamera: Add missing includes
 - libcamera: libcamera: Formatting improvements
 - libcamera: includes: Add missing includes
 - libcamera: includes: Remove unused includes
 - libcamera: includes: Formatting improvements
 - utils: checkstyle: Add a python formatter
 - utils: checkstyle: Remove style checker for python pep8
 - libcamera: utils: Add ScopeExitActions class
 - libcamera: v4l2_videodevice: Improve readability
 - libcamera: media_object: Add MediaPad string representations
 - libcamera: media_object: Add MediaLink string representations
 - libcamera: media_device: Use MediaLink string helper
 - libcamera: yaml-parser: Add additional tests
 - libcamera: yaml-parser: Add failing test for unexpected behavior
 - libcamera: yaml-parser: Differentiate between empty and empty string
 - Document additional environmental variables

pipeline:
 - libcamera: software_isp: Remove file seal TODO item
 - libcamera: software_isp: Replace malloc() with std::vector<>
 - pipeline: rkisp1: Use the extensible parameters format
 - pipeline_handler: Add acquireDevice() function to mirror releaseDevice()
 - pipeline: uvcvideo: Implement acquireDevice() + releaseDevice()
 - libcamera: ipu3: Remove unused includes
 - libcamera: ipu3: Replace wrong include
 - libcamera: ipu3: Formatting improvements
 - libcamera: rkisp1: Remove unused includes
 - libcamera: rkisp1: Formatting improvements
 - pipeline: rkisp1: Use ScopeExitActions to simplify error handling in start
 - libcamera: pipeline: simple: Fix typos in match routing comment
 - pipeline: simple: Remove media member variable
 - libcamera: pipeline: simple: Use MediaLink string helper
 - libcamera: debayer_cpu: Sync DMABUFs

ipa:
 - ipa: libipa: camera_sensor_helper: Reference blackLevel() in documentation
 - ipa: libipa: Add missing CameraSensorHelper fn label in docs
 - ipa: rkisp1: Pass parameters buffer format to IPA module
 - ipa: rkisp1: Pass parameters buffer size to pipeline handler
 - ipa: rkisp1: Add ISP parameters abstraction class
 - ipa: rkisp1: Use the new ISP parameters abstraction
 - ipa: rkisp1: params: Add companding blocks
 - ipa: rkisp1: Add compand feature flag to ipa context
 - ipa: rkisp1: blc: Add support for BLS in compand
 - libcamera: libipa: Remove unused includes
 - libcamera: ipa: Remove unused includes
 - utils: ipc: Include <string> in generated headers where needed
 - libcamera: ipa: Drop unneded includes from ipa_interface.h
 - ipa: rpi: agc: Ignore stable region when exposure/gain set manually
 - ipa: rpi: Adding IMX283 support
 - libcamera: libipa: camera_sensor: Add IMX283 black level
 - ipa: libipa: Add generic Interpolator class
 - ipa: rkisp1: Use generic Interpolator class
 - ipa: rkisp1: Remove MatrixInterpolator
 - ipa: rkisp1: Use interpolator in lsc
 - ipa: rkisp1: Move loader functions into helper class
 - ipa: libipa: Add lsc polynomial class
 - ipa: rkisp1: Add sensor info to context
 - ipa: rkisp1: Add polynomial LSC loader
 - libcamera: libipa: camera_sensor: Add Sony IMX214 sensor properties

apps:
 - gstreamer: Fix width and height range handling
 - apps: qcam: Disable -Wextra-semi
 - gstreamer: Fix missing "greater than" symbol in author string
 - py: cam: Convert to PyQt6
 - py: gen-py-controls: Use Control class
 - py: gen-py-controls: Convert to jinja2 templates
 - v4l2: Support setting frame rate in the V4L2 Adaptation layer
 - qcam: Decrease minimum width of selector dialog
 - qcam: Drop Qt version checks
 - qcam: viewfinder_qt: Draw the letterbox background black
 - qcam: viewfinder_gl: Fix binding of vertex buffer and shader program
 - qcam: viewfinder_gl: Drop duplicate glClearColor()
 - qcam: viewfinder_gl: Render image centered in letterbox

documentation:
 - Documentation: Add Thread safety page
 - Documentation: Split doxygen_input in public and internal inputs
 - Documentation: Split public/private documentation
 - Documentation: Improve doxygen main page
 - Documentation: Add documentation-contents.rst
 - Documentation: Alphabetise the Documentation toctree
 - Documentation: Synchronise camera stack details
 - Documentation: Breakout docs.rst
 - Documentation: Remove libcamera architecture from introduction.rst
 - Documentation: Rework docs.rst into introduction.rst
 - Documentation: Rework index.rst
 - Documentation: Add internal-api-html placeholder
 - Documentation: Reformat documentation_contents.rst
 - Documentation: Rename "API" section to "API Reference"
 - Documentation: Drop local table of contents from introduction
 - Documentation: Rename "Documentation" section to "Introduction"
 - Documentation: Fix link to introduction on mainpage.dox
 - Documentation: Fix links from API references to guides

tuning:
 - utils: tuning: rkisp1: Clean up tuner construction
 - utils: tuning: Change Tuner.add() to accept a list of modules

test:
 - tests: Add a missing iostream include
 - test: ipa: libipa: Add tets for Interpolator

Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>