[v2,0/8] libcamera: Add swstats_cpu::processFrame() and atomisp pipeline handler
mbox series

Message ID 20250510141220.54872-1-hdegoede@redhat.com
Headers show
Series
  • libcamera: Add swstats_cpu::processFrame() and atomisp pipeline handler
Related show

Message

Hans de Goede May 10, 2025, 2:12 p.m. UTC
Hi All,

Here is v2 of my patch series adding support to the swstats_cpu code
to process a whole frame in one go (also useful for the GPU-ISP work)
and adding a new pipeline handler for the atomisp.

Original v1 series:
https://patchwork.libcamera.org/cover/21798/

Later rebased resend of just the swstats_cpu::processFrame() changes:
https://patchwork.libcamera.org/cover/22186/

Changes in v2:
- Rebase on top of latest master
- Fix the lack of doxygen documentation
- Reworked "[PATCH v2 7/8] libcamera: ipa_manager: createIPA: Allow
  matching by IPA name instead of by pipeline" this probably is the most
  controversial change in this series
- Modify atomisp pipeline handler to also work with sensors where there
  is an ISP on the sensor which the driver registers as a separate
  v4l2-subdev like the MT9M114 sensor driver

Patches 1-4 have already been reviewed by both Kieran and Milan.

Please review patches 5-8.

This has already successfully passed the CI, see:
https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/atomisp-v2/

Regards,

Hans


Hans de Goede (8):
  libcamera: swstats_cpu: Update statsProcessFn() / processLine0()
    documentation
  libcamera: swstats_cpu: Drop patternSize_ documentation
  libcamera: swstats_cpu: Move header to libcamera/internal/software_isp
  libcamera: software_isp: Move benchmark code to its own class
  libcamera: swstats_cpu: Add processFrame() method
  libcamera: swstats_cpu: Add support for YUV420
  libcamera: ipa_manager: createIPA: Allow matching by IPA name instead
    of by pipeline
  libcamera: Add new atomisp pipeline handler

 include/libcamera/internal/ipa_manager.h      |   7 +-
 include/libcamera/internal/ipa_module.h       |   4 +-
 .../internal/software_isp/benchmark.h         |  36 +
 .../internal/software_isp/meson.build         |   2 +
 .../internal}/software_isp/swstats_cpu.h      |  18 +
 meson.build                                   |   1 +
 meson_options.txt                             |   1 +
 src/ipa/simple/data/uncalibrated_atomisp.yaml |   7 +
 src/libcamera/ipa_manager.cpp                 |   6 +-
 src/libcamera/ipa_module.cpp                  |  19 +-
 src/libcamera/pipeline/atomisp/atomisp.cpp    | 636 ++++++++++++++++++
 src/libcamera/pipeline/atomisp/meson.build    |   5 +
 src/libcamera/software_isp/benchmark.cpp      |  93 +++
 src/libcamera/software_isp/debayer_cpu.cpp    |  36 +-
 src/libcamera/software_isp/debayer_cpu.h      |   9 +-
 src/libcamera/software_isp/meson.build        |   3 +-
 src/libcamera/software_isp/swstats_cpu.cpp    | 178 ++++-
 17 files changed, 985 insertions(+), 76 deletions(-)
 create mode 100644 include/libcamera/internal/software_isp/benchmark.h
 rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (79%)
 create mode 100644 src/ipa/simple/data/uncalibrated_atomisp.yaml
 create mode 100644 src/libcamera/pipeline/atomisp/atomisp.cpp
 create mode 100644 src/libcamera/pipeline/atomisp/meson.build
 create mode 100644 src/libcamera/software_isp/benchmark.cpp

Comments

Bryan O'Donoghue May 10, 2025, 3:41 p.m. UTC | #1
On 10/05/2025 15:12, Hans de Goede wrote:
> Hi All,
> 
> Here is v2 of my patch series adding support to the swstats_cpu code
> to process a whole frame in one go (also useful for the GPU-ISP work)
> and adding a new pipeline handler for the atomisp.
> 
> Original v1 series:
> https://patchwork.libcamera.org/cover/21798/
> 
> Later rebased resend of just the swstats_cpu::processFrame() changes:
> https://patchwork.libcamera.org/cover/22186/
> 
> Changes in v2:
> - Rebase on top of latest master
> - Fix the lack of doxygen documentation
> - Reworked "[PATCH v2 7/8] libcamera: ipa_manager: createIPA: Allow
>    matching by IPA name instead of by pipeline" this probably is the most
>    controversial change in this series
> - Modify atomisp pipeline handler to also work with sensors where there
>    is an ISP on the sensor which the driver registers as a separate
>    v4l2-subdev like the MT9M114 sensor driver
> 
> Patches 1-4 have already been reviewed by both Kieran and Milan.
> 
> Please review patches 5-8.
> 
> This has already successfully passed the CI, see:
> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/atomisp-v2/
> 
> Regards,
> 
> Hans
> 
> 
> Hans de Goede (8):
>    libcamera: swstats_cpu: Update statsProcessFn() / processLine0()
>      documentation
>    libcamera: swstats_cpu: Drop patternSize_ documentation
>    libcamera: swstats_cpu: Move header to libcamera/internal/software_isp
>    libcamera: software_isp: Move benchmark code to its own class
>    libcamera: swstats_cpu: Add processFrame() method
>    libcamera: swstats_cpu: Add support for YUV420
>    libcamera: ipa_manager: createIPA: Allow matching by IPA name instead
>      of by pipeline
>    libcamera: Add new atomisp pipeline handler
> 
>   include/libcamera/internal/ipa_manager.h      |   7 +-
>   include/libcamera/internal/ipa_module.h       |   4 +-
>   .../internal/software_isp/benchmark.h         |  36 +
>   .../internal/software_isp/meson.build         |   2 +
>   .../internal}/software_isp/swstats_cpu.h      |  18 +
>   meson.build                                   |   1 +
>   meson_options.txt                             |   1 +
>   src/ipa/simple/data/uncalibrated_atomisp.yaml |   7 +
>   src/libcamera/ipa_manager.cpp                 |   6 +-
>   src/libcamera/ipa_module.cpp                  |  19 +-
>   src/libcamera/pipeline/atomisp/atomisp.cpp    | 636 ++++++++++++++++++
>   src/libcamera/pipeline/atomisp/meson.build    |   5 +
>   src/libcamera/software_isp/benchmark.cpp      |  93 +++
>   src/libcamera/software_isp/debayer_cpu.cpp    |  36 +-
>   src/libcamera/software_isp/debayer_cpu.h      |   9 +-
>   src/libcamera/software_isp/meson.build        |   3 +-
>   src/libcamera/software_isp/swstats_cpu.cpp    | 178 ++++-
>   17 files changed, 985 insertions(+), 76 deletions(-)
>   create mode 100644 include/libcamera/internal/software_isp/benchmark.h
>   rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (79%)
>   create mode 100644 src/ipa/simple/data/uncalibrated_atomisp.yaml
>   create mode 100644 src/libcamera/pipeline/atomisp/atomisp.cpp
>   create mode 100644 src/libcamera/pipeline/atomisp/meson.build
>   create mode 100644 src/libcamera/software_isp/benchmark.cpp
> 
> --
> 2.49.0
> 
Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # Dell 
Inspiron14p x1e80100
Bryan O'Donoghue May 10, 2025, 4:04 p.m. UTC | #2
On 10/05/2025 15:12, Hans de Goede wrote:
> Hi All,
> 
> Here is v2 of my patch series adding support to the swstats_cpu code
> to process a whole frame in one go (also useful for the GPU-ISP work)
> and adding a new pipeline handler for the atomisp.
> 
> Original v1 series:
> https://patchwork.libcamera.org/cover/21798/
> 
> Later rebased resend of just the swstats_cpu::processFrame() changes:
> https://patchwork.libcamera.org/cover/22186/
> 
> Changes in v2:
> - Rebase on top of latest master
> - Fix the lack of doxygen documentation
> - Reworked "[PATCH v2 7/8] libcamera: ipa_manager: createIPA: Allow
>    matching by IPA name instead of by pipeline" this probably is the most
>    controversial change in this series
> - Modify atomisp pipeline handler to also work with sensors where there
>    is an ISP on the sensor which the driver registers as a separate
>    v4l2-subdev like the MT9M114 sensor driver
> 
> Patches 1-4 have already been reviewed by both Kieran and Milan.
> 
> Please review patches 5-8.
> 
> This has already successfully passed the CI, see:
> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/atomisp-v2/
> 
> Regards,
> 
> Hans
> 
> 
> Hans de Goede (8):
>    libcamera: swstats_cpu: Update statsProcessFn() / processLine0()
>      documentation
>    libcamera: swstats_cpu: Drop patternSize_ documentation
>    libcamera: swstats_cpu: Move header to libcamera/internal/software_isp
>    libcamera: software_isp: Move benchmark code to its own class
>    libcamera: swstats_cpu: Add processFrame() method
>    libcamera: swstats_cpu: Add support for YUV420
>    libcamera: ipa_manager: createIPA: Allow matching by IPA name instead
>      of by pipeline
>    libcamera: Add new atomisp pipeline handler
> 
>   include/libcamera/internal/ipa_manager.h      |   7 +-
>   include/libcamera/internal/ipa_module.h       |   4 +-
>   .../internal/software_isp/benchmark.h         |  36 +
>   .../internal/software_isp/meson.build         |   2 +
>   .../internal}/software_isp/swstats_cpu.h      |  18 +
>   meson.build                                   |   1 +
>   meson_options.txt                             |   1 +
>   src/ipa/simple/data/uncalibrated_atomisp.yaml |   7 +
>   src/libcamera/ipa_manager.cpp                 |   6 +-
>   src/libcamera/ipa_module.cpp                  |  19 +-
>   src/libcamera/pipeline/atomisp/atomisp.cpp    | 636 ++++++++++++++++++
>   src/libcamera/pipeline/atomisp/meson.build    |   5 +
>   src/libcamera/software_isp/benchmark.cpp      |  93 +++
>   src/libcamera/software_isp/debayer_cpu.cpp    |  36 +-
>   src/libcamera/software_isp/debayer_cpu.h      |   9 +-
>   src/libcamera/software_isp/meson.build        |   3 +-
>   src/libcamera/software_isp/swstats_cpu.cpp    | 178 ++++-
>   17 files changed, 985 insertions(+), 76 deletions(-)
>   create mode 100644 include/libcamera/internal/software_isp/benchmark.h
>   rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (79%)
>   create mode 100644 src/ipa/simple/data/uncalibrated_atomisp.yaml
>   create mode 100644 src/libcamera/pipeline/atomisp/atomisp.cpp
>   create mode 100644 src/libcamera/pipeline/atomisp/meson.build
>   create mode 100644 src/libcamera/software_isp/benchmark.cpp
> 
> --
> 2.49.0
> 

Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # Dell
Inspiron14p x1e80100