)]}'
{
  "log": [
    {
      "commit": "fc268340790c34e9a36bf0bce73a4f895325256f",
      "tree": "3a581f873c009de4a15f95c087ef1207315eaae7",
      "parents": [
        "a2b740b749dd25db533593c2001a5070ebc6f7d5",
        "7e3a351a29aa55c06c8e17782bcc33d153784068"
      ],
      "author": {
        "name": "Harvey Yang",
        "email": "chenghaoyang@google.com",
        "time": "Mon Jul 01 08:57:32 2024"
      },
      "committer": {
        "name": "Chromeos LUCI",
        "email": "chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 01 10:38:19 2024"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027\n\n* upstream/master:\n  utils: libtuning: Correct GBRG Image parsing\n  apps: common: dng_writer: Support RAW10 and RAW12 format\n  apps: common: dng_writer: Add thumbnail scanline function for Raw\n  apps: common: dng_writer: Rename packing functions\n  apps: common: dng_writer: Support RAW16 formats\n  libcamera: Fix maybe-uninitialized error\n  apps: common: dng_writer: Workaround for \"Unknown tag 33421\" error\n  meson: Enable warnings to flag missing declarations\n  test: gstreamer: Include missing sanitizer/asan_interface.h header\n  test: ipc: unixsocket: Define local function in anonymous namespace\n  apps: Define local functions in anonymous namespace\n  v4l2: v4l2_compat: Selectively disable -Wmissing-declarations\n  v4l2: v4l2_compat: Include missing headers\n  py: libcamera: Move function declarations to common header\n  ipa: rpi: Define local functions in anonymous namespace\n  ipa: ipa_interface: Declare ipaCreate() in libcamera namespace\n  libcamera: base: log: Declare log categories when defining them\n  v4l2: v4l2_compat: Move `open*()` flag check into function\n  v4l2: v4l2_compat: Fix redirect from `__open(at)64_2()`\n  ipa: libipa: matrix: Fix incorrect symbol namespace\n  libcamera: yaml_parser: Add support for float types\n  ipa: rkisp1: agc: Rename frame context update variable to updateMetering\n  libcamera: debayer_cpu: Add 32bits/aligned output formats\n  ipa: libipa: pwl: Drop readYaml() function\n  ipa: rpi: controller: Replace Pwl::readYaml() with YamlObject::get()\n  ipa: rkisp1: agc: Move AeEnable control to the AGC algorithm\n  ipa: rkisp1: agc: Correctly clamp maximum shutter speed\n  ipa: rkisp1: agc: Rename maxShutterSpeed to maxFrameDuration\n  ipa: rkisp1: agc: Use mode from frame context to calculate new EV\n  ipa: rkisp1: agc: Simplify predivider calculation\n  ipa: rkisp1: agc: Don\u0027t update histogram parameters unnecessarily\n  ipa: rkisp1: agc: Make size argument to computeHistogramPredivider const\n  ipa: rkisp1: Document all AGC parameters in IPAFrameContext\n  ipa: rkisp1: Document all AGC parameters in IPAActiveState\n  ipa: libipa: agc_mean_luminance: Include missing header\n  ipa: libipa: agc_mean_luminance: Fix enumerator names\n  ipa: rkisp1: agc: Fix initialization without metering modes\n  ipa: libipa: vector: Add matrix-vector multiplication\n  ipa: rkisp1: algorithms: Add crosstalk algorithm\n  ipa: libipa: Add MatrixInterpolator class\n  ipa: libipa: Add Matrix class\n  ipa: libipa: pwl: Specialize YamlObject getter\n  ipa: libipa: pwl: Add a constructor that moves a Point vector\n  ipa: libipa: pwl: Add a size() function\n  ipa: libipa: pwl: Make the empty() function inline\n  ipa: libipa: pwl: Suffix \\param with direction\n  ipa: libipa: vector: Drop readYaml() function\n  ipa: libipa: vector: Specialize YamlObject getter\n  libcamera: yaml_parser: Delegate YamlObject::get() to helper structure\n  libcamera: yaml_parser: Drop std::enable_if_t guards for get() function\n  utils: tuning: rkisp1: Add skeletal AGC to the rkisp1 tuning script\n  utils: libtuning: modules: Add skeletal AGC module\n  ipa: rkisp1: agc: Plumb mode-selection and frame duration controls\n  ipa: rkisp1: agc: Read histogram weights from tuning file\n  ipa: rkisp1: cproc: Drop incorrect [[maybe_unused]]\n  ipa: rkisp1: cproc: Merge identical functions\n  ipa: rkisp1: cproc: Use anonymous namespace to limit symbol visibility\n  utils: raspberrypi: ctt: Add a maximum gain parameter for LSC\n  utils: raspberrypi: ctt: Add option to convert between vc4/pisp targets\n  utils: raspberrypi: ctt: Update tuning tool for HDR\n  utils: raspberrypi: ctt: Changed CTT handling of VC4 and PiSP\n  utils: raspberrypi: ctt: Added CAC support to the CTT\n  utils: raspberrypi: ctt: Adapt tuning tool for both VC4 and PiSP\n  pipeline: rpi: Don\u0027t validate configuration in generateConfiguration()\n  libcamera: yaml_parser: Make default value templated in `get()`\n  libcamera: libipa: camera_sensor: Define AR0521 helper functions inline\n  libcamera: controls: Add missing period at end of Gamma description\n  ipa: rkisp1: goc: Avoid use of auto for short type\n  ipa: rkisp1: goc: Mark default gamma table as static constexpr\n  ipa: rkisp1: goc: Use copydoc\n  ipa: rkisp1: goc: Drop incorrect [[maybe_unused]]\n  ipa: rkisp1: goc: Fix typographical issues in documentation.\n  ipa: rpi: controller: Use libipa\u0027s Pwl class\n  ipa: libipa: Copy pwl from rpi, and clean it up to match libcamera\n  ipa: libipa: Add Vector class\n  pipeline: rkisp1: cproc: Fix default value handling\n  meson: Group libipa and libipa_includes in a dependency object\n  libcamera: software_isp: Fix includes ordering in simple.cpp\n  clang-format: Make Qt includes matching case sensitive\n  ipa: rkisp1: Add GammaOutCorrection algorithm\n  ipa: rkisp1: Fix algorithm controls vanish after configure\n  libcamera: Add gamma control id\n  test: ipa: rkisp1: utils: Fix floating and fixed point conversion test\n  libcamera: dma_buf_allocator: Work around lack of file seals in uClibc\n  libcamera: dma_buf_allocator: Work around lack of memfd_create() in uClibc\n  libcamera: dma_buf_allocator: Create memfd with CLOEXEC\n  ipa: rpi: Disable StatsOutputEnable control by default\n  libcamera: software_isp: Allow using dma-buffers from /dev/udmabuf\n  libcamera: DmaBufAllocator: Support allocating from /dev/udmabuf\n  libcamera: Rename DmaHeap class to DmaBufAllocator\n  libcamera: v4l2_subdevice: Update to the new kernel routing API\n  include: linux: Update kernel headers to version v6.10-rc1\n  update-kernel-headers: Add linux/udmabuf.h to headers to sync\n  test: ipa: rkisp1-utils: Fix coding style for template arguments\n  pipeline: vimc: Don\u0027t hardcode scaling factor with recent kernels\n  test: v4l2_videodevice: Increase timeout for vimc capture tests\n  test: fence: Increase timeout for fence test\n  test: fence: Fix race condition\n  test: fence: Turn class member variable into local variable\n  test: camera: Increase timeout for vimc capture tests\n  libcamera: software_isp: Remove TODO about internal representation\n  libcamera: software_isp: Remove DebayerParams::kGain10\n  libcamera: software_isp: Move color mappings out of debayering\n  libcamera: software_isp: Honor black level in AWB\n  libcamera: software_isp: Use a specific integer type for black level\n  utils: checkstyle.py: Show location of coding style issue within line\n  utils: checkstyle.py: Add a check for hex values\n  utils: checkstyle.py: Extend IncludeChecker to cover math.h\n  utils: checkstyle.py: Refactor IncludeChecker\n  test: ipa: rkisp1-utils: Fix capitalization of hex numbers\n  ipa: rkisp1: Add a helper to convert floating-point to fixed-point\n  android: camera_capabilities: Fix GCC 14 warning\n  ipa: rpi: Make monoSensor() accessor const\n  libcamera: yaml_parser: Avoid double lookup in `operator[]`\n  treewide: Query list of cameras just once\n  libcamera v0.3.0\n  ipa: rpi: Add accessor function for monoSensor_\n  ipa: rpi: Add HDR support\n  libcamera: v4l2_subdevice: Add missing MEDIA_BUS_FMT_xxxx16_1X16 info\n  libcamera: formats: Add PiSP specific image and config buffer formats\n  include: linux: Add PiSP specific image and config buffer formats\n  libcamera: formats: Add RGB48 formats\n  include: linux: Add RGB48 formats\n  libcamera: camera_manager: Add environment variable to order pipelines match\n  libcamera: pipeline: Add a get factory by name helper\n  libcamera: pipeline: Rename pipelines to a shorter name\n  gstreamer: Use copied camera name\n  gstreamer: Fix string memory leak\n  Documentation: Add option to treat Doxygen warnings as errors\n  test: gstreamer: Simplify single stream test\n  ipa: libipa: histogram: Fix documentation of constructor\n  libcamera: Drop remaining file name from header comment blocks\n  libcamera: Drop file name from header comment blocks in templates\n  ipa: rkisp1: agc: Fix histogram construction\n  ipa: rpi: Fix for incorrectly reported max shutter speed\n  pipeline: rpi: Avoid duplicating size range for the same pixel format\n  ipa: libipa: histogram: Add transform parameter to constructor\n  libcamera: Drop file name from header comment blocks\n  ipa: rkisp1: Remove bespoke Agc functions\n  ipa: rkisp1: Derive rkisp1::algorithms::Agc from AgcMeanLuminance\n  ipa: ipu3: Remove bespoke AGC functions from IPU3\n  ipa: ipu3: Derive ipu3::algorithms::Agc from AgcMeanLuminance\n  ipa: libipa: Add AgcMeanLuminance base class\n  ipa: libipa: Add ExposureModeHelper\n  libcamera: controls: Generate enum value-name maps\n  ipa: libipa: Allow creation of empty Histogram\n  Revert \"meson: Deprecate bitwise operations between different enumeration type\"\n  test: Don\u0027t add current build directory to include path\n  meson: Deprecate bitwise operations between different enumeration type\n  apps: qcam: Use standard key sequence for quit action\n  libcamera: shared_mem_object: Fix compilation with uClibc\n  libcamera: utils: Avoid infinite recursion with strtod()\n  libcamera: libipa: camera_sensor: Add Sony IMX415 sensor properties\n  apps: cam: Fix C++20 deprecation warning\n  libcamera: libipa: camera_sensor: Add Sony IMX335 sensor properties\n  libcamera: libipa: camera_sensor: Add Sony IMX283 sensor properties\n  android: camera_device: Always clear descriptors_ in stop()\n  libcamera: Fix output spelling error\n  libcamera: device_enumerator: Fix spell error\n  utils: checkstyle.py: Drop period at end of Doxygen one liners\n  utils: checkstyle.py: Use r\u0027\u0027 strings for regular expressions\n  Documentation: coding-style: Clean up header guard style\n  ipu3: Use posix basename\n  libcamera: software_isp: Apply black level compensation\n  libcamera: Add \"Software ISP benchmarking\" documentation\n  libcamera: debayer_cpu: Add BGR888 output support\n  libcamera: debayer_cpu: Add support for 8, 10 and 12 bpp unpacked bayer input\n  libcamera: swstats_cpu: Add support for 8, 10 and 12 bpp unpacked bayer input\n  libcamera: pipeline: simple: Enable use of Soft ISP and Soft IPA\n  libcamera: pipeline: simple: Rename converterBuffers_ and related vars\n  libcamera: Introduce SoftwareIsp\n  libcamera: ipa: Add Soft IPA\n  libcamera: software_isp: Add DebayerCpu class\n  libcamera: software_isp: Add Debayer base class\n  libcamera: software_isp: Add SwStatsCpu class\n  libcamera: shared_mem_object: Reorganize the code and document the SharedMemObject class\n  libcamera: shared_mem_object: Rename SIZE constant to `size\u0027\n  libcamera: internal: Move SharedMemObject class to a common directory\n  libcamera: dma_heaps: extend DmaHeap class to support system heap\n  libcamera: internal: Move dma_heaps.[h, cpp] to common directories\n  libcamera: pipeline: simple: fix size adjustment in validate()\n  utils: ipc: Fix async main interface functions with no parameters\n  utils: ipc: Fix event functions with no parameters\n  apps: cam: Add support for PPM output format\n  v4l2: meson: Keep defines sorted alphabetically\n  v4l2: Unset _TIME_BITS in addition to _FILE_OFFSET_BITS\n  libcamera: pipeline: Add Mali-C55 ISP pipeline\n  android: camera_device: Save capture settings unconditionally\n  apps: lc-compliance: Re-organize source directory\n  apps: lc-compliance: Fix typo in comment\n  apps: lc-compliance: Check that requests complete successfully\n  utils: tuning: readme: Improve names of dependency packages\n  checkstyle: Work around bug in difflib\n  libcamera: camera_sensor: Expose the Bayer order\n  libcamera: camera_sensor: Test for read-only HBLANK with READ_ONLY flag\n  libcamera: camera_sensor: Reorder functions\n  libcamera: camera_sensor: Drop updateControlInfo() function\n  libcamera: camera_sensor: Move related classes to subdirectory\n  libcamera: v4l2_subdevice: Add V4L2Subdevice::Route structure\n  libcamera: v4l2_subdevice: Replace Routing::toString() with operator\u003c\u003c()\n  libcamera: v4l2_subdevice: Add stream support to get/set functions\n  libcamera: v4l2_subdevice: Rename V4L2SubdeviceFormat::mbus_code to code\n  libcamera: v4l2_subdevice: Drop V4L2SubdeviceFormat::bitsPerPixel()\n  libcamera: v4l2_subdevice: Extend MediaBusFormatInfo with metadata formats\n  libcamera: v4l2_subdevice: Expose media bus format info as internal API\n  libcamera: v4l2_subdevice: Add code member to MediaBusFormatInfo\n  libcamera: v4l2_subdevice: Rename V4L2SubdeviceFormatInfo\n  libcamera: controls: Add policy parameter to ControlList::merge()\n  libcamera: framebuffer_allocator: Remove entry if allocation fails\n  libcamera: framebuffer_allocator: Use default destructor\n  libcamera: framebuffer_allocator: Move from argument in constructor\n  cam: capture_script: Make parseRectangles work for non-array\n  utils: checkstyle.py: Fix known_trailers sort order\n  utils: checkstyle.py: Add Co-developed-by to known_trailers\n  ipa: rpi: cam_helper: Extend embedded data parsing to RAW14 modes\n  libcamera: v4l2_subdevice: Add 14-bit Bayer formats\n  guides: pipeline-handler: Fix controlInfo_ initialization\n  libcamera: controls: Fix typo on thermal\n  pipeline: simple: Add support for MediaTek MT8365 platforms\n  meson_options: Autodetect pycamera support\n  README.rst: Report py dependencies\n  utils: ipu3: Fix return value check on file output\n  libcamera: formats: Fix planes bounds check\n  utils: rkisp1: gen-csc-table.py: Don\u0027t presume python3 location\n  utils: checkstyle.py: Update LogCategoryChecker regexp\n  utils: checkstyle.py: Don\u0027t presume python3 location\n  libcamera: formats: Fix typos in PixelFormatInfo documentation\n  libcamera: Use utils::to_underlying()\n  libcamera: utils: Add to_underlying() helper function\n  ipa: rkisp1: Support the i.MX8MP ISP version\n  include: linux: Add RKISP1_V_IMX8MP version\n  ipa: rkisp1: Fix histogram weights configuration\n  ipa: rkisp1: Store hardware parameters in IPA context\n  ipa: rkisp1: agc: Wrap variable length C arrays in spans\n  pipeline: rpi: vc4: Use an unpacked format if no packed one is available\n  utils: mojom: Fix build error caused by the mojom tool update\n  gstreamer: Map 10/12/14/16 bayer formats supports\n  gstreamer: Map R8/R16 pixel format\n  doc: gstreamer: Add missing queues\n  libcamera: object: Add and use thread-bound assertion\n  libcamera: object: Document and ensure Object deletion constraints\n  test: timer-thread: Destroy Object from correct thread context\n  test: timer-thread: Move timer start from wrong thread to separate test\n  test: signal-threads: Destroy Object from correct thread context\n  test: message: Destroy Object from correct thread context\n  test: message: Remove incorrect slow receiver test\n  test: event-thread: Destroy Object from correct thread context\n  libcamera: thread: Ensure deferred deletion of all objects before stopping\n  test: object-delete: Test deferred delete just before thread stops\n  libcamera: signal: Replace object.h inclusion with forward declatation\n  libcamera: object: Fix thread-bound reference in documentation\n  apps: common: dng_writer: Add a default case for switch-case on a modulo\n  libcamera: v4l2_subdevice: Explain sort order of formatInfoMap\n  libcamera: bayer_format: Add Y12 to bayerToFormat\n  libcamera: formats: Fix sort ordering of R10_CSI2P\n  libcamera: formats: Add 16-bit mono format\n  libcamera: Remove empty formats.c\n  pipeline: rpi: Always initialize the embedded buffer in tryRunPipeline\n  test: gstreamer: Use env instead of registry edit\n  gstreamer: Add meson devenv support\n  utils: ipc: extract-docs: Fix escape characters in regex\n  Documentation: Update Qt documentation links to Qt 6\n  libcamera: base: signal: Update Qt documentation link to Qt 6\n  libcamera: v4l2_subdevice: Enable streams API when supported\n  include: linux: Update kernel headers to version v6.7\n  libipa: camera_sensor_helper: Mark createInstance() with override\n  libcamera v0.2.0\n  utils: ipc: Update mojo\n  utils: ipc: generate.py: Disable attributes checker\n  utils: ipc: generate.py: Add bindings directory to Python path\n  utils: update-mojo.sh: Commit the mojo update\n  utils: update-mojo.sh: Reject a dirty libcamera tree\n  utils: update-mojo.sh: Change to the libcamera source directory\n  utils: update-mojo.sh: Exit immediately on error\n  utils: update-mojo.sh: Properly remove old sources\n  libcamera: geometry: Correct doxygen reference to classes\n  hooks: pre-push: Disable interpretation of escape sequences\n  ipa: rpi: vc4: data: Update tuning files for HDR\n  ipa: rpi: Implement HDR control\n  libcamera: framebuffer_allocator: Remove unnecessary `clear()`\n  utils: ipc: mojom_libcamera_generator.py: Fix Python warning\n  libcamera: device_enumerator: ensure deviceNode is not empty\n  utils: ipc: Fix deserialization of multiple fd parameters\n  apps: lc-compliance: Fix source file ordering in meson.build\n  ipa: rpi: vc4: Add OV64A40 tuning files\n  libipa: camera_sensor_helper: Add OV64A40 helper\n  ipa: rpi: Provide a Camera Helper for the OV64A40\n  libcamera: camera_sensor: Add OV64A40 sensor properties\n  ipa: vc4: Implement the StatsOutputEnable vendor control\n  build: controls: Add Raspberry Pi vendor specific controls\n  utils: raspberrypi: ctt: Improve the Macbeth Chart search reliability\n  ipa: rpi: awb: Add an initialValues method\n  ipa: rpi: black_level: Add an initialValues method\n  ipa: rpi: Allow the mean of an empty histogram interval\n  Documentation: camera-sensor-model: Support Sphinx \u003c 2.0\n  gstreamer: Support for pre-1.16 GstEvent\n  lc-compliance: Set minimum version for gtest dependency\n  ipa: rpi: Add hardware line rate constraints\n  pipeline: rpi: Respect provided stride\n  libcamera: camera: Fix unused variable compiler warning\n  meson: Replace hack with usage of \u0027@BASENAME@\u0027\n  README.rst: Add missing libgtest-dev dependency for lc-compliance\n  test: gstreamer: Remove videoconvert element from pipeline\n  test: ipc: unixsocket: Increase process exit timeout\n  test: log: log_process: Increase process exit timeout\n  test: log: log_process: Improve debugging on process exit failures\n  test: log: log_process: Fix uninitialized variable on process exit failure\n  test: log: log_process: Log an error when failing due to incorrect message\n  meson: Tag all installed files\n  gstreamer: Implement renegotiation\n  gstreamer: Add GstLibcameraSrcState::clearRequests method\n  gstreamer: Move negotiation logic to separate function\n  test: gstreamer: Fix indentation in comments\n  meson_options: Sort options alphabetically\n  README.rst: Document dependencies for the Python bindings\n  README.rst: Drop indirect dependencies on Qt5 packages\n  ipa: rpi: cac: Minor code improvements and tidying\n  ipa: rpi: agc: Fix bug where AeLocked was never getting set\n  documentation: Document vendor specific controls and properties handling\n  libcamera: controls: Use vendor tags for draft controls and properties\n  libcamera: control: Add vendor control id range reservation\n  build: controls: Rework how controls and properties are generated\n  controls: Update argument handling for controls generation scripts\n  controls: Add vendor control/property support to generation scripts\n  libcamera: pipeline: Fix c++20 compile warning\n  Documentation: Fix list indentation\n  README.rst: Use code directive for all code examples\n  Documentation: contributing: Integrate the code of conduct\n  Documentation: code-of-conduct: Add contact information\n  Documentation: code-of-conduct: Add license information\n  Documentation: code-of-conduct: Convert to reStructuredText\n  Documentation: Add code of conduct\n  gstreamer: Fix unused variable error\n  ipa: rpi: alsc: Do not allow zero colour ratio statistics\n  gstreamer: Implement element EOS handling\n  pipeline: rpi: Add some useful logging messages\n  libcamera: camera_sensor: Only access V4L_CID_HBLANK if existing\n  pipeline: rpi: vc4: Fix drop frame bug when no ISP streams are configured\n  pipeline: rpi: Remove unused variable\n  libcamera: controls: Add controls for HDR\n  ipa: rpi: agc: Make AGC controls affect all channels\n  ipa: rpi: agc: Fetch AWB status in the prepare method\n  ipa: rpi: vc4: Move denoise control handling into the VC4 derived IPA\n  ipa: rpi: agc: Allow AGC channels to avoid using \"fast desaturation\"\n  ipa: rpi: alsc: Do not re-read the alsc.status metadata\n  ipa: rpi: hdr: Add the ability to alter the LSC table\n  libcamera: transform: Make the transformFromOrientation() function static\n  libcamera: transform: Fold transformToOrientation() in its only caller\n  libcamera: camera_sensor: Cache mounting orientation instead of transform\n  py: cam: Add option to set stream orientation\n  apps: cam: Add option to set stream orientation\n  libcamera: Use CameraConfiguration::orientation\n  py: libcamera: Define and use Orientation\n  test: Add unit test for Transform and Orientation\n  libcamera: transform: Add operations with Orientation\n  libcamera: transform: Invert operator*() operands\n  libcamera: transform: Add functions to convert Orientation\n  libcamera: properties: Make \u0027Rotation\u0027 the mounting rotation\n  Documentation: Add figures to document Orientation\n  libcamera: camera: Introduce Orientation\n  libcamera: camera_sensor: Cache rotationTransform_\n  apps: qcam: Add support for RGB565\n  pipeline: rpi: vc4: Allocate more embedded data buffers\n  utils: update-kernel-headers: Support git worktrees\n  ipa: rpi: agc: When AGC channels are changed, start with the 1st channel\n  ipa: rpi: agc: Avoid overwriting caller\u0027s statistics pointer\n  ipa: rpi: denoise: Support different denoise configurations\n  ipa: rpi: contrast: Allow adaptive contrast enhancement to be disabled\n  ipa: rpi: agc: Add an AGC stable region\n  pipeline: rpi: Make color space members in RPiCameraConfiguration public\n  pipeline: rpi: Move flip handling validation code\n  build: ipa: Fix bug in building multiple IPA interfaces with the same mojom file\n  pipeline: rpi: Add SW downscale status to RPi::Stream\n  ipa: rpi: Add new algorithms for PiSP\n  ipa: rpi: Prepare AWB for PiSP support\n  ipa: rpi: Prepare ALSC for PiSP support\n  ipa: rpi: Add PiSP definitions to the Controller hardware description\n  ipa: rpi: Add statsInline to the Controller hardware description\n  ipa: rpi: Add try_lock() to RPiController::Metadata\n  mojom: pipeline: ipa: rpi: Add fields for PiSP objects\n  ipa: rpi: Add IpaBase::platformStart() member function\n  pipeline: rpi: Add SharedMemObject class\n  pipeline: rpi: Add Recurrent and Needs32bitConv flags to RPi::Stream\n  pipeline: rpi: Add RequiresMmap flag to RPi::Stream\n  py: gen-py-controls: Remove SceneFlicker workaround\n  py: Add the SensorConfiguration class\n  libcamera: converter: drop unnecessary #include directive\n  libcamera: converter: A few fixes to ConverterFactoryBase documentation\n  ipa: rpi: Avoid skipping IPAs on the first frame after the drop frames\n  libcamera: rpi: Simplify validate() and configure() for YUV/RGB streams\n  libcamera: rpi: Change default stream formats\n  libcamera: rpi: Simplify validate() and configure() for RAW streams\n  libcamera: rpi: Add some helpers to PipelineHandlerBase\n  libcamera: rpi: Cache rawStreams and outStreams\n  libcamera: rpi: Make isRaw/isYuv/isRgb static functions\n  libcamera: rpi: Fix wrong comment indentation\n  libcamera: rpi: Allow platformValidate() to adjust format strides\n  libcamera: rpi: Handle SensorConfiguration\n  libcamera: camera_sensor: Support SensorConfiguration\n  libcamera: camera: Introduce SensorConfiguration\n  Documentation: Introduce Camera Sensor Model\n  pipeline: rpi: Reset the frame lengths queue during configure\n  ipa: rpi: Fix frame count logic when running algorithms\n  libcamera: formats: Fix typo in YV444 V4L2PixelFormat listing\n\nChange-Id: I882a312735a555622cd31d076efca85a4ffd3964\nReviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5669744\nCommit-Queue: Hanlin Chen \u003chanlinchen@google.com\u003e\nTested-by: Harvey Yang \u003cchenghaoyang@chromium.org\u003e\nAuto-Submit: Harvey Yang \u003cchenghaoyang@chromium.org\u003e\nReviewed-by: Hanlin Chen \u003chanlinchen@google.com\u003e\n"
    },
    {
      "commit": "7e3a351a29aa55c06c8e17782bcc33d153784068",
      "tree": "3a581f873c009de4a15f95c087ef1207315eaae7",
      "parents": [
        "e9dc398b92cf5a15240650fbac4078fdefc41ff2"
      ],
      "author": {
        "name": "Daniel Scally",
        "email": "dan.scally@ideasonboard.com",
        "time": "Thu Jun 13 15:09:50 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 28 21:55:03 2024"
      },
      "message": "utils: libtuning: Correct GBRG Image parsing\n\nThe Image class incorrectly parses data in GBRG bayer formats as the\nindices to the channels are set incorrectly - fix it.\n\nSigned-off-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "e9dc398b92cf5a15240650fbac4078fdefc41ff2",
      "tree": "b743e238cd29f194912c35caea58cc25e5375d83",
      "parents": [
        "4513db58c0f5a4e94b61bebf633277d1a3efc4eb"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Fri Jun 28 10:01:45 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 28 21:18:34 2024"
      },
      "message": "apps: common: dng_writer: Support RAW10 and RAW12 format\n\nAdd support for RAW10 and RAW12 to the dng_writer. This is needed on\nimx8mp to produce tuning images.  Both formats were tested on a debix\nsom with a imx335.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "4513db58c0f5a4e94b61bebf633277d1a3efc4eb",
      "tree": "13de0a91289e1f3c3b3ae3969399d862ae245e6f",
      "parents": [
        "a47ab2711d75fad11502deacdfd293a3407e9ca6"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Fri Jun 28 10:01:44 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 28 21:18:30 2024"
      },
      "message": "apps: common: dng_writer: Add thumbnail scanline function for Raw\n\nAdd a thumbnail function for raw formats that are 16bit aligned.\nThis is needed for the upcoming RAW10 and RAW12 implemntation.\n\nUse the new function for RAW16 as the thumbScanlineRaw_CSI2P produces\nincorrect results for that format (it averages over adjacent bytes,\nwhich works for the CSI formats).\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "a47ab2711d75fad11502deacdfd293a3407e9ca6",
      "tree": "6884cf3c90ac89cc5768d2116da575780c39bf71",
      "parents": [
        "5155150bbfd8a76fcc4dab5b7a9a88b614767bc6"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Fri Jun 28 10:01:43 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 28 21:16:51 2024"
      },
      "message": "apps: common: dng_writer: Rename packing functions\n\nThe old names lead to confusions. Rename to better express the intent.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "5155150bbfd8a76fcc4dab5b7a9a88b614767bc6",
      "tree": "310eb61d9a8feb5840055324d051e8bb0777f491",
      "parents": [
        "9411578be8c84c9e5727dbde9e51a885c6e9fea1"
      ],
      "author": {
        "name": "Daniel Scally",
        "email": "dan.scally@ideasonboard.com",
        "time": "Thu Jun 13 15:09:49 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 28 21:16:42 2024"
      },
      "message": "apps: common: dng_writer: Support RAW16 formats\n\nAdd support for RAW16 formats to the DNGWriter helpers so that we can\nproduce dng files from the mali-c55.\n\nSigned-off-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "9411578be8c84c9e5727dbde9e51a885c6e9fea1",
      "tree": "57ea6fbf9dd0e358408605f642d4cd70dd2ae8b7",
      "parents": [
        "36a4f67a755ef54d81944ae6d8b11685e5a41a28"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Fri Jun 28 09:36:02 2024"
      },
      "committer": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Fri Jun 28 10:53:55 2024"
      },
      "message": "libcamera: Fix maybe-uninitialized error\n\nThe gcc used in my current buildroot (Version 12.3) errors out with\n-Wmaybe-uninitialized. Fix that.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nReviewed-by: Jacopo Mondi \u003cjacopo.mondi@ideasonboard.com\u003e\n"
    },
    {
      "commit": "36a4f67a755ef54d81944ae6d8b11685e5a41a28",
      "tree": "3d28d514466afa352e285b04833f6925c8cb6754",
      "parents": [
        "fc3efe072357a30599add61506ee2613f227bf5c"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Tue Jun 25 07:49:56 2024"
      },
      "committer": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Wed Jun 26 13:48:34 2024"
      },
      "message": "apps: common: dng_writer: Workaround for \"Unknown tag 33421\" error\n\nIn libtiff version 4.5.1 and later the CFA* tags were missing. This got\nfixed in https://gitlab.com/libtiff/libtiff/-/commit/49856998c3d82e65444b47bb4fb11b7830a0c2be\nUnfortunately the fix is not released yet, but the faulty libtiff is\ncontained in current buildroot. As a local fix is pretty easy and\nwithout side effects, let\u0027s workaround that.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "fc3efe072357a30599add61506ee2613f227bf5c",
      "tree": "4dff3aea734dd6c803c7774a20a0e74eaabe97f9",
      "parents": [
        "6fc5f90f1635b635788bb16080f21c736d1bb359"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 08:04:15 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "meson: Enable warnings to flag missing declarations\n\nA recently introduced typo resulted in a function definition not\nmatching its declaration. As the problem occurred in libipa, and IPA\nmodules are loaded dynamically and are linked with lazy symbol\nresolution, the problem wasn\u0027t caught at build time.\n\nTo try and catch future similar issues, enable the\n-Wmissing-declarations warning.\n\nSuggested-by: Barnabás Pőcze \u003cpobrn@protonmail.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "6fc5f90f1635b635788bb16080f21c736d1bb359",
      "tree": "a6fa0208d20414e311ec3077c7d15e4227676f6f",
      "parents": [
        "7817f9e0cf2fa5f2bf9a1938832600fa95bdeda7"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 14:03:26 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "test: gstreamer: Include missing sanitizer/asan_interface.h header\n\nThe GStreamer tests define a __asan_default_options() function to\ninfluence the behaviour of ASan. The function is declared in\nsanitizer/asan_interface.h, but we don\u0027t include the header. This will\ncause missing declaration warnings when we enable the\n-Wmissing-declarations option.\n\nInclude the header to fix the issue. It can\u0027t be done unconditionally as\nnot all toolchains provide ASan, so check for its availability at\nconfiguration time.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "7817f9e0cf2fa5f2bf9a1938832600fa95bdeda7",
      "tree": "b92b260f8848fb02f898ae094035c633854573e3",
      "parents": [
        "37d81a390b400ac1be2d57dda9f3e63748855971"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 13:26:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "test: ipc: unixsocket: Define local function in anonymous namespace\n\nA local function in the unixsocket test is defined in the global\nnamespace without the static keyword. This compiles fine for now, but\nwill cause a missing declaration warning when we enable them. To prepare\nfor that, enclose the function declaration in an anonymous namespace.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "37d81a390b400ac1be2d57dda9f3e63748855971",
      "tree": "4c3fe1063b1708d4ab8b3061af28926cdc9ac2d2",
      "parents": [
        "cdb05b37123c5b9b2416fc34b8e21f087603bb2e"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 13:26:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "apps: Define local functions in anonymous namespace\n\nMultiple local functions are defined in the global namespace without the\nstatic keyword. This compiles fine for now, but will cause a missing\ndeclaration warning when we enable them. To prepare for that, move the\nfunction declaration to an anonymous namespace.\n\nWhile at it, for consistency, include an existing static function in the\nnamespace and drop the static keyword.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "cdb05b37123c5b9b2416fc34b8e21f087603bb2e",
      "tree": "75f55e817f007fe4cd9c07ae3dcbaa9740b534d2",
      "parents": [
        "1907c883cad5563dc082cd4624e8f0531e32ab9a"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 14:03:26 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "v4l2: v4l2_compat: Selectively disable -Wmissing-declarations\n\n_FORTIFY_SOURCE redirects the open*() calls to __open*_2() functions.\nThe libcamera V4L2 adaptation layer intercepts those functions to\nsupport applications compiled with _FORTIFY_SOURCE. When _FORTIFY_SOURCE\nis not enabled, the C library headers will not provide declarations for\nthe fortified functions, which will cause missing declaration warnings\nwhen we unable them.\n\nFix this by disabling the -Wmissing-declarations warnings selectively\nfor the _FORTIFY_SOURCE functions. To avoid sparkling pragmas around,\nmove the relevant function definitions next to each other.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "1907c883cad5563dc082cd4624e8f0531e32ab9a",
      "tree": "b80c4941850a42f326669888e5ac5d91ed289e9d",
      "parents": [
        "a2e27f4f2b849f0095a822be686b9612e727a122"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 14:03:26 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "v4l2: v4l2_compat: Include missing headers\n\nThe close() and ioctl() functions are declared in the unistd.h and\nsys/ioctl.h headers. Include them to provide the declarations.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "a2e27f4f2b849f0095a822be686b9612e727a122",
      "tree": "fd60c1d5b551cd53cd01a60354e4331597810120",
      "parents": [
        "885c48028fe2a484844278c1b884f984797e2c5b"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 13:26:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:11 2024"
      },
      "message": "py: libcamera: Move function declarations to common header\n\nThe init_py_*() functions are called by the top-level entry point of the\nlibcamera Python module to initialize different parts of the bindings.\nThey are declared in py_main.cpp where they are called, and defined in\nseparate compilation units. This results in functions being defined\nwithout a corresponding declaration, and will generate warnings when we\nenable -Wmissing-declarations.\n\nFix this by moving the function declarations from py_main.c to\npy_main.h, and including py_main.h in the various compilation units that\nneed it.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "885c48028fe2a484844278c1b884f984797e2c5b",
      "tree": "6b9951e93f1281d047860f69ea1636706b30dbb6",
      "parents": [
        "e317eaf07226d88fdb9cff27074689fc9ae0f9d3"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 13:26:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 26 09:07:06 2024"
      },
      "message": "ipa: rpi: Define local functions in anonymous namespace\n\nMultiple local functions are defined in the global namespace without the\nstatic keyword. This compiles fine for now, but will cause a missing\ndeclaration warning when we enable them. To prepare for that, move the\nfunction declaration to an anonymous namespace.\n\nWhile at it, for consistency, include an existing static function in the\nnamespace and drop the static keyword.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\n"
    },
    {
      "commit": "e317eaf07226d88fdb9cff27074689fc9ae0f9d3",
      "tree": "ed23e62c8295331d897690a99107b7dbdd81d001",
      "parents": [
        "38c75f863a50c5d5e9b715f4edcc00ccc9aa37f4"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 09:41:50 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 25 07:54:17 2024"
      },
      "message": "ipa: ipa_interface: Declare ipaCreate() in libcamera namespace\n\nThe ipaCreate() function is the entry point to IPA modules. It is\ndeclared in ipa_interface.h, and defined by each module. As the function\nis defined with extern \"C\" linkage, the namespace in which it is\ncontained is not very relevant from a caller\u0027s point of view. For the\nIPA module implementer, however, defining the function in the libcamera\nnamespace avoids adding an explicit libcamera:: prefix to the symbols\nused by the function. This is why all IPA modules define their\nipaCreate() entry point in the libcamera namespace.\n\nThe ipa_interface.h file, however, declares the function in the global\nnamespace. This doesn\u0027t cause any issue at runtime, but will cause a\nmissing declaration warning when we enable them. To prepare for that,\nmove the function declaration to the libcamera namespace.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "38c75f863a50c5d5e9b715f4edcc00ccc9aa37f4",
      "tree": "34e83954517f88bfc4e03d937eff64c0bb38e95f",
      "parents": [
        "4d0834ea0adfb5139e0ab83751d3e89d72e0a931"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 19:24:41 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 25 07:54:16 2024"
      },
      "message": "libcamera: base: log: Declare log categories when defining them\n\nlibcamera will enable -Wmissing-declarations to catch mismatches between\nfunction declarations and definitions. There is one offender in log.h:\nwhen a category is defined with LOG_DEFINE_CATEGORY(), it generates a\nfunction with no declaration. Fix it by declaring the function using\nLOG_DECLARE_CATEGORY() as the first step of the category definition.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "4d0834ea0adfb5139e0ab83751d3e89d72e0a931",
      "tree": "d110898a44075311df8b095b9f0fa1ebed05ded9",
      "parents": [
        "bab056eb8621d499d0a2be688ef1a06797a7da1b"
      ],
      "author": {
        "name": "Barnabás Pőcze",
        "email": "pobrn@protonmail.com",
        "time": "Tue Jun 25 06:51:49 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 25 07:22:00 2024"
      },
      "message": "v4l2: v4l2_compat: Move `open*()` flag check into function\n\nThis commit moves the check that determines whether the mode argument of\n`open*()` exists into a separate function.\n\nWith that, the check is fixed because previously it failed to account\nfor the fact that `O_TMPFILE` is not a power of two.\n\nFurthermore, add `assert()`s in the fortified variants that ensure that\nno mode is required by the specified flags.\n\nSigned-off-by: Barnabás Pőcze \u003cpobrn@protonmail.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "bab056eb8621d499d0a2be688ef1a06797a7da1b",
      "tree": "7db6e9b497f0d4b6bd8c09f984070957d653cd00",
      "parents": [
        "2119bdac6a011034cc33584e3303e47db4932313"
      ],
      "author": {
        "name": "Barnabás Pőcze",
        "email": "pobrn@protonmail.com",
        "time": "Mon Jun 17 21:43:45 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 25 06:49:23 2024"
      },
      "message": "v4l2: v4l2_compat: Fix redirect from `__open(at)64_2()`\n\nTo avoid confusion, have `__open64_2()` and `__openat64_2()` delegate to\n`open64()` and `openat64()`, respectively, instead of `open()` and\n`openat()`.\n\nThis does not change the behaviour because\n`V4L2CompatManager::instance()-\u003eopenat()` calls `openat64()` internally,\nand that adds the `O_LARGEFILE` flag unconditionally.\n\nFixes: 1023107b6405 (\"v4l2: v4l2_compat: Intercept open64, openat64, and mmap64\")\nSigned-off-by: Barnabás Pőcze \u003cpobrn@protonmail.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "2119bdac6a011034cc33584e3303e47db4932313",
      "tree": "996bf67d6105443348010e626276eaeea6e83353",
      "parents": [
        "3d7e50fd715dee709da9e2a8c9ccd4892f4d5f75"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 21 15:21:56 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 19:14:22 2024"
      },
      "message": "ipa: libipa: matrix: Fix incorrect symbol namespace\n\nThe matrixVlidateYaml() function is declared in the libcamera::ipa::\nnamespace, but defined in the libcamera:: namespace. This causes a\ndynamic linking error at runtime. Fix it by moving the function\ndefinition.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nTested-by: Jacopo Mondi \u003cjacopo.mondi@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "3d7e50fd715dee709da9e2a8c9ccd4892f4d5f75",
      "tree": "556c9e364f1fc2205752b1c2f39d79c4cca921b1",
      "parents": [
        "a8de1f398ddc26a655756e8954fd4d90dff3b3fa"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Jun 21 12:00:37 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 19:14:22 2024"
      },
      "message": "libcamera: yaml_parser: Add support for float types\n\nThe YamlObject::get\u003cT\u003e() function template has a specialization for\ndouble but not for float. When used in an IPA module, the issue is\ncaught at module load time only, when dynamic links are resolved,\ncausing errors such as\n\nFailed to open IPA module shared object: /usr/lib/libcamera/ipa_rkisp1.so: undefined symbol: _ZNK9libcamera10YamlObject6GetterIfE3getERK_\n\nFix it by adding a float specialization. The alternative would be to use\ndouble only in IPA modules, but the lack of enforcement at compile time\nmakes this dangerous.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nTested-by: Jacopo Mondi \u003cjacopo.mondi@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\n"
    },
    {
      "commit": "a8de1f398ddc26a655756e8954fd4d90dff3b3fa",
      "tree": "44a8f84b2ceeedcd54bcd5daf0ddbc4d0411506f",
      "parents": [
        "437e601653e69c82f5396979d99e7b9b5bb6086b"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 12:13:09 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 24 08:08:47 2024"
      },
      "message": "ipa: rkisp1: agc: Rename frame context update variable to updateMetering\n\nThe frame context agc.update variable is used to indicate if the ISP\nhistogram metering parameters need to be updated. Rename it to\nupdateMetering to make usage more explicit.\n\nSuggested-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "437e601653e69c82f5396979d99e7b9b5bb6086b",
      "tree": "1bf82638d70a4529989f4787f91c70e74abec83e",
      "parents": [
        "226ce29483ef595525c4f3a43e6795ba962b006c"
      ],
      "author": {
        "name": "Robert Mader",
        "email": "robert.mader@collabora.com",
        "time": "Tue Jun 18 06:31:59 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Wed Jun 19 09:58:06 2024"
      },
      "message": "libcamera: debayer_cpu: Add 32bits/aligned output formats\n\nIn order to be more compatible with modern hardware and APIs. This\nnotably allows GL implementations to directly import the buffers more\noften and seems to be required for Wayland.\n\nFurther more, as we already enforce a 8 byte stride, these formats work\nbetter for clients that don\u0027t support padding - such as libwebrtc at the\ntime of writing.\n\nTested devices:\n - Librem5\n - PinePhone\n - Thinkpad X13s\n\nSigned-off-by: Robert Mader \u003crobert.mader@collabora.com\u003e\nTested-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Milan Zamazal \u003cmzamazal@redhat.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "226ce29483ef595525c4f3a43e6795ba962b006c",
      "tree": "2e3659b8b81a8d4508125a24e9f3af9f95188715",
      "parents": [
        "b781955c6af5a537face58f0b92a25905df377f8"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 00:04:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 21:58:12 2024"
      },
      "message": "ipa: libipa: pwl: Drop readYaml() function\n\nAll users of the Pwl::readYaml() function have been removed. The\nfunction is not used, and is deprecated in favour of YamlObject::get().\nDrop it.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "b781955c6af5a537face58f0b92a25905df377f8",
      "tree": "0cad8c64649bb0ff831c58bb3c3aeb97c24a18f8",
      "parents": [
        "13a8fbeb5c8d10524f357b4f2eb566b7243d0b94"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 00:45:32 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 21:57:49 2024"
      },
      "message": "ipa: rpi: controller: Replace Pwl::readYaml() with YamlObject::get()\n\nNow that deserializing a Pwl object from YAML data is possible using the\nYamlObject::get() function, replace all usage of Pwl::readYaml() to\nprepare for its removal.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nTested-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e # On Raspberry Pi 4\n"
    },
    {
      "commit": "13a8fbeb5c8d10524f357b4f2eb566b7243d0b94",
      "tree": "88470f91670ad42c77ca54c5629a5e81a118f239",
      "parents": [
        "4ce519cdc5f62a8b17861242f8ea830c9a8df1a1"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:30:26 2024"
      },
      "message": "ipa: rkisp1: agc: Move AeEnable control to the AGC algorithm\n\nThe AGC algorithm implements the AeEnable control at runtime. Move the\ndeclaration of the control from the IPA module to the algorithm.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "4ce519cdc5f62a8b17861242f8ea830c9a8df1a1",
      "tree": "ffb693a8bd79ec7fde9d3bdd8791c9c974c87081",
      "parents": [
        "14056bceb536e952f745704a4bc3856bad4686ea"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:30:23 2024"
      },
      "message": "ipa: rkisp1: agc: Correctly clamp maximum shutter speed\n\nThe sensor\u0027s maximum shutter speed is clamped by the maximum frame\nduration specified in requests. If the requested maximum frame duration\nis lower than the sensor\u0027s minimum shutter speed, the Agc::process()\nfunction will pass a minimum value higher than the maximum to the\nsetLimits() function, resulting in an assertion failure. Fix it by\nclamping the value to both the lower and the upper bounds.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "14056bceb536e952f745704a4bc3856bad4686ea",
      "tree": "c4f0029b8b8aad82d4b51b2b615487fe90a3576d",
      "parents": [
        "b53c6de03fce3b1ca8941292fdefd1f875add537"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 16:06:01 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:24 2024"
      },
      "message": "ipa: rkisp1: agc: Rename maxShutterSpeed to maxFrameDuration\n\nThe AGC active state and frame context both contain a variable named\nmaxShutterSpeed. The variable is used to limit the maximum shutter speed\nwhen computing the exposure time and gains, but stores the maximum frame\nduration, not clamped by the sensor\u0027s maximum shutter speed. Rename it\nto maxFrameDuration.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "b53c6de03fce3b1ca8941292fdefd1f875add537",
      "tree": "7647c2d93cd7cc56a54499850cc31b196583f187",
      "parents": [
        "ea43e056a83fcfcf627669b4e5ee922d97c95d4b"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:23 2024"
      },
      "message": "ipa: rkisp1: agc: Use mode from frame context to calculate new EV\n\nThe effective exposure value for each frame is split into shutter time,\nanalog gain and digital gain based on the AGC constraint mode and\nexposure mode. The algorithm uses the modes from the active state, which\ntracks the latest queued request, instead of the frame context, which\ntracks the value of the controls requested for that frame. Fix it by\nusing the correct modes.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "ea43e056a83fcfcf627669b4e5ee922d97c95d4b",
      "tree": "369f9aaad794a4ac6df76496e8b4113a5ecc8b77",
      "parents": [
        "05d0f952a36c40392a9c8ccf86d3567a64ecba32"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:10 2024"
      },
      "message": "ipa: rkisp1: agc: Simplify predivider calculation\n\nThe condition\n\n\tif (std::pow(std::floor(root), 2) \u003c factor)\n\t\tpredivider \u003d static_cast\u003cuint8_t\u003e(std::ceil(root));\n\telse\n\t\tpredivider \u003d static_cast\u003cuint8_t\u003e(std::floor(root));\n\ncan only be false when the factor\u0027s root is an integer. In that case,\nstd::ceil(root) and std::floor(root) will be equal. The computation can\nthus be simplified by always rounding up.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "05d0f952a36c40392a9c8ccf86d3567a64ecba32",
      "tree": "3d90f6186ff3711c711d36e5d183720491cfad4c",
      "parents": [
        "de4ed4e966b476dbcfa63bc61028b0fc16ee4a78"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:10 2024"
      },
      "message": "ipa: rkisp1: agc: Don\u0027t update histogram parameters unnecessarily\n\nThe ISP histogram parameters depends on the AE metering mode, but not on\nthe other AE algorithm controls. The exposure mode, constraints mode and\nframe duration limits influence the behaviour of the algorithm, but not\nthe histogram computation parameters. Update the histogram parameters\nonly when AE metering mode changes.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "de4ed4e966b476dbcfa63bc61028b0fc16ee4a78",
      "tree": "25d75a1632c7d083d077ef005ab082b038f44f1e",
      "parents": [
        "9f04e8e1ffeb407d4a8f52775788358ce9740e11"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:10 2024"
      },
      "message": "ipa: rkisp1: agc: Make size argument to computeHistogramPredivider const\n\nThe Agc::computeHistogramPredivider() function doesn\u0027t need to modify\nits size parameter. Make it const.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "9f04e8e1ffeb407d4a8f52775788358ce9740e11",
      "tree": "2dab1c562284403457430872a283eb58ff8718fe",
      "parents": [
        "c414ff9ec26fb02b8e31dfa9f969870466a6d522"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:08 2024"
      },
      "message": "ipa: rkisp1: Document all AGC parameters in IPAFrameContext\n\nThe IPAFrameContext AGC documentation is lagging behind the\nimplementation and misses many variables. Document them.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "c414ff9ec26fb02b8e31dfa9f969870466a6d522",
      "tree": "3259a601680488375404e2c42ed5090326bc49db",
      "parents": [
        "8b82a7f1e739b9cb5a796532b865ce66b31f41bb"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 13:15:05 2024"
      },
      "message": "ipa: rkisp1: Document all AGC parameters in IPAActiveState\n\nThe IPAActiveState AGC documentation is lagging behind the\nimplementation and misses many variables. Document them.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "8b82a7f1e739b9cb5a796532b865ce66b31f41bb",
      "tree": "d903a4d9d8d97ff61842f8bc58b3c93f01fbb012",
      "parents": [
        "3faa04fe48b394e0c73056183293a5b77116e539"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed May 08 23:18:52 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 12:04:34 2024"
      },
      "message": "ipa: libipa: agc_mean_luminance: Include missing header\n\nagc_mean_luminance.h uses utils::Duration, include the corresponding\nheader.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    },
    {
      "commit": "3faa04fe48b394e0c73056183293a5b77116e539",
      "tree": "4f13450d91e7a356d9caa7bbafed4104a91e5f68",
      "parents": [
        "8fd673deaf9beb2e9be9c81342f728c2b7b0513a"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed May 08 23:18:52 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 12:04:02 2024"
      },
      "message": "ipa: libipa: agc_mean_luminance: Fix enumerator names\n\nEnumerators in libcamera start with an upper case letter. Fix the\nAgcConstraint::Bound enumerators.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    },
    {
      "commit": "8fd673deaf9beb2e9be9c81342f728c2b7b0513a",
      "tree": "a3da8cf7127098a4e2adb18dc83d5243c56059fc",
      "parents": [
        "01a33fedf6cdbb99c2b0316462a5578bb1b4b434"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 15 21:34:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 12:03:45 2024"
      },
      "message": "ipa: rkisp1: agc: Fix initialization without metering modes\n\nWhen no metering modes are specified in the tuning file, the AGC\ninitialzation fails with\n\n[0:00:46.148508875] [209] ERROR RkISP1Agc agc.cpp:46 \u0027AeMeteringMode\u0027 parameter not found in tuning file\n\nwhich results in a camera initialization failure. Fix it by downgrading\nthe error into a warning, and continuing the AGC initialization with the\ndefault metering mode.\n\nFixes: 35233938ee5d (\"ipa: rkisp1: agc: Read histogram weights from tuning file\")\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "01a33fedf6cdbb99c2b0316462a5578bb1b4b434",
      "tree": "628dc667ff92648f401966b0c2b01db0382d6736",
      "parents": [
        "cbfdfa42cacc0c9b83abb604e19febaf505cf24f"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 12:02:11 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 09:19:01 2024"
      },
      "message": "ipa: libipa: vector: Add matrix-vector multiplication\n\nAdd an operation for multiplying a matrix with a vector.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "cbfdfa42cacc0c9b83abb604e19febaf505cf24f",
      "tree": "98fbcedd40d82776944e5d62190e2a61d0c727a4",
      "parents": [
        "f1959b9f313a33600eda575f32bbd06143a0cc45"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 11:37:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 09:18:57 2024"
      },
      "message": "ipa: rkisp1: algorithms: Add crosstalk algorithm\n\nAdd an algorithm module to the rkisp1 IPA for crosstalk correction.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "f1959b9f313a33600eda575f32bbd06143a0cc45",
      "tree": "754ec8230040e0071392382d42da43d0bf10deb7",
      "parents": [
        "f191c10fe180fefac418fa41a3c49f5b18f9a3d7"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 11:37:56 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 09:18:51 2024"
      },
      "message": "ipa: libipa: Add MatrixInterpolator class\n\nAdd a class to encapsulate the functionality of fetching a matrix based\non an integer key, and interpolating if there is no exact match. This is\nexpected to be used by both color correction matrices / crosstalk\ncorrection as well as lens shading correction.\n\nA cache is included only for exact matches of the key. The caller is\nexpected to decide the tolererance for rounding.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "f191c10fe180fefac418fa41a3c49f5b18f9a3d7",
      "tree": "999bd7d5435c1b8ac5e7bea5548b2312e9d8d634",
      "parents": [
        "d978832d9e987b555be7c0ee8eeda37981924515"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 11:37:55 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 17 09:18:41 2024"
      },
      "message": "ipa: libipa: Add Matrix class\n\nAdd a class to represent a Matrix object and operations for adding\nmatrices, multipling a matrix by a scalar, and multiplying two matrices.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "d978832d9e987b555be7c0ee8eeda37981924515",
      "tree": "cf02d54d01807ac6e5e867f0739d4e201dcece9f",
      "parents": [
        "31c9998bf042963f11e0c4f3687ee8ba0b7318cc"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 23:52:15 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:26 2024"
      },
      "message": "ipa: libipa: pwl: Specialize YamlObject getter\n\nImplement a specialization of the YamlObject::Getter structure to\nsupport deserializing ipa::Pwl objects from YAML data.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "31c9998bf042963f11e0c4f3687ee8ba0b7318cc",
      "tree": "fbb1980026f52c7ba45250044769f2f4bf7fb927",
      "parents": [
        "0706c67711839c88accaf577ac27f7473137febe"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 01:12:29 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "ipa: libipa: pwl: Add a constructor that moves a Point vector\n\nThe Pwl::Pwl(const std::vector\u003cPoint\u003e \u0026) constructor is inefficient as\nit makes a copy of the given points vector. Add a second constructor\nthat takes an rvalue reference to a points vector to provide move\nsemantics.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "0706c67711839c88accaf577ac27f7473137febe",
      "tree": "4b0e1c62c14464d9dd49dedba20f4699526d7b60",
      "parents": [
        "e127e63c93f8d04de0a564eae5e5cb40b80260f5"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 00:21:46 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "ipa: libipa: pwl: Add a size() function\n\nAdd a size() function to the Pwl class to return the number of points in\nthe piecewise linear function. This is useful, for instance, to validate\nthat all points added with append() or prepend() have been taken into\naccount.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "e127e63c93f8d04de0a564eae5e5cb40b80260f5",
      "tree": "6c3d0e528e27d498cf3c517508046d92eae4b076",
      "parents": [
        "6c735ab8e2387f26e3c4d1a2e4d55c127ca7d1fa"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 00:21:46 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "ipa: libipa: pwl: Make the empty() function inline\n\nThe Pwl::empty() function is a one-liner that can be easily optimized by\nthe compiler given the chance. Make it inline.\n\nWhile at it, move the function documentation block to match the class\ndeclaration order.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "6c735ab8e2387f26e3c4d1a2e4d55c127ca7d1fa",
      "tree": "f2fa12d6c8f84d6cf87919e4abb31d8461cdab58",
      "parents": [
        "454bc6129ffa80ab5666afff7f03c81eb79fefbd"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 00:21:46 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "ipa: libipa: pwl: Suffix \\param with direction\n\nSuffix the Doxygen \\param commands with the direction for all\nparameters.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "454bc6129ffa80ab5666afff7f03c81eb79fefbd",
      "tree": "642b794758b9fa7367eb8a64c82d3feea6d4a622",
      "parents": [
        "64ed07d4d057411c3fb669dc1faa27e61efd2811"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 00:04:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "ipa: libipa: vector: Drop readYaml() function\n\nNow that YAML deserialization of Vector instances is supported through\nYamlObject::get(), remove the Vector::readYaml() function. It turns out\nnot to be used.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "64ed07d4d057411c3fb669dc1faa27e61efd2811",
      "tree": "b36313020388589728048d7e14b4a16947a2bce6",
      "parents": [
        "922686067a2d610a93072cc9bbd3d9758087f4d1"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 23:52:15 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "ipa: libipa: vector: Specialize YamlObject getter\n\nImplement a specialization of the YamlObject::Getter structure to\nsupport deserializing ipa::Vector objects from YAML data.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "922686067a2d610a93072cc9bbd3d9758087f4d1",
      "tree": "4164353bfed8a54c9a2357c1d67049cff2ec7c28",
      "parents": [
        "8d6f494844fc30e117bdcac4260d892d7114b429"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 23:31:07 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "libcamera: yaml_parser: Delegate YamlObject::get() to helper structure\n\nThe YamlObject::get() function is a function template that gets fully\nspecialized for various types. This works fine for non-template types,\nbut specializing it for template types (e.g. a std::vector\u003cU\u003e) would\nrequire partial template specialization, which C++ allows for classes\nand variables but not functions.\n\nTo work around this problem, delegate the implementation to a new\nYamlObject::Getter structure template, which will support partial\nspecialization.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "8d6f494844fc30e117bdcac4260d892d7114b429",
      "tree": "7d51909985bf84268fc0056ead28fbb970ce85f8",
      "parents": [
        "7d8a9e054e642ec18a3f97e6e646990f1eaf46ed"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 21:52:04 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sun Jun 16 00:28:25 2024"
      },
      "message": "libcamera: yaml_parser: Drop std::enable_if_t guards for get() function\n\nThe YamlObject::get() function template is implemented for a set of\nbasic types through template specializations. The function declaration\nuses std::enable_if_t\u003c\u003e guards to signal incorrect usage at compilation\ntime. This however prevents the API to be extended with additional\nspecializations in other compilation units.\n\nTo prepare for new specializations of the function for the ipa::Vector\nand ipa::Pwl classes types, implemented in their respective compilation\nunits, drop the std::enable_it_t\u003c\u003e guards. Incorrect usage will still be\nreported as link errors.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "7d8a9e054e642ec18a3f97e6e646990f1eaf46ed",
      "tree": "b6af8f28dda0bc08c0035f4eb258173f09d0e7fa",
      "parents": [
        "4eb3ff2350f6cf38fa72dfcfd98a41c2cda4ad95"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Thu Feb 29 09:34:14 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 14:48:48 2024"
      },
      "message": "utils: tuning: rkisp1: Add skeletal AGC to the rkisp1 tuning script\n\nAdd the skeletal AGC module to the rkisp1 tuning script. For now it just\nspits out hardcoded values.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    },
    {
      "commit": "4eb3ff2350f6cf38fa72dfcfd98a41c2cda4ad95",
      "tree": "0a6aaea04d0e30ffaf4cccf9cf21db9fcc0761c9",
      "parents": [
        "248374feca901d79c5df24b06e01fc0113e84638"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Thu Feb 29 09:31:36 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 14:48:45 2024"
      },
      "message": "utils: libtuning: modules: Add skeletal AGC module\n\nAdd a skeletal AGC module just so that we can have some AGC tuning\nvalues that we can use to test during development of AGC in the IPAs. As\nrkisp1 is the main target, we only add support for rkisp1 for now.\n\nThe parameters are mostly copied from the hardcoded values in ctt,\nexcept for the metering modes.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "248374feca901d79c5df24b06e01fc0113e84638",
      "tree": "963706a1df59cc0e55018d8b11d93a31c1254759",
      "parents": [
        "35233938ee5d7a560dd4a93c0a1b08eae4935ae4"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Wed Mar 13 10:25:16 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 13:16:01 2024"
      },
      "message": "ipa: rkisp1: agc: Plumb mode-selection and frame duration controls\n\nPlumb controls for setting metering mode, exposure mode, constraint\nmode, and frame duration limits. Also report them as available controls,\nas well as in metadata.\n\nWhile at it, add the missing #include for tuple, as a std::tie is used.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "35233938ee5d7a560dd4a93c0a1b08eae4935ae4",
      "tree": "2ea57d87a103832b43e45a1dc72e3227ddc6eaeb",
      "parents": [
        "1b917256188b6b6f8faa5e8e3420032f5c76e233"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Mar 01 13:16:02 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 14 13:15:59 2024"
      },
      "message": "ipa: rkisp1: agc: Read histogram weights from tuning file\n\nAdd support to the rkisp1 AGC to read histogram weights from the tuning\nfile. As controls for selecting the metering mode are not yet supported,\nfor now hardcode the matrix metering mode, which is the same as what the\nAGC previously hardcoded.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    },
    {
      "commit": "1b917256188b6b6f8faa5e8e3420032f5c76e233",
      "tree": "deb48c3339eb42e92527e8f0a67b8966620c0b93",
      "parents": [
        "c2fad17ad083defede63d41b8b698f388f016fff"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Thu Jun 13 08:33:20 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 11:02:02 2024"
      },
      "message": "ipa: rkisp1: cproc: Drop incorrect [[maybe_unused]]\n\nA few function parameters are marked with [[maybe_unused]] but are\nactually used. Drop the attribute.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "c2fad17ad083defede63d41b8b698f388f016fff",
      "tree": "8a3aab227a4568d69aaa2c44c0fef7e8e7b9ade6",
      "parents": [
        "9b84d75cb101d129e00ff9696ccd329eb8a4c461"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Thu Jun 13 08:33:19 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 11:01:54 2024"
      },
      "message": "ipa: rkisp1: cproc: Merge identical functions\n\nconvertContrast() and convertSaturation() are equal. Merge them into\none.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "9b84d75cb101d129e00ff9696ccd329eb8a4c461",
      "tree": "211285cdfd22260cf15946048ac30b2aab7c43fc",
      "parents": [
        "6960684fa13baaca3c7532f2e002abed7af26825"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Thu Jun 13 08:33:18 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Thu Jun 13 11:01:37 2024"
      },
      "message": "ipa: rkisp1: cproc: Use anonymous namespace to limit symbol visibility\n\nUse a anonymous namespace instead of the static keyword to limity symbol\nvisibility.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "6960684fa13baaca3c7532f2e002abed7af26825",
      "tree": "c123981e8548bca9a144f5455e648cc227331ce7",
      "parents": [
        "b40d9dbc0b69b8f18cd19e687773e84b84c3c736"
      ],
      "author": {
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com",
        "time": "Thu Jun 06 10:15:12 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 10:02:39 2024"
      },
      "message": "utils: raspberrypi: ctt: Add a maximum gain parameter for LSC\n\nA max_gain parameter is added to the config file which we pass to the\nlens shading calibration. This clamps the maximum luminance gain that\ngets written into the tuning files so as to prevent overflows.\n\nIt is particularly useful for lenses that cut off the light completely\nfrom the sensor corners, and allows usable tables to be generated for\nthem.\n\nSigned-off-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nTested-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nAcked-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "b40d9dbc0b69b8f18cd19e687773e84b84c3c736",
      "tree": "036c684e6bb2c22e3b98d730edbf39aaff7f6d1a",
      "parents": [
        "e7d628942fd71899a13a3d9baf2b44075a92f20b"
      ],
      "author": {
        "name": "Naushir Patuck",
        "email": "naush@raspberrypi.com",
        "time": "Thu Jun 06 10:15:11 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 10:02:39 2024"
      },
      "message": "utils: raspberrypi: ctt: Add option to convert between vc4/pisp targets\n\nThis change adds functionality to the convert_tuning.py script to\nconvert between vc4 and pisp target tuning files. The conversion is\ndone on a best effort basis, and should provide functional tuning files.\nHowever, a full tuning for the target platform is always preferred.\n\nSigned-off-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nSigned-off-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nTested-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nAcked-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "e7d628942fd71899a13a3d9baf2b44075a92f20b",
      "tree": "b7505b70be54e3879d6f7806aa0523218c2706fc",
      "parents": [
        "b95032a84259d5a6281bfb5b126711a47da02285"
      ],
      "author": {
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com",
        "time": "Thu Jun 06 10:15:10 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 10:02:38 2024"
      },
      "message": "utils: raspberrypi: ctt: Update tuning tool for HDR\n\nThe various boilerplate parts of the tuning file are extended to\ninclude the necessary extra bits for HDR, specifically:\n\n* rpi.denoise has different configurations for HDR modes\n* rpi.agc now has extra channels for HDR\n* rpi.hdr parameters are added.\n\nSigned-off-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nTested-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nAcked-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "b95032a84259d5a6281bfb5b126711a47da02285",
      "tree": "842bc8d095b1dbf8aada59624ffaa69dea8b1ae5",
      "parents": [
        "8bea2d5a8adf1901f49e6449a731e3fd02272b3d"
      ],
      "author": {
        "name": "Ben Benson",
        "email": "ben.benson@raspberrypi.com",
        "time": "Thu Jun 06 10:15:09 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 10:02:26 2024"
      },
      "message": "utils: raspberrypi: ctt: Changed CTT handling of VC4 and PiSP\n\nChanged how users select which platform to tune for. Now users\nspecify a command line argument, \u0027-t\u0027, to specify which target\nplatform.\n\nSigned-off-by: Ben Benson \u003cben.benson@raspberrypi.com\u003e\nSigned-off-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nTested-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nAcked-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "8bea2d5a8adf1901f49e6449a731e3fd02272b3d",
      "tree": "049daee7e8d6cf6ba49010dc14902b785754bee3",
      "parents": [
        "d13542c28f291b88e29f1142d6dff565e772a05c"
      ],
      "author": {
        "name": "Ben Benson",
        "email": "ben.benson@raspberrypi.com",
        "time": "Thu Jun 06 10:15:08 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 10:02:16 2024"
      },
      "message": "utils: raspberrypi: ctt: Added CAC support to the CTT\n\nAdded the ability to tune the chromatic aberration correction\nwithin the ctt. There are options for cac_only or to tune as part\nof a larger tuning process. CTT will now recognise any files that\nbegin with \"cac\" as being chromatic aberration tuning files.\n\nSigned-off-by: Ben Benson \u003cben.benson@raspberrypi.com\u003e\nSigned-off-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nTested-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nAcked-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "d13542c28f291b88e29f1142d6dff565e772a05c",
      "tree": "5cc8f6b666c21bc9cebf56dbf9de36655b88dbed",
      "parents": [
        "634bc7838f879c208df1915b2259e2a7f8dcefd7"
      ],
      "author": {
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com",
        "time": "Thu Jun 06 10:15:07 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 09:13:33 2024"
      },
      "message": "utils: raspberrypi: ctt: Adapt tuning tool for both VC4 and PiSP\n\nThe old ctt.py and alsc_only.py scripts are removed.\n\nInstead of ctt.py use ctt_vc4.py or ctt_pisp.py, depending on your\ntarget platform.\n\nInstead of alsc_only.py use alsc_vc4.py or alsc_pisp.py, again\naccording to your platform.\n\nSigned-off-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nTested-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nAcked-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "634bc7838f879c208df1915b2259e2a7f8dcefd7",
      "tree": "538d77f63ce0d599b2114ed0f23a8699048e65f3",
      "parents": [
        "20b8538a197c45597eecf5c7a51058263e816eb9"
      ],
      "author": {
        "name": "Naushir Patuck",
        "email": "naush@raspberrypi.com",
        "time": "Thu Jun 06 11:52:23 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Thu Jun 13 08:32:59 2024"
      },
      "message": "pipeline: rpi: Don\u0027t validate configuration in generateConfiguration()\n\ngenerateConfiguration() called validate() as a final step, causing the\nstride and frameSize fields in StreamConfiguration to be filled in based\non the pixel format and width/height.\n\nIf a user application did not clear the stride field when setting up a\ncustom pixel format and width/height, the pipeline handler would respect\nthis stride and possibly overallocate buffers with a larger stride than\nneeded.\n\nFix this by removing the call to validate() completely, leaving the\nstride and frameSize fields defaulting to 0. Removal of this call is\ninconsequential as we hard-code a valid configuration for Raspberry Pi\nplatforms in generateConfiguration().\n\nBug: https://github.com/raspberrypi/libcamera/issues/138\nBug: https://github.com/raspberrypi/libcamera/issues/141\nSigned-off-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nReviewed-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "20b8538a197c45597eecf5c7a51058263e816eb9",
      "tree": "331b65206ccf1291d6453f11248dd3f857353aae",
      "parents": [
        "d9c6835e23ec9ff719acc76abb8cde89450680c2"
      ],
      "author": {
        "name": "Barnabás Pőcze",
        "email": "pobrn@protonmail.com",
        "time": "Wed Jun 12 22:46:16 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 23:13:36 2024"
      },
      "message": "libcamera: yaml_parser: Make default value templated in `get()`\n\nThis way the construction of the default value of type `T`\ncan be delayed until it is really needed, which is useful,\nfor example when `T \u003d\u003d std::string` and the default value comes\nfrom a string literal, as the default value string would always\nbe constructed otherwise, even if not needed.\n\nSigned-off-by: Barnabás Pőcze \u003cpobrn@protonmail.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "d9c6835e23ec9ff719acc76abb8cde89450680c2",
      "tree": "033be287c93483e13c5ac3d6765d3a20ef41c039",
      "parents": [
        "e76bb1f54ce0c097717b16cb7dab7a7ef496de2f"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 21:19:17 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 21:18:22 2024"
      },
      "message": "libcamera: libipa: camera_sensor: Define AR0521 helper functions inline\n\nAll CameraSensorHelper subclasses define their member functions inline,\nexcept for the CameraSensorHelperAr0521 class. Inline the gainCode() and\ngain() functions to match the other classes.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "e76bb1f54ce0c097717b16cb7dab7a7ef496de2f",
      "tree": "0e7278e4781b64345e3c884362c379a595140407",
      "parents": [
        "5c08b179e425a8995462618a967229507293150b"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 21:18:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 09:00:36 2024"
      },
      "message": "libcamera: controls: Add missing period at end of Gamma description\n\nThe last sentence of the Gamma control description misses the final\nperiod. Add it.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "5c08b179e425a8995462618a967229507293150b",
      "tree": "1f51b89ee94d64f96063d786ce2ad1af12c9f345",
      "parents": [
        "1ca1d06d67c1bb1518ce5a96e49fb1cdf64d940b"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 21:14:27 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 09:00:35 2024"
      },
      "message": "ipa: rkisp1: goc: Avoid use of auto for short type\n\nReplace one occurrence of the auto type qualifier with the explicit type\nit represents to increase readability.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "1ca1d06d67c1bb1518ce5a96e49fb1cdf64d940b",
      "tree": "2977c13cb790379b72c1eb562dcc9dd43ab2a6bc",
      "parents": [
        "1566e67f76e949edddc03a34971ed45bee1ab4a6"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 21:14:27 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 09:00:33 2024"
      },
      "message": "ipa: rkisp1: goc: Mark default gamma table as static constexpr\n\nThe values for the default gamma table are stored in an array that is\nnever modified. Mark it as static constexpr to facilitate optimizations.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "1566e67f76e949edddc03a34971ed45bee1ab4a6",
      "tree": "89b5858f2186d9a08daaab3c618c4d38da62856e",
      "parents": [
        "2a253be3339d70f92c8e3d63ea19bafafc628219"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 21:14:27 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 09:00:31 2024"
      },
      "message": "ipa: rkisp1: goc: Use copydoc\n\nUse the Doygen \\copydoc command instead of duplicating documentation.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "2a253be3339d70f92c8e3d63ea19bafafc628219",
      "tree": "e7d159e8c1f425b5953c7d647fd3f501970ce567",
      "parents": [
        "6dba3f461259461f62417d567e8766da27767216"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 21:14:27 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 09:00:28 2024"
      },
      "message": "ipa: rkisp1: goc: Drop incorrect [[maybe_unused]]\n\nA few function parameters are marked with [[maybe_unused]] but are\nactually used. Drop the attribute.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "6dba3f461259461f62417d567e8766da27767216",
      "tree": "efc037a80bffa0b257d41843a8989219f9d8fbbd",
      "parents": [
        "9fcc0029ec7bc8c10bc318fc5828c4b5a2efd461"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 21:14:27 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 12 09:00:25 2024"
      },
      "message": "ipa: rkisp1: goc: Fix typographical issues in documentation.\n\nFix a few assorted typographical issues:\n\n- Sentences should end with a period.\n- Paragraphs should be separated by a blank line, and there should be no\n  line break within a paragraph.\n- Doxygen lists need a list marker (\u0027-\u0027 or \u0027*\u0027, use \u0027-\u0027 here).\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "9fcc0029ec7bc8c10bc318fc5828c4b5a2efd461",
      "tree": "3a92757706de91208e559eca337cbed281407b98",
      "parents": [
        "95fa5c40ba7f0f947e1db3e0fe25134f5175bca7"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Mar 29 12:44:29 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Wed Jun 12 07:53:00 2024"
      },
      "message": "ipa: rpi: controller: Use libipa\u0027s Pwl class\n\nTo reduce code duplication, use the Pwl class from libipa. This also\nremoves the Pwl class from the Raspberry Pi IPA.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nAcked-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "95fa5c40ba7f0f947e1db3e0fe25134f5175bca7",
      "tree": "7ecca6609cb0f698a18ca907c0b544b5ecc7f73e",
      "parents": [
        "93438d1aad688703511a8c75c4c70c29ffb3d8da"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Mar 15 03:11:00 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Wed Jun 12 07:52:18 2024"
      },
      "message": "ipa: libipa: Copy pwl from rpi, and clean it up to match libcamera\n\nCopy the piecewise linear function code from Raspberry Pi,\nand clean it up to align it more with the libcamera style.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nAcked-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "93438d1aad688703511a8c75c4c70c29ffb3d8da",
      "tree": "e0d48b92a2947592fe1f410056c4e7e2a5ecacd4",
      "parents": [
        "d2a5508d0aa17304daf273991de08828e57c82fb"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Fri Jun 07 07:18:41 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Wed Jun 12 07:52:14 2024"
      },
      "message": "ipa: libipa: Add Vector class\n\nAdd a vector class to libipa. The original purpose of this is to replace\nthe floating-point Point class that Raspberry Pi used in their Pwl, as\nthat implementation of Point seemed more akin to a Vector than a Point.\n\nThis is added to libipa instead of to geometry.h to avoid public API\nissues, plus this is not expected to be needed by applications.\n\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "d2a5508d0aa17304daf273991de08828e57c82fb",
      "tree": "c22b6f79fcea1ca1d0ca2d91a81ccb601a9eab7f",
      "parents": [
        "f305cacc9c442358acd2c604817206cf7eeaabe0"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Wed Jun 05 06:34:11 2024"
      },
      "committer": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Tue Jun 11 13:42:18 2024"
      },
      "message": "pipeline: rkisp1: cproc: Fix default value handling\n\nDefault control values were not applied to activeState. This had no negative\nside effects in the first place, as the hardware defaults were used. The issue\nbecame visible, when only one of the controls was set at runtime. In that case\nthe params for the other values were overwritten with 0 (reset value of\nactiveState) resulting in a black image.\n\nWhile at it, only add the controls to the controls map if the algorithm is\ncontained in the tuning file.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Jacopo Mondi \u003cjacopo.mondi@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "f305cacc9c442358acd2c604817206cf7eeaabe0",
      "tree": "99ccfb291d7b5e5d09a8836b14d23949a76ca292",
      "parents": [
        "fceaa7f3e2095a21170bcf5f113bac45cf89b91d"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 11:55:37 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 13:39:22 2024"
      },
      "message": "meson: Group libipa and libipa_includes in a dependency object\n\nMany build targets link with libipa and need libipa_includes. Group them\nin a libipa_dep dependency object to simplify the users.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "fceaa7f3e2095a21170bcf5f113bac45cf89b91d",
      "tree": "fd46e3d57119eb825adb9b3698b2aaf2614b61dd",
      "parents": [
        "fa52898efeaf41514b65466f246432af68f8d3d8"
      ],
      "author": {
        "name": "Milan Zamazal",
        "email": "mzamazal@redhat.com",
        "time": "Mon Jun 10 18:08:50 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 13:27:07 2024"
      },
      "message": "libcamera: software_isp: Fix includes ordering in simple.cpp\n\nLet\u0027s make it conforming to the defined clang-format.\n\nSigned-off-by: Milan Zamazal \u003cmzamazal@redhat.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "fa52898efeaf41514b65466f246432af68f8d3d8",
      "tree": "374f57f808cc34acb03ef31fff5aeec5f4093bb1",
      "parents": [
        "eb41f636941e13a92ddce7893d25abd747e23c45"
      ],
      "author": {
        "name": "Milan Zamazal",
        "email": "mzamazal@redhat.com",
        "time": "Mon Jun 10 18:08:49 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Tue Jun 11 13:26:54 2024"
      },
      "message": "clang-format: Make Qt includes matching case sensitive\n\nNow that stable versions of all major distributions ship clang-format 12\nor newer, we can use the CaseSensitive option for the Qt include\ncategory. This fixes the problem that includes like\n\n  #include \u003cqueue\u003e\n\nare put near the end.\n\nSigned-off-by: Milan Zamazal \u003cmzamazal@redhat.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "eb41f636941e13a92ddce7893d25abd747e23c45",
      "tree": "9059043854f3255696714733cd51508680ad557c",
      "parents": [
        "acfd602767638aa6ce19fd831d5221bdf233195c"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Thu May 16 06:22:20 2024"
      },
      "committer": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Tue Jun 11 13:11:11 2024"
      },
      "message": "ipa: rkisp1: Add GammaOutCorrection algorithm\n\nAdd a gamma algorithm for the rkisp1. It defaults to a gamma of 2.2 which\nclosely resembles sRGB.  No seperate sRGB mode was implemented because the pwl\nthat models the gamma curve is so coarse that there is basically no difference\nbetween srgb and gamma\u003d2.2. The default can be overridden within the tuning\nfile or set at runtime using the gamma control.\n\nThe gamma algorithm is not enabled by default. This will be done in future\ntuning file updates.\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "acfd602767638aa6ce19fd831d5221bdf233195c",
      "tree": "5db6222ad02171909572885a79f4a15562a585c8",
      "parents": [
        "294ead848c3fa200b71062ed78550656a051cfbe"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Wed May 22 13:31:51 2024"
      },
      "committer": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Tue Jun 11 13:11:11 2024"
      },
      "message": "ipa: rkisp1: Fix algorithm controls vanish after configure\n\nstd::unordered_map::merge(source) has the side effect of actually moving items\nfrom source to target. In this case the controls were removed from the source\nmaps on the first call to updateControls() and on the second call to\nupdateControls() they were missing in the source maps and therefore also\nremoved from the camera. Fix this by using insert() instead of merge(). This is\nmost likely cheaper than copy-contructing the source map.\n\nFixes: 4c5152843a2a (\"ipa: rkisp1: Derive rkisp1::algorithms::Agc from AgcMeanLuminance\")\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "294ead848c3fa200b71062ed78550656a051cfbe",
      "tree": "3359b0b4092861c3804e53721fae995bd6760c23",
      "parents": [
        "f3caea0ff7e63b529c9464f911162aa457e9b858"
      ],
      "author": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Thu May 16 10:54:05 2024"
      },
      "committer": {
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com",
        "time": "Tue Jun 11 13:11:11 2024"
      },
      "message": "libcamera: Add gamma control id\n\nA camera gamma of roughly 2.2 is necessary to produce correct output\nimages on a standard monitor. Add a control for that.\n\nFurther information is available here:\nhttps://en.wikipedia.org/wiki/SRGB\nhttps://www.cambridgeincolour.com/tutorials/gamma-correction.htm\n\nSigned-off-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\n"
    },
    {
      "commit": "f3caea0ff7e63b529c9464f911162aa457e9b858",
      "tree": "b41dd34229dd2ddc407ae2086471e6804d164243",
      "parents": [
        "48cb731d72e2bc54d3bf76eb35c6644fa2f924f2"
      ],
      "author": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Mon Jun 03 12:47:00 2024"
      },
      "committer": {
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com",
        "time": "Mon Jun 10 13:05:52 2024"
      },
      "message": "test: ipa: rkisp1: utils: Fix floating and fixed point conversion test\n\nThere was an issue where using map to store the test cases meant that\nthe test for ignoring unused bits was skipped because of clashing keys.\nFix this by moving the offending test out of the loop.\n\nWhile at it, also change the arbitrary floating comparison precision to\nbe more precise.\n\nAlso fix a missing documentation brief.\n\nFixes: 9d152e9c66c1 (\"ipa: rkisp1: Add a helper to convert floating-point to fixed-point\")\nSigned-off-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Stefan Klug \u003cstefan.klug@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "48cb731d72e2bc54d3bf76eb35c6644fa2f924f2",
      "tree": "9759e4e672731444a14e87be5a2378964b5c29b1",
      "parents": [
        "9f0d88695ed6691a3e18c256d9d49862b3af6e34"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 05 07:34:17 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 05 12:11:45 2024"
      },
      "message": "libcamera: dma_buf_allocator: Work around lack of file seals in uClibc\n\nuClibc doesn\u0027t provide the macros defining parameters for the file\nsealing API. Define them manually as a work around.\n\nFixes: ea4baaacc325 (\"libcamera: DmaBufAllocator: Support allocating from /dev/udmabuf\")\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Hans de Goede \u003chdegoede@redhat.com\u003e\n"
    },
    {
      "commit": "9f0d88695ed6691a3e18c256d9d49862b3af6e34",
      "tree": "18b56246572ec71f8dd2f7ebc06ac1251f996f8c",
      "parents": [
        "9c2ca46391ea2ba089d5d082a0dbdd3b15b28498"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 05 07:34:17 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 05 12:11:21 2024"
      },
      "message": "libcamera: dma_buf_allocator: Work around lack of memfd_create() in uClibc\n\nuClibc doesn\u0027t provide a memfd_create() implementation. Fix it by using\na direct syscall when the function isn\u0027t available.\n\nFixes: ea4baaacc325 (\"libcamera: DmaBufAllocator: Support allocating from /dev/udmabuf\")\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Hans de Goede \u003chdegoede@redhat.com\u003e\n"
    },
    {
      "commit": "9c2ca46391ea2ba089d5d082a0dbdd3b15b28498",
      "tree": "19b4ceef6c687d85ff9816644b31929b347b9ada",
      "parents": [
        "98071d3109c131820439f61d9380c0bd4cd2119a"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 05 07:30:55 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Jun 05 09:23:52 2024"
      },
      "message": "libcamera: dma_buf_allocator: Create memfd with CLOEXEC\n\nEnsure that the memfd file descriptor won\u0027t be leaked to child processes\nby creating it with MFD_CLOEXEC.\n\nFixes: ea4baaacc325 (\"libcamera: DmaBufAllocator: Support allocating from /dev/udmabuf\")\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "98071d3109c131820439f61d9380c0bd4cd2119a",
      "tree": "aa1064de8bc6d4ad0e66b23f60592504750105c5",
      "parents": [
        "d284ac2d593725248e074bf9cbee2c44e76c38bd"
      ],
      "author": {
        "name": "Naushir Patuck",
        "email": "naush@raspberrypi.com",
        "time": "Mon Jun 03 09:42:09 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Tue Jun 04 16:01:11 2024"
      },
      "message": "ipa: rpi: Disable StatsOutputEnable control by default\n\nSet the default value of controls::rpi::StatsOutputEnable to false,\ndisabling the functionality. This stops unnecessary copies of the\nstatistics output ending up in the Request metdata if not needed.\n\nSigned-off-by: Naushir Patuck \u003cnaush@raspberrypi.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: David Plowman \u003cdavid.plowman@raspberrypi.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "d284ac2d593725248e074bf9cbee2c44e76c38bd",
      "tree": "6607e6d45272f496fb1e2327a9b4398b3dfd682d",
      "parents": [
        "ea4baaacc3250eadb929fcef59bb9ddefb012952"
      ],
      "author": {
        "name": "Hans de Goede",
        "email": "hdegoede@redhat.com",
        "time": "Mon Jun 03 11:12:59 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Tue Jun 04 15:19:33 2024"
      },
      "message": "libcamera: software_isp: Allow using dma-buffers from /dev/udmabuf\n\nAllow the DmaBufAllocator used by the software ISP to use memfd() +\n/dev/udmabuf for the software ISP destination buffers.\n\nThis is useful on Linux distributions where normal users are not allowed\nto access /dev/dma_heap/* while they are allowed to access /dev/udmabuf.\n\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nTested-by: Bryan O\u0027Donoghue \u003cbryan.odonoghue@linaro.org\u003e # Lenovo-x13s\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "ea4baaacc3250eadb929fcef59bb9ddefb012952",
      "tree": "2bb3870c0da614a0d0a5f0c6f195f1a40ee62391",
      "parents": [
        "447da4a11f06f0d950fe75c20c7bb9f5d5408880"
      ],
      "author": {
        "name": "Hans de Goede",
        "email": "hdegoede@redhat.com",
        "time": "Mon Jun 03 11:12:58 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Tue Jun 04 15:19:33 2024"
      },
      "message": "libcamera: DmaBufAllocator: Support allocating from /dev/udmabuf\n\nThe dma-buf allocator currently allocates from CMA and system heaps.\n\nExtend the dma-buf allocator to support allocating dma-buffers by creating\nmemfd-s and turning those into dma-buffers using /dev/udmabuf.\n\nThe buffers allocated through memfd/udmabuf are not suitable for zero-copy\nbuffer sharing with other devices.\n\nCo-developed-by: Harvey Yang \u003cchenghaoyang@chromium.org\u003e\nSigned-off-by: Harvey Yang \u003cchenghaoyang@chromium.org\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nTested-by: Bryan O\u0027Donoghue \u003cbryan.odonoghue@linaro.org\u003e # Lenovo-x13s\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "447da4a11f06f0d950fe75c20c7bb9f5d5408880",
      "tree": "f12971f0327486e9286e1730959306d7942d4f9d",
      "parents": [
        "6cd17515ffeb67fb38ffcc4d57aadf9732b54800"
      ],
      "author": {
        "name": "Hans de Goede",
        "email": "hdegoede@redhat.com",
        "time": "Mon Jun 03 11:12:57 2024"
      },
      "committer": {
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com",
        "time": "Tue Jun 04 15:19:33 2024"
      },
      "message": "libcamera: Rename DmaHeap class to DmaBufAllocator\n\nUsers of the DmaHeap class really just want some way to allocate\ndma-buffers from userspace. This can also be done by using /dev/udmabuf\ninstead of using /dev/dma_heap/*.\n\nRename DmaHeap class to DmaBufAllocator in preparation of adding\n/dev/udmabuf support.\n\nAnd update the DmaHeap class docs to match including replacing references\nto \"dma-heap type\" with \"dma-buf provider\".\n\nThis is a pure automated rename on the code (\u0027s/DmaHeap/DmaBufAllocator/\u0027)\n+ file renames + doc updates. There are no functional changes.\n\nThe DmaBufAllocator objects in vc4.cpp and software_isp.cpp are left named\ndmaHeap_ to keep the changes to those 2 files to a minimum.\n\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nTested-by: Bryan O\u0027Donoghue \u003cbryan.odonoghue@linaro.org\u003e # Lenovo-x13s\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nSigned-off-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "6cd17515ffeb67fb38ffcc4d57aadf9732b54800",
      "tree": "00e785a2cb253b0614a38b727f708a321164f0ce",
      "parents": [
        "70d553812eb40dd5f48f9e35b90610926842c802"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Feb 28 20:30:22 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 09:18:25 2024"
      },
      "message": "libcamera: v4l2_subdevice: Update to the new kernel routing API\n\nThe subdev embedded data support series includes a change to the\nVIDIOC_SUBDEV_G_ROUTING and VIDIOC_SUBDEV_S_ROUTING ioctls that impacts\nthe userspace API.\n\nUpdate to the new API, while preserving backward compatibility to ease\nthe transition. Document the backward compatibility to only be supported\nfor two kernel releases. As the routing API isn\u0027t enabled in any\nupstream kernel yet, users of the API need kernel patches, and are\nexpected to be able to upgrade quickly.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "70d553812eb40dd5f48f9e35b90610926842c802",
      "tree": "545b5bf1a0feb4a3950dd922dee9120ed548f26e",
      "parents": [
        "f6aa63acadaf8049f68ecdc7d4115f9b613e24cd"
      ],
      "author": {
        "name": "Hans de Goede",
        "email": "hdegoede@redhat.com",
        "time": "Thu May 30 17:15:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 09:14:33 2024"
      },
      "message": "include: linux: Update kernel headers to version v6.10-rc1\n\nUpdated kernel headers to v6.10-rc1 using utils/update-kernel-headers.sh\nand re-instating libcamera local modifications.\n\nThis includes adding include/linux/udmabuf.h which was not part\nof libcamera\u0027s include/linux headers before.\n\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "f6aa63acadaf8049f68ecdc7d4115f9b613e24cd",
      "tree": "410e4435ad13efeb25e869dc716ee6b60a5e8035",
      "parents": [
        "1020b6be51f4475a2016d93799af5753014157fa"
      ],
      "author": {
        "name": "Hans de Goede",
        "email": "hdegoede@redhat.com",
        "time": "Thu May 30 17:15:56 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 09:14:33 2024"
      },
      "message": "update-kernel-headers: Add linux/udmabuf.h to headers to sync\n\nlinux/udmabuf.h will be used by upcoming DmaBufAllocator changes and it\nis not available on some older kernels.\n\nAdd it to the headers to sync.\n\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\n"
    },
    {
      "commit": "1020b6be51f4475a2016d93799af5753014157fa",
      "tree": "dd3fc79f47fb78422566cd11cff0e2d481f75d31",
      "parents": [
        "f7d7a5e294237a50dbdc3aa3e0fa7c3200a08fa7"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Sat Jun 01 23:55:57 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 08:59:45 2024"
      },
      "message": "test: ipa: rkisp1-utils: Fix coding style for template arguments\n\nThe coding style names template arguments using CamelCase with an\nuppercase initial letter. Fix the template arguments in the rkisp1-utils\ntest.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Paul Elder \u003cpaul.elder@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "f7d7a5e294237a50dbdc3aa3e0fa7c3200a08fa7",
      "tree": "48538524a2db89ed8a492549701c6bf544b4a547",
      "parents": [
        "73f18f32c958d681126394fa7556828805221f69"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Apr 22 12:37:10 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 08:53:12 2024"
      },
      "message": "pipeline: vimc: Don\u0027t hardcode scaling factor with recent kernels\n\nStarting in kernel v5.16, the vimc driver stopped hardcoding the scaler\nfactor. Use this to lift constraints on the camera configuration, and in\nparticular on the exotic output size alignment to a multiple of 6. As a\nresult, vimc-based cameras can more easily match common display\nresolutions.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    },
    {
      "commit": "73f18f32c958d681126394fa7556828805221f69",
      "tree": "d7ebc191eb557ff6dab65949d9c3104a057a62ef",
      "parents": [
        "dedf9cf264656c7ce396fb66b69e3c8fcfd458c4"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Apr 24 19:51:38 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 08:53:10 2024"
      },
      "message": "test: v4l2_videodevice: Increase timeout for vimc capture tests\n\nOn slower machines, a 10s timeout to capture frames with vimc can be too\nshort and cause test failures. Make the timeout proportional to the\nnumber of frames expected to be captured, using a conservative low\nestimate of the frame rate at 2fps. This does not increase the test time\nif the vimc driver is fast enough to produce frames.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    },
    {
      "commit": "dedf9cf264656c7ce396fb66b69e3c8fcfd458c4",
      "tree": "8f1e0793dc7e5f38eafdb5a64685b824e5d1445f",
      "parents": [
        "13dcc7fc5f662a8c00eff5dce689c81231b5216e"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Apr 24 19:51:38 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 08:53:07 2024"
      },
      "message": "test: fence: Increase timeout for fence test\n\nOn slower machines, a 1s timeout to capture frames with vimc can be too\nshort and cause test failures. Make the timeout proportional to the\nnumber of frames expected to be captured, using a conservative low\nestimate of the frame rate at 2fps.\n\nBy itself, that change could increase the test time quite substantially\non fast platforms, so break from the capture loop as soon as we capture\nenough frames.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "13dcc7fc5f662a8c00eff5dce689c81231b5216e",
      "tree": "ca48381eec14ff93b20afdb08612bfe44172971e",
      "parents": [
        "c44457957e04b4aba18849c94b51c6a69e6801b3"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Apr 24 21:35:04 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 08:53:04 2024"
      },
      "message": "test: fence: Fix race condition\n\nThe fence test is racy, as it relies on the main loop being executed\nbetween completion of request signalledRequestId_ and\nsignalledRequestId_ + 1. This usually happens, but is not guaranteed.\n\nTo fix the race condition, change the request identification logic by\nreplacing usage of the cookie value, which is zero-based and wraps\naround at nbuffers_ - 1, with a completed request counter that is\none-based and doesn\u0027t wrap. The completedRequestId_, expiredRequestId_\nand signalledRequestId_ variables now track the identifier of the last\nrequest that has completed, the request whose fence will time out, and\nthe request whose fence will be signalled.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\n"
    },
    {
      "commit": "c44457957e04b4aba18849c94b51c6a69e6801b3",
      "tree": "e3e247cb2896e370310b7ca35da236684bc44007",
      "parents": [
        "0554a55427b4b742dbaf473562dcc2d85ef15756"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Wed Apr 24 21:31:45 2024"
      },
      "committer": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Mon Jun 03 08:53:02 2024"
      },
      "message": "test: fence: Turn class member variable into local variable\n\nThe fence_ class member variable is only used locally in the\nFenceTest::run() function. Make it a local variable.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nReviewed-by: Kieran Bingham \u003ckieran.bingham@ideasonboard.com\u003e\nReviewed-by: Daniel Scally \u003cdan.scally@ideasonboard.com\u003e\n"
    }
  ],
  "next": "0554a55427b4b742dbaf473562dcc2d85ef15756"
}
