[libcamera-devel] [PATCH 0/5] Transform implementation

David Plowman david.plowman at raspberrypi.com
Wed Jul 29 11:31:49 CEST 2020


Hi everyone

This patch set isn't complete, however, I thought it was worth giving
people the chance to have a look, and this also allows me to ask a few
more questions!

There are 5 patches.

1. The first one merely adds the Transform class and inserts a
Transform field into the CameraConfiguration. This is the only
non-Raspberry Pi code.

2. Handles the transform in the RPi pipeline handler so that the
correct flips are applied to the camera. Also passes the transform to
the IPA.

3. Plumbs the transform through to all the separate control algorithms
via the SwitchMode method (but does nothing further to handle the
transform).

4. Handles the transform correctly in ALSC.

5. As part of patch 4, I noticed it wasn't dealing correctly with the
luminance tables, irrespective of the transform. This fixes that and
actually improves the handling of camera mode switches in general.

Comments/Questions:

* In patch #1, transform.h is labelled as "Copyright Google". Or
  should I put Raspberry Pi? Does it matter?

* Patch #1 needs documentation. It looks like I need to write a
  transform.cpp file in the manner of (for example) geometry.cpp. Is
  that right, or is there anything else? (Do we mind if this file has
  nothing but comments?) How would I test the generated documentation
  is correct?

* Patch #2 has an ugly cast...

I think that's everything for now. Suggestions welcome as ever...!

Best regards
David

David Plowman (5):
  libcamera: Add Transform class
  libcamera: raspberrypi: Apply transform and pass through to IPA
  libcamera: raspberrypi: Plumb user transform through to individual
    IPAs
  libcamera: raspberrypi: ALSC: Handle transform in colour tables
  libcamera: raspberrypi: ALSC: Fix crop/transform of luminance table

 include/libcamera/camera.h                    |   3 +
 include/libcamera/ipa/raspberrypi.h           |   1 +
 include/libcamera/meson.build                 |   1 +
 include/libcamera/transform.h                 | 193 ++++++++++++++++++
 src/ipa/raspberrypi/controller/algorithm.cpp  |   4 +-
 src/ipa/raspberrypi/controller/algorithm.hpp  |   3 +-
 src/ipa/raspberrypi/controller/controller.cpp |   5 +-
 src/ipa/raspberrypi/controller/controller.hpp |   5 +-
 src/ipa/raspberrypi/controller/rpi/agc.cpp    |   3 +-
 src/ipa/raspberrypi/controller/rpi/agc.hpp    |   3 +-
 src/ipa/raspberrypi/controller/rpi/alsc.cpp   | 108 +++++++---
 src/ipa/raspberrypi/controller/rpi/alsc.hpp   |   9 +-
 src/ipa/raspberrypi/controller/rpi/noise.cpp  |   4 +-
 src/ipa/raspberrypi/controller/rpi/noise.hpp  |   3 +-
 .../raspberrypi/controller/rpi/sharpen.cpp    |   3 +-
 .../raspberrypi/controller/rpi/sharpen.hpp    |   3 +-
 src/ipa/raspberrypi/raspberrypi.cpp           |  44 ++--
 .../pipeline/raspberrypi/raspberrypi.cpp      |  27 ++-
 18 files changed, 356 insertions(+), 66 deletions(-)
 create mode 100644 include/libcamera/transform.h

-- 
2.20.1



More information about the libcamera-devel mailing list