diff options
author | Jacopo Mondi <jacopo.mondi@ideasonboard.com> | 2022-11-24 13:12:19 +0100 |
---|---|---|
committer | Jacopo Mondi <jacopo.mondi@ideasonboard.com> | 2023-01-28 15:37:50 +0100 |
commit | 020e9607e327e4ff45c2c22490a0612056ad22fe (patch) | |
tree | 0d2ada6a3c4ab5d37fea8ea655db853a9bc3c20d | |
parent | 1f85be8b0d7acd380d194c94ba10813994eb1778 (diff) |
libcamera: rkisp1: Add support for Transform
Add support for Transform to the RkISP1 pipeline handler.
The pipeline rotates using the sensor's V/H flips, hence use the
CameraSensor helpers to handle transformation requests from
applications.
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
-rw-r--r-- | src/libcamera/pipeline/rkisp1/rkisp1.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 5bdb4d25..5f22a29d 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -25,6 +25,7 @@ #include <libcamera/framebuffer.h> #include <libcamera/request.h> #include <libcamera/stream.h> +#include <libcamera/transform.h> #include <libcamera/ipa/core_ipa_interface.h> #include <libcamera/ipa/rkisp1_ipa_interface.h> @@ -470,17 +471,17 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate() status = validateColorSpaces(ColorSpaceFlag::StreamsShareColorSpace); - if (transform != Transform::Identity) { - transform = Transform::Identity; - status = Adjusted; - } - /* Cap the number of entries to the available streams. */ if (config_.size() > pathCount) { config_.resize(pathCount); status = Adjusted; } + Transform requestedTransform = transform; + Transform combined = sensor->validateTransform(&transform); + if (transform != requestedTransform) + status = Adjusted; + /* * Simultaneous capture of raw and processed streams isn't possible. If * there is any raw stream, cap the number of streams to one. @@ -590,6 +591,8 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate() if (sensorFormat_.size.isNull()) sensorFormat_.size = sensor->resolution(); + sensorFormat_.transform = combined; + return status; } |