Skip to content
Tags give the ability to mark specific points in history as being important
  • v0.1.0
    668a5e67 · libcamera v0.1.0 ·
    libcamera v0.1.0
    
    ABI Compliance:
    
    abi-compliance-checker reports 99% binary compatibility and 81.4% source
    compatibilty between version 0.0.5 and 0.1.
    
     - Binary compatibility: 99%
     - Source compatibility: 81.4%
     - Total binary compatibility problems: 4, warnings: 2
     - Total source compatibility problems: 165, warnings: 7
    
    Now that we have funtional ABI validation, the soname has been updated from
    libcamera.so.0.0.5 to libcamera.so.0.1.
    
    Future releases will now maintain the same soname until an ABI breakage is
    detected to reduce the repackaging and rebuilding of other components that may
    use libcamera. The abi-compatibility report can now be generated with the new
    utility './utils/abi-compat.sh'.
    
    Key differences here are due to preventing the installation of internal and
    private headers in the packaging process, and most of this API compatibility
    should not be visible to applications with the exception of:
    
    - Camera::generateConfiguration ( StreamRoles const& roles )
    
      The StreamRoles type definition has been removed. This is now handled as a
      Span<StreamRole> to prevent unnecessary allocations and copies.
    
    - CameraManager::addCamera ( std::shared_ptr<struct Camera> camera, std::vector<unsigned long>const& devnums )
    - CameraManager::get ( dev_t devnum )
    - CameraManager::removeCamera ( std::shared_ptr<struct Camera> camera )
    
      These functions of the CameraManager were for use exclusively by the V4L2
      adaptation layer, and not intended for use by applications. This has now been
      reworked to use the new SystemDevices and the redundant functions removed.
    
    The ABI/API breakages have been introduced by:
    
      5ca0c9276f28 ("libcamera: CameraManager: Remove ::get(dev_t)")
      26a4b83d1b94 ("libcamera: Remove `StreamRoles` alias")
      63966ae587d7 ("libcamera: base: Do not install private headers")
    
    Core:
     - libcamera: v4l2_videodevice: Use O_CLOEXEC when exporting DMA buffers
     - libcamera: ipa_manager: Allow IPA loading in nested subdirs
     - meson: Fix usage of overwritten pipeline variable
     - subprojects: Drop leftovers of pybind11
     - camera_sensor: ipa: core: Add CFA pattern to IPACameraSensorInfo
     - libcamera: controls: Define a default lens position behaviour
     - libcamera: internal: request: convert to pragma once
     - libcamera: camera_manager: Move private implementation to internal
     - libcamera: camera_manager: Move {add,remove}Camera to internal
     - libcamera: properties: Provide a Devices camera property
     - libcamera: pipeline: Register device numbers with camera
     - libcamera: camera_sensor: Adjust properties::Rotation
     - libcamera: meson: Allow PH to change libcamera_deps
     - libcamera: base: Move thread_annotations to private
     - libcamera: base: Do not install private headers
     - utils: ABI Compatibility checker
     - meson: Use x.y soname versioning
     - libcamera: camera: Take span of StreamRole instead of vector
     - libcamera: Remove `StreamRoles` alias
     - utils: ipu3-capture.sh: Fix the script to work with recent media-ctl versions
     - Documentation: Add predefined macros from config.h to Doxyfile
     - utils: checkstyle: Add __repr__ method to CommitFile class
     - utils: checkstyle: Support running checkers selectively
     - utils: checkstyle: Don't include commit ID in commit title
     - utils: checkstyle: Add trailers checker
     - tests: gstreamer: Test cameras' enumeration from GstDeviceProvider
     - meson: Fix space around colon issues
     - libcamera: Add option to configure udev support
     - libcamera: CameraManager: Remove ::get(dev_t)
     - tests: gstreamer: Fix compiler error with gcc 8.4.0
    
    ipa:
     - meson: ipa: Add mapping for pipeline handler to mojom interface file
     - libcamera: ipa: Remove character restriction on the IPA name
     - ipa: meson: Allow nested IPA directory structures
     - ipa: raspberrypi: Introduce IpaBase class
     - ipa: raspberrypi: agc: Move weights out of AGC
     - ipa: rkisp1: agc: drop hard-coded analogue gain range
     - libipa: camera_sensor_helper: Add IMX327 helper
     - pipeline: rpi: ipa_base: Parse config files after platformRegister()
     - libcamera: camera_sensor: Add Sony IMX327 sensor properties
     - ipa: rpi: imx296: Small refinements to the IMX296 mono sensor tuning
     - ipa: rpi: Handle controls for mono variant sensors
     - libcamera: controls: Drop reference to IPA in controls documentation
     - libipa: camera_sensor_helper: Restore alphabetical order
     - ipa: ipu3: agc: Drop hard-codec analogue gain max
     - ipa: rkisp1: agc: Restore minimum analogue gain limit
     - pipeline: ipa: rpi: Return lens controls from ipa->configure()
     - ipa: rpi: Set lens position to hyperfocal on startup
     - ipa: rpi: tunings: Add missing short and long exposure profiles
     - ipa: rpi: agc: Use std::string instead of char arrays
     - ipa: rpi: agc: Gracefully handle missing agc modes
     - ipa: rpi: agc: Do not switch to a default if a mode is unavailable
     - ipa: rpi: imx708: Fix mode switch drop frame count
     - ipa: rpi: imx296_mono: Disable all colour shading
    
    pipeline:
     - libcamera: pipeline: simple: Add support for ST's DCMIPP
     - pipeline: meson: Allow nested pipeline handler directory structures
     - pipeline: ipa: raspberrypi: Refactor and move the Raspberry Pi code
     - pipeline: raspberrypi: rpi_stream: Set invalid buffer to id == 0
     - pipeline: ipa: raspberrypi: Restructure the IPA mojom interface
     - pipeline: raspberrypi: Make RPi::Stream::name() return const std::string &
     - pipeline: raspberrypi: Introduce PipelineHandlerBase class
     - pipeline: raspberrypi: Add stream flags to RPi::Stream
     - libcamera: rkisp1: Generate config using main path
     - libcamera: rkisp1: Crop on ISP before downscaling
     - libcamera: rkisp1: Assign sizes to roles
     - libcamera: rkisp1: Fix enumeration of RAW formats
     - pipeline: rpi: Do not return an error from pipeline config file handling
     - libcamera: pipeline: simple: Support TI CSI-RX
     - pipeline: rpi: Account for Bayer packing when validating format
    
    apps:
     - apps: qcam: Remove redundant check
     - v4l2: Move the v4l2 compat layer to libexec/libcamera
     - android: mm: generic: use GRALLOC_HARDWARE_MODULE_ID
     - android: mm: Stub libhardware for build tests
     - py: Fix CameraManager.version property
     - py: Move ColorSpace and Transform classes to separate files
     - py: Use exceptions instead of returning error codes
     - py: unittests.py: Add weakref helpers and use del
     - py: Move to mainline pybind11 version
     - py: Fix code formatting
     - py: unittests.py: Fix type checker warnings
     - gstreamer: Add enable_auto_focus option to the GStreamer plugin
     - gstreamer: Drop libcamera_private dependency
     - apps: Add ipa-verify application
     - v4l2: v4l2_camera_proxy: Prevent ioctl sign-extensions
     - v4l2: Use SystemDevices properties to identify cameras
    
    Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    
  • v0.0.5
    fb44403f · libcamera v0.0.5 ·
    libcamera v0.0.5
    
    Bugfixes:
    - meson: Ignore -Wredundant-move with gcc-13 and newer
    - cam: file_sink: Workaround gcc-13 dangling-reference false positive
    - libcamera: Open files with O_CLOEXEC
    - meson: Fix git version parsing
    - libcamera: camera_manager: Stop exponential explosive calls to createPipelineHandlers
    - py: cam: Fix demosaic overflow issue
    - libcamera: base: Make the registration of log categories atomic
    
    Core:
    - test: controls: control_info_map: Test default constructor
    - controls: guard ControlInfoMap against nullptr idmap_
    - device_enumerator_udev: Use std::string_view
    - formats: Add 14-bits Bayer RAW formats
    - device_enumerator_udev: Remove devnum from dependency map
    - meson: libcamera: Report IPA signature method
    - meson: Align handling of build metadata
    - converter: Check converter validity
    - Keep using syslog for isolated IPA modules
    - utils: ipc: Update parser.py
    - utils: checkstyle.py: Don't run commit title checker on staged commits
    - framebuffer: Allow inheritance of FrameBuffer
    - Remove transform from V4L2SubdeviceFormat
    - libcamera: camera_sensor: Add tryFormat()
    - camera_sensor: Fix typo in comment
    - camera_sensor: Demote flip support message to Debug
    - internal: tracepoints: Use correct include directive
    - libcamera: camera: Ensure queued requests are invalid
    
    ipa:
    - doc: Clarify IPA acronym in its namespace description
    - rkisp1: Add tuning files for PinephonePro sensors
    - rkisp1: Add tuning files for Google DRU "Scarlet" sensors
    - rkisp1: lsc: Fix integer division error
    - libipa: Add OV2685 Camera Sensor Helper
    - libipa: Add OV5647 Camera Sensor Helper
    - raspberrypi: agc: Add "shadows" constraint mode
    - raspberrypi: generalise algorithms
    - raspberrypi: Fix default frame durations calculation
    - raspberrypi: Ensure shutter speed and gain are clipped in the AGC
    - raspberrypi: Use the new sensor limits fields in CameraMode
    - raspberrypi: Add sensor mode limits to CameraMode
    - raspberrypi: Fix crash under LTO
    - raspberrypi: imx296: Minor tuning updates
    - raspberrypi: agc: Fix overflow in Y value calculation
    - raspberrypi: Better heuristics for calculating Unicam timeout
    - raspberrypi: Generalise statistics
    - raspberrypi: Change Unicam timeout handling
    
    pipeline:
    - simple: Validate transform
    - imx8-isi: Remove mbusCode from formatsMap_
    - imx8-isi: Automatically select media bus code
    - imx8-isi: Split Bayer/YUV config generation
    - imx8-isi: Break out RAW/YUV format selection
    - raspberrypi: Iterate over all Unicam instances in match()
    - raspberrypi: Add a Unicam timeout override config options
    - raspberrypi: Always use ColorSpace::Raw for raw streams
    - raspberrypi: Drop unused code
    - ipu3: Drop unused code
    
    apps:
     - cam: kms_sink: Drop unique_ptr<> from DRM::AtomicRequest
     - cam Return std::optional<> from StreamKeyValueParser::parseRole()
     - android: jpeg: Add JEA implementation
    
    ABI Compliance:
    
     * abi-compliance-checker reports 98.6% ABI and 100% API compatibility with
       with v0.0.4
    
      Total binary compatibility problems: 1, warnings: 1
      Total source compatibility problems: 0, warnings: 0
    
     - First virtual method ~__dt ( ) has been added to this class.
       1) The layout of type structure has been shifted by 8 bytes by the added v-table pointer.
       2) Size of class has been increased by 8 bytes.
    
    affected symbols: 6 (1.4%)
      FrameBuffer::releaseFence ( )
      FrameBuffer::setCookie ( uint64_t cookie )
      FrameBuffer::cookie ( )
      FrameBuffer::planes ( )
      FrameBuffer::request ( )
      FrameBuffer::metadata ( )
    
    This ABI breakage was introduced by:
      4843bfa66dc1 ("libcamera: framebuffer: Allow inheritance of FrameBuffer")
    
    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 ·
    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 ·
    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 ·
    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 ·
    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>
    
  • v0.0.0
    Repository creation