summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo.mondi@ideasonboard.com>2022-11-24 13:12:19 +0100
committerJacopo Mondi <jacopo.mondi@ideasonboard.com>2023-01-28 15:37:50 +0100
commit020e9607e327e4ff45c2c22490a0612056ad22fe (patch)
tree0d2ada6a3c4ab5d37fea8ea655db853a9bc3c20d
parent1f85be8b0d7acd380d194c94ba10813994eb1778 (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.cpp13
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;
}