[libcamera-devel] libcamera v0.2.0
Kieran Bingham
kieran.bingham at ideasonboard.com
Tue Jan 9 18:37:50 CET 2024
libcamera v0.2.0 release has been tagged and pushed:
Please note that this contains ABI, and API changes that will need
attention for anyone migrating to this new version.
Archives are available from:
- https://gitlab.freedesktop.org/camera/libcamera/-/releases/v0.2.0
## ABI Compliance
abi-compliance-checker reports 94.6% binary compatibilty and 97.6%
source compatibility between 0.1.0 and 0.2.0. The SONAME has been
updated accordingly and applications must be relinked against this
version of libcamera.
- Binary compatibility: 94.6%
- Source compatibility: 97.6%
- Total binary compatibility problems: 5, warnings: 2
- Total source compatibility problems: 3, warnings: 3
The key ABI/API differences here are:
- AeFlicker
The control "SceneFlicker" has been removed and replaced by
AeFlickerMode, AeFlickerDetected and AeFlickerPeriod.
- struct CameraConfiguration
- Field transform has been removed from the middle position of this
structural type.
- Field orientation has been added at the middle position of this
structural type.
- Field sensorConfig has been added at the middle position of this
structural type.
- Size of this type has been changed from 40 bytes to 96 bytes.
## Bugs
The following bugs are resolved with this release:
https://bugs.libcamera.org:
- Bug 91 - libcamerasrc is missing EOS handling
- Bug 199 - Install error on Ubuntu for Orange Pi 5
- Bug 205 - ipa_proxy_worker.cpp fails to compile if an interface
function has two arguments of SharedFD type
- Bug 206 - Fails to build with Python 3.12
https://github.com/raspberrypi/libcamera/issues:
- Assertion '!this->empty()' failed in libcamera::utils::Duration -
libcamera-tools 0.0.5-1 #64
## Integration overview
core:
- utils: checkstyle.py: Treat Malformed trailers as a CommitIssue
- utils: checkstyle.py: Initialise staged trailers
- utils: checkstyle.py: Derive Amendment from Commit
- utils: checkstyle.py: Check trailers for Amendment commits
- libcamera: controls: Add controls for AEC/AGC flicker avoidance
- libcamera: yaml: Increase the YAML parser limit
- utils: checkstyle.py: Extract title and trailers with one command
- meson: Correctly locate libc++
- Documentation: theme: Fix compilation with Sphinx >= 7.0.0
- libcamera: Remove duplicated SortIncludes in `.clang-format`
- libcamera: stream: Document stride will be 0 for compressed formats
- README.rst: Drop recommendation to install meson using pip3
- meson: Don't set _FORTIFY_SOURCE for ChromeOS
- meson: Simplify check for _FORTIFY_SOURCE
- libcamera: formats: Fix typo in YV444 V4L2PixelFormat listing
- Documentation: Introduce Camera Sensor Model
- libcamera: camera: Introduce SensorConfiguration
- libcamera: camera_sensor: Support SensorConfiguration
- libcamera: converter: A few fixes to ConverterFactoryBase documentation
- libcamera: converter: drop unnecessary #include directive
- utils: update-kernel-headers: Support git worktrees
- libcamera: camera_sensor: Cache rotationTransform_
- libcamera: camera: Introduce Orientation
- Documentation: Add figures to document Orientation
- libcamera: properties: Make 'Rotation' the mounting rotation
- libcamera: transform: Add functions to convert Orientation
- libcamera: transform: Invert operator*() operands
- libcamera: transform: Add operations with Orientation
- test: Add unit test for Transform and Orientation
- libcamera: Use CameraConfiguration::orientation
- libcamera: camera_sensor: Cache mounting orientation instead of transform
- libcamera: transform: Fold transformToOrientation() in its only caller
- libcamera: transform: Make the transformFromOrientation() function static
- libcamera: controls: Add controls for HDR
- libcamera: camera_sensor: Only access V4L_CID_HBLANK if existing
- Documentation: Add code of conduct
- Documentation: code-of-conduct: Convert to reStructuredText
- Documentation: code-of-conduct: Add license information
- Documentation: code-of-conduct: Add contact information
- Documentation: contributing: Integrate the code of conduct
- README.rst: Use code directive for all code examples
- Documentation: Fix list indentation
- controls: Add vendor control/property support to generation scripts
- controls: Update argument handling for controls generation scripts
- build: controls: Rework how controls and properties are generated
- libcamera: control: Add vendor control id range reservation
- libcamera: controls: Use vendor tags for draft controls and properties
- documentation: Document vendor specific controls and properties handling
- README.rst: Drop indirect dependencies on Qt5 packages
- README.rst: Document dependencies for the Python bindings
- meson_options: Sort options alphabetically
- meson: Tag all installed files
- test: log: log_process: Log an error when failing due to incorrect message
- test: log: log_process: Fix uninitialized variable on process exit failure
- test: log: log_process: Improve debugging on process exit failures
- test: log: log_process: Increase process exit timeout
- test: ipc: unixsocket: Increase process exit timeout
- test: gstreamer: Remove videoconvert element from pipeline
- README.rst: Add missing libgtest-dev dependency for lc-compliance
- meson: Replace hack with usage of '@BASENAME@'
- libcamera: camera: Fix unused variable compiler warning
- Documentation: camera-sensor-model: Support Sphinx < 2.0
- libcamera: camera_sensor: Add OV64A40 sensor properties
- utils: ipc: Fix deserialization of multiple fd parameters
- libcamera: device_enumerator: ensure deviceNode is not empty
- utils: ipc: mojom_libcamera_generator.py: Fix Python warning
- libcamera: framebuffer_allocator: Remove unnecessary `clear()`
- hooks: pre-push: Disable interpretation of escape sequences
- libcamera: geometry: Correct doxygen reference to classes
- utils: update-mojo.sh: Properly remove old sources
- utils: update-mojo.sh: Exit immediately on error
- utils: update-mojo.sh: Change to the libcamera source directory
- utils: update-mojo.sh: Reject a dirty libcamera tree
- utils: update-mojo.sh: Commit the mojo update
- utils: ipc: generate.py: Add bindings directory to Python path
- utils: ipc: generate.py: Disable attributes checker
- utils: ipc: Update mojo
pipeline:
- libcamera: rpi: pipeline_base: Remove populateSensorFormats()
- libcamera: rpi: pipeline_base: Move findBestFormat to CameraData
- libcamera: rpi: pipeline_base: Cache sensor format
- pipeline: rpi: Don't call toV4L2DeviceFormat() from validate()
- pipeline: rpi: Increase buffer import count to 32
- pipeline: rpi: Remove additional external dma buf handling logic
- pipeline: rpi: Rename RPi::Stream::setExternalBuffer()
- pipeline: rpi: Simplify buffer id generation
- pipeline: rpi: Reset the frame lengths queue during configure
- libcamera: rpi: Handle SensorConfiguration
- libcamera: rpi: Allow platformValidate() to adjust format strides
- libcamera: rpi: Fix wrong comment indentation
- libcamera: rpi: Make isRaw/isYuv/isRgb static functions
- libcamera: rpi: Cache rawStreams and outStreams
- libcamera: rpi: Add some helpers to PipelineHandlerBase
- libcamera: rpi: Simplify validate() and configure() for RAW streams
- libcamera: rpi: Change default stream formats
- libcamera: rpi: Simplify validate() and configure() for YUV/RGB streams
- pipeline: rpi: Add RequiresMmap flag to RPi::Stream
- pipeline: rpi: Add Recurrent and Needs32bitConv flags to RPi::Stream
- pipeline: rpi: Add SharedMemObject class
- pipeline: rpi: Add SW downscale status to RPi::Stream
- pipeline: rpi: Move flip handling validation code
- pipeline: rpi: Make color space members in RPiCameraConfiguration public
- pipeline: rpi: vc4: Allocate more embedded data buffers
- pipeline: rpi: Remove unused variable
- pipeline: rpi: vc4: Fix drop frame bug when no ISP streams are configured
- pipeline: rpi: Add some useful logging messages
- libcamera: pipeline: Fix c++20 compile warning
- pipeline: rpi: Respect provided stride
ipa:
- ipa: rpi: common: Handle AEC/AGC flicker controls
- utils: raspberrypi: ctt: Improved color matrix fitting
- ipa: rpi: vc4: data: Updated color matrices for RPi Cameras
- utils: raspberrypi: ctt: Code tidying
- ipa: rpi: Fix the reporting of Focus FoMs
- ipa: rpi: imx290: Hide one frame on startup
- ipa: rpi: agc: Fetch AWB status in process method, not prepare
- ipa: rpi: agc: Filter exposures before dealing with digital gain
- ipa: rpi: agc: Split AgcStatus into AgcStatus and AgcPrepareStatus
- ipa: rpi: vc4: Make the StatisticsPtr construction clearer
- ipa: rpi: histogram: Add interBinMean()
- ipa: rpi: agc: Reorganise code for multi-channel AGC
- ipa: rpi: agc: Implementation of multi-channel AGC
- ipa: rpi: agc: Add AgcChannelConstraint class
- ipa: rpi: agc: Use channel constraints in the AGC algorithm
- ipa: rpi: Fix segfault when parsing invalid json file
- ipa: rpi: Fix frame count logic when running algorithms
- ipa: rpi: Avoid skipping IPAs on the first frame after the drop frames
- ipa: rpi: Add IpaBase::platformStart() member function
- mojom: pipeline: ipa: rpi: Add fields for PiSP objects
- ipa: rpi: Add try_lock() to RPiController::Metadata
- ipa: rpi: Add statsInline to the Controller hardware description
- ipa: rpi: Add PiSP definitions to the Controller hardware description
- ipa: rpi: Prepare ALSC for PiSP support
- ipa: rpi: Prepare AWB for PiSP support
- ipa: rpi: Add new algorithms for PiSP
- build: ipa: Fix bug in building multiple IPA interfaces with the same mojom file
- ipa: rpi: agc: Add an AGC stable region
- ipa: rpi: contrast: Allow adaptive contrast enhancement to be disabled
- ipa: rpi: denoise: Support different denoise configurations
- ipa: rpi: agc: Avoid overwriting caller's statistics pointer
- ipa: rpi: agc: When AGC channels are changed, start with the 1st channel
- ipa: rpi: hdr: Add the ability to alter the LSC table
- ipa: rpi: alsc: Do not re-read the alsc.status metadata
- ipa: rpi: agc: Allow AGC channels to avoid using "fast desaturation"
- ipa: rpi: vc4: Move denoise control handling into the VC4 derived IPA
- ipa: rpi: agc: Fetch AWB status in the prepare method
- ipa: rpi: agc: Make AGC controls affect all channels
- ipa: rpi: alsc: Do not allow zero colour ratio statistics
- ipa: rpi: agc: Fix bug where AeLocked was never getting set
- ipa: rpi: cac: Minor code improvements and tidying
- ipa: rpi: Add hardware line rate constraints
- ipa: rpi: Allow the mean of an empty histogram interval
- ipa: rpi: black_level: Add an initialValues method
- ipa: rpi: awb: Add an initialValues method
- utils: raspberrypi: ctt: Improve the Macbeth Chart search reliability
- build: controls: Add Raspberry Pi vendor specific controls
- ipa: vc4: Implement the StatsOutputEnable vendor control
- ipa: rpi: Provide a Camera Helper for the OV64A40
- libipa: camera_sensor_helper: Add OV64A40 helper
- ipa: rpi: vc4: Add OV64A40 tuning files
- ipa: rpi: Implement HDR control
- ipa: rpi: vc4: data: Update tuning files for HDR
apps:
- android: camera_device: Fix requestedStream handling
- py: Add the SensorConfiguration class
- py: gen-py-controls: Remove SceneFlicker workaround
- apps: qcam: Add support for RGB565
- py: libcamera: Define and use Orientation
- apps: cam: Add option to set stream orientation
- py: cam: Add option to set stream orientation
- gstreamer: Implement element EOS handling
- gstreamer: Fix unused variable error
- test: gstreamer: Fix indentation in comments
- gstreamer: Move negotiation logic to separate function
- gstreamer: Add GstLibcameraSrcState::clearRequests method
- gstreamer: Implement renegotiation
- lc-compliance: Set minimum version for gtest dependency
- gstreamer: Support for pre-1.16 GstEvent
- apps: lc-compliance: Fix source file ordering in meson.build
--
Regards
Kieran Bingham
More information about the libcamera-devel
mailing list