[libcamera-devel] [PATCH v4 0/7] 2D transforms
David Plowman
david.plowman at raspberrypi.com
Fri Aug 28 16:41:03 CEST 2020
Hi everyone
Here's the latest version of 2D transforms. It's practically identical
to the previous version, except for the (mostly documentation)
improvements that were suggested, and the following points noted
below.
Firstly, there are 2 new commits at the start of this set. The first
of these reverts the commit 1e8c91b65695449c5246d17ba7dc439c8058b781
that Kieran kindly pushed for us yesterday. Unfortunately that patch,
whilst fine when Naush originally authored it, made it impossible to
implement user-supplied transforms. Had it not been lurking in a
rather forgotten state for so long I might have woken up to its
problems sooner, so apologies for that. Anyway, I'm not quite sure if
you have any conventions for exactly how to revert a patch.
The second of these new patches moves the change made by the now
reverted patch into the validate() method. This is early enough to fix
the original bug (which was that raw streams were advertising an
incorrect Bayer format), but co-exists happily with the transform
code. (Would these two be better squished together?)
Beyond that the only issues to bring up are in what is now the fifth
commit of this series (third in the previous version). These relate to
that email I sent a few days back. Specifically:
* I assume the intention is, when no user-supplied transform is given,
that we give out images that are corrected for any camera
rotation. That is, the image, when viewed without any supplementary
manipulations, should look like the world did when the picture was
taken. Is this correct?
* So if a camera advertises itself as having a 90 degree rotation, do
I need to perform a 90 degree clockwise rotation to the image to
correct it, or counter-clockwise? I read the documentation on the
rotation property but must confess I was left a little hazy! (The
consequence would be that the rotation angle may need negating.)
* I've added a comment to say why I only flip the transpose bit when
the combined transform is one we don't support. It makes life easier
for the application because it either gets the transform it
requested, or it only has to do a simple transpose. All the other
possible transforms an application might worry about having to do
just can't happen. Does that make sense?
I think that's everything!
Thanks and best regards
David
David Plowman (7):
libcamera: pipeline: raspberrypi: Revert "Set sensor default
orientation before configure()"
libcamera: pipeline: raspberrypi: Set sensor orientation during
validate
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 | 73 ++++
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 | 16 +-
src/libcamera/meson.build | 1 +
src/libcamera/pipeline/ipu3/ipu3.cpp | 5 +
.../pipeline/raspberrypi/raspberrypi.cpp | 60 +++-
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 | 312 ++++++++++++++++++
15 files changed, 522 insertions(+), 34 deletions(-)
create mode 100644 include/libcamera/transform.h
create mode 100644 src/libcamera/transform.cpp
--
2.20.1
More information about the libcamera-devel
mailing list