Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Arducam OV64A40 64MPx camera module #84

Closed
wants to merge 22 commits into from

Commits on Oct 18, 2023

  1. meson: Add libpisp.wrap

    Add a new subpoject wrap file for the libpisp library located at
    https://github.com/raspberrypi/libpisp
    
    The libpisp library is used to configure the Raspberry Pi 5 Frontend
    and Backend ISP components.
    
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
    naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    be13578 View commit details
    Browse the repository at this point in the history
  2. libcamera: formats: Add PiSP specific image and config buffer formats

    Add the Raspberry Pi 5 PiSP specific compressed Bayer format types 1/2:
    - V4L2_PIX_FMT_PISP_COMP1_xxx
    - V4L2_PIX_FMT_PISP_COMP2_xxx
    
    Add the Raspberry Pi 5 PiSP Frontend and Backend config formats:
    - V4L2_META_FMT_RPI_FE_CFG
    - V4L2_META_FMT_RPI_BE_CFG
    
    Add the Raspberry Pi 5 PiSP Frontend statistics format:
    - V4L2_META_FMT_RPI_FE_STATS
    
    Add 16-bit Bayer formats:
    - MEDIA_BUS_FMT_Sxxx16_1X16
    
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
    naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    f0cf7c1 View commit details
    Browse the repository at this point in the history
  3. ipa: rpi: hdr: Add the ability to alter the LSC table

    We can perform some of the local contrast adjustment using global
    gains in the LSC table. We can vary the amount of gain according to
    the measured brightness of that image region.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    davidplowman authored and naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    98be53f View commit details
    Browse the repository at this point in the history
  4. ipa: rpi: alsc: Do not re-read the alsc.status metadata

    This was being re-read in order to determine what LSC gains had been
    applied. We can just retrieve these numbers from the prevAsyncResults_
    instead.
    
    This will also enable other future algorithms to manipulate the LSC
    tables in the alsc.status, without it breaking the core ALSC algorithm
    here.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    davidplowman authored and naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    18b8db1 View commit details
    Browse the repository at this point in the history
  5. ipa: rpi: agc: Allow AGC channels to avoid using "fast desaturation"

    "Fast desaturation" is a technique that can help the AGC algorithm to
    desaturate images more quickly when they are very
    over-exposed. However, it uses digital gain to do this which can
    confuse our HDR techniques. Therefore make it optional.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    davidplowman authored and naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    1768689 View commit details
    Browse the repository at this point in the history
  6. ipa: rpi: vc4: Move denoise control handling into the VC4 derived IPA

    Since noise control handling differs between the VC4 and PiSP IPAs,
    move the current denoise control handler from ipa base into the vc4 IPA
    derived class.
    
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    7516374 View commit details
    Browse the repository at this point in the history
  7. ipa: rpi: agc: Fetch AWB status in the prepare method

    AWB writes this out during prepare, so we may as well read it in AGC
    prepare as well. Reading it in process is wrong on the PiSP platform
    because process runs before prepare, so the AWB status won't be there
    (on vc4 it made no difference).
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    davidplowman authored and naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    54ecd61 View commit details
    Browse the repository at this point in the history
  8. ipa: rpi: agc: Make AGC controls affect all channels

    We need to be able to do things like enable/disable AGC for all the
    channels, so most of the AGC controls are updated to be applied to all
    channels. There are a couple of exceptions, such as setting explicit
    shutter/gain values, which apply only to channel 0.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    davidplowman authored and naushir committed Oct 18, 2023
    Configuration menu
    Copy the full SHA
    b51c2dc View commit details
    Browse the repository at this point in the history

Commits on Oct 19, 2023

  1. libcamera: controls: Add controls for HDR

    We add an HdrMode control (to enable and disable HDR processing)
    and an HdrChannel, which indicates what kind of HDR frame (short, long
    or medium) has just arrived.
    
    Currently the HdrMode supports the following values:
    
    * Off - no HDR processing at all.
    * MultiExposureUnmerged - frames at multiple different exposures are
      produced, but not merged together. They are returned "as is".
    * MultiExposure - frames at multiple different exposures are merged
      to create HDR images.
    * SingleExposure - multiple frames all at the same exposure are
      merged to create HDR images.
    * Night - multiple frames will be combined to create "night mode"
      images.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
    davidplowman authored and naushir committed Oct 19, 2023
    Configuration menu
    Copy the full SHA
    8782dbf View commit details
    Browse the repository at this point in the history

Commits on Oct 20, 2023

  1. ipa: rpi: Add HDR support

    Add support for the following HDR modes in the Raspberry Pi IPA:
    - Night mode
    - Single exposure mode
    - Multi-exposure (merged and unmerged)
    
    The algorithm is updated to expect the HDR short channel to meter
    explicitly for highlights. This means that it will not in general
    under-expose the short channel more than is actually necessary.
    
    The impact on the HDR algorithm is then that this determines how we
    build tonemaps dynamically. The highlights are more-or-less correct
    now, so we have to build a power-type curve that gives us the
    appropriately configured targets in the lower part of the histogram.
    
    We allow the tuning file to supply the maximum spatial gain value,
    rather than the whole curve (though it can supply this if it
    wants). Some parameter defaults are tweaked to be generally better
    across the range of our cameras.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
    naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    4eb5f28 View commit details
    Browse the repository at this point in the history
  2. pipeline: rpi: Add support for Raspberry Pi 5

    Add the Raspberry Pi 5 ISP (PiSP) pipeline handler to libcamera. To
    include this pipeline handler in the build, set the following meson
    option:
    
    meson configure -Dpipelines=rpi/pisp
    
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
    naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    b61527d View commit details
    Browse the repository at this point in the history
  3. ipa: rpi: Add support for Raspberry Pi 5

    Add the Raspberry Pi 5 ISP (PiSP) IPA to libcamera. To include this IPA
    in the build, set the following meson option:
    
    meson configure -Dipas=rpi/pisp
    
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
    naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    b866eaa View commit details
    Browse the repository at this point in the history
  4. utils: raspberrypi: ctt: Adapt tuning tool for both VC4 and PiSP

    The old ctt.py and alsc_only.py scripts are removed.
    
    Instead of ctt.py use ctt_vc4.py or ctt_pisp.py, depending on your
    target platform.
    
    Instead of alsc_only.py use alsc_vc4.py or alsc_pisp.py, again
    according to your platform.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
    davidplowman authored and naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    8be0303 View commit details
    Browse the repository at this point in the history
  5. utils: raspberrypi: ctt: Added CAC support to the CTT

    Added the ability to tune the chromatic aberration correction
    within the ctt. There are options for cac_only or to tune as part
    of a larger tuning process. CTT will now recognise any files that
    begin with "cac" as being chromatic aberration tuning files.
    
    Signed-off-by: Ben Benson <ben.benson@raspberrypi.com>
    Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
    bebon901 authored and naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    ac34a10 View commit details
    Browse the repository at this point in the history
  6. utils: raspberrypi: ctt: Changed CTT handling of VC4 and PiSP

    Changed how users select which platform to tune for. Now users
    specify a command line argument, '-t', to specify which target
    platform.
    
    Signed-off-by: Ben Benson <ben.benson@raspberrypi.com>
    Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
    bebon901 authored and naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    a9d0eb3 View commit details
    Browse the repository at this point in the history
  7. utils: raspberrypi: ctt: Update tuning tool for HDR

    The various boilerplate parts of the tuning file are extended to
    include the necessary extra bits for HDR, specifically:
    
    * rpi.denoise has different configurations for HDR modes
    * rpi.agc now has extra channels for HDR
    * rpi.hdr parameters are added.
    
    Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
    Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
    davidplowman authored and naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    bb894e5 View commit details
    Browse the repository at this point in the history
  8. RASPBERRYPI ONLY: Add Sony IMX708 sensor properties

    The IMX708 sensor driver advertises its module variants (narrow/wide angle lens,
    IR block/pass) by modifying the media entity name string. So add duplicate
    entries for each variant.
    
    Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
    Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
    njhollinghurst authored and naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    abe7174 View commit details
    Browse the repository at this point in the history
  9. RASPBERRYPI ONLY: Handle mandatory stream flags

    Look for the RAW mandatory stream flag in the pipeline handler config
    file. If this flag is set, it guarantees that the application will
    provide buffers for Unicam Image, so override the minUnicamBuffers and
    minTotalUnicamBuffers config parameters in the following way:
    
    - If startup drop frames are required, allocate at least 1 internal buffer.
    - If no startup drop frames are required, do not allocate any internal buffers.
    
    Look for the Output 0 mandatory stream flag in in the pipeline handler
    config file. If this flag is set, it guarantees that the application
    will provide buffers for the ISP, do not allocate any internal buffers
    for the device.
    
    Add a new rpi_apps.yaml pipeline handler config file that enables both
    these flags.  To use the file, set the following env variable for a
    custom build:
    
    export LIBCAMERA_RPI_CONFIG_FILE=/usr/local/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml
    
    or for a packaged install:
    
    export LIBCAMERA_RPI_CONFIG_FILE=/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml
    
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    naushir committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    4a23664 View commit details
    Browse the repository at this point in the history

Commits on Nov 10, 2023

  1. libcamera: camera_sensor: Add OV64A40 sensor properties

    Add an entry for the Omnivision OV64A40 Sensor which has a square pixel
    size of 1.008µm.
    
    Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    kbingham authored and Jacopo Mondi committed Nov 10, 2023
    Configuration menu
    Copy the full SHA
    b775911 View commit details
    Browse the repository at this point in the history
  2. ipa: rpi: Provide a Camera Helper for the OV64A40

    Support the OV64A40 sensor with a camera helper to manage the gain
    model, light sensitivity, and control delays.
    
    Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
    Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
    Jacopo Mondi committed Nov 10, 2023
    Configuration menu
    Copy the full SHA
    83a5acf View commit details
    Browse the repository at this point in the history
  3. ipa: rpi: vc4: Add OV64A40 tuning files

    Provide the OV64A40 tuning files for the Arducam Omnivision camera
    module to operate on the VC4 ISP architecture on Raspberry Pi 4 and
    below.
    
    Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
    Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    kbingham authored and Jacopo Mondi committed Nov 10, 2023
    Configuration menu
    Copy the full SHA
    c409c4a View commit details
    Browse the repository at this point in the history
  4. ipa: rpi: pisp: Add OV64A40 tuning file

    Provide the OV64A40 tuning files for the Arducam Omnivision camera
    module to operate on the PiSP ISP architecture on Raspberry Pi5.
    
    Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
    Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
    Jacopo Mondi committed Nov 10, 2023
    Configuration menu
    Copy the full SHA
    5fc413f View commit details
    Browse the repository at this point in the history