[libcamera-devel] [PATCH v2 0/5] Transform implementation
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Aug 19 04:16:27 CEST 2020
Hi David,
On Mon, Aug 17, 2020 at 06:02:52PM +0100, David Plowman wrote:
> Hi everyone
>
> I was wondering if I could give this a gentle nudge? I also thought it
> might help if I explain a bit more what we're up to - it's a bit less
> random than it might seem!
I've now reviewed the patches. Sorry again about the delay.
> Some of you will know our existing "raspicam" apps, raspistill,
> raspivid etc. The plan is to introduce libcamera equivalents hoping to
> encourage more of our users to move to libcamera. (PiCamera - Python
> bindings for our existing stack - is also popular of course, but we're
> tackling the "raspicam" apps first.)
>
> The aim is therefore to plug the most obvious functionality gaps,
> which we've identified as:
>
> 1. Raw stream alongside video. This is addressed by some of Naush's
> recent patches on zero-copy raw buffers.
>
> 2. Ability to set camera configuration (esp. exposure/gain) before the
> camera starts. This is very important to many users.
>
> 3. User-level transforms of the image (e.g. 180 degree rotation).
>
> 4. Lack of digital zoom.
>
> Having addressed those we plan to start opening the apps to users to try,
> and being libcamera-based they could be helpful to non-Pi users too.
I'll continue with the review of the other pending series :-)
> I hope that extra information is useful!
>
> On Thu, 6 Aug 2020 at 17:36, David Plowman wrote:
> >
> > Hi everyone
> >
> > Here's a second version of the 2d transform implementation (still for
> > discussion only). It follows the same principles as the previous
> > version, but the ALSC issues that I ran into are no longer part of
> > this set (indeed they have already been merged).
> >
> > There are now 5 patches. I'll add the relevant documentation once we
> > can feel confident there won't be too much more churn. That leaves:
> >
> > 1. The first merely adds the Transform enum. I to-ed and fro-ed a bit
> > here, and decided, after doing it both ways, that wrapping a class
> > round the enum didn't add a whole lot, and just left me with more
> > questions and more boilerplate. Anyway, see what you think...
> >
> > 2. The second patch adds the Transform enum to the
> > CameraConfiguration. I've also amended all the pipeline handlers
> > (including the Raspberry Pi one) simply to coerce it to the Identity
> > if it wasn't, marking the configuration as "adjusted".
> >
> > 3. This patch updates the Raspberry Pi pipeline handler to allow all
> > non-transposing transforms, and to set the flip bits in the sensor.
> >
> > 4. Here I just plumb the Transform through to the Raspberry Pi IPA
> > where it gets put into the CameraMode structure. This bothered me
> > first time round, but on reflection I think it's pragmatic to treat it
> > like that from the point of view of the IPAs.
> >
> > 5. This updates the ALSC algorithm to transform the calibrated tables
> > correctly. Note that we regenerate the tables from scratch if the
> > transform changes.
> >
> > David Plowman (5):
> > libcamera: Add Transform enum to represet 2d plane transforms.
> > libcamera: Add user Transform to CameraConfiguration
> > libcamera: raspberrypi: Set camera flips correctly from user transform
> > libcamera: raspberrypi: Plumb user transform through to IPA
> > libcamera: ipa: raspberrypi: ALSC: Handle user transform
> >
> > include/libcamera/camera.h | 3 +
> > include/libcamera/meson.build | 1 +
> > include/libcamera/transform.h | 58 +++++++++++++
> > src/ipa/raspberrypi/controller/camera_mode.h | 4 +
> > src/ipa/raspberrypi/controller/rpi/alsc.cpp | 13 ++-
> > src/ipa/raspberrypi/raspberrypi.cpp | 48 ++++++-----
> > src/libcamera/camera.cpp | 2 +-
> > src/libcamera/meson.build | 1 +
> > src/libcamera/pipeline/ipu3/ipu3.cpp | 5 ++
> > .../pipeline/raspberrypi/raspberrypi.cpp | 26 +++++-
> > src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 ++
> > src/libcamera/pipeline/simple/simple.cpp | 5 ++
> > src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 5 ++
> > src/libcamera/pipeline/vimc/vimc.cpp | 5 ++
> > src/libcamera/transform.cpp | 83 +++++++++++++++++++
> > 15 files changed, 238 insertions(+), 26 deletions(-)
> > create mode 100644 include/libcamera/transform.h
> > create mode 100644 src/libcamera/transform.cpp
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list