summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-07-24 14:01:46 +0200
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-09-28 23:53:45 +0200
commite260513f5208e5f4641a4c2587003f17b2811029 (patch)
tree5355425b51254fc3f85ab2b168d880bb27c644e8
parent0862959184f2f59fb7d9a6787b3b53282ecca905 (diff)
libcamera: pipeline: rkisp1: Breakout mainpath size and format constraints
Breakout the mainpath size and format constrains as it will be used in more places then just validate(). While at it use the new helpers to validate Size. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/libcamera/pipeline/rkisp1/rkisp1.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 77a48106..a5b6bb07 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -37,6 +37,21 @@ namespace libcamera {
LOG_DEFINE_CATEGORY(RkISP1)
+namespace {
+constexpr Size RKISP1_RSZ_MP_SRC_MIN{ 32, 16 };
+constexpr Size RKISP1_RSZ_MP_SRC_MAX{ 4416, 3312 };
+constexpr std::array<PixelFormat, 7> RKISP1_RSZ_MP_FORMATS{
+ formats::YUYV,
+ formats::YVYU,
+ formats::VYUY,
+ formats::NV16,
+ formats::NV61,
+ formats::NV21,
+ formats::NV12,
+ /* \todo Add support for 8-bit greyscale to DRM formats */
+};
+} /* namespace */
+
class PipelineHandlerRkISP1;
class RkISP1ActionQueueBuffers;
@@ -456,17 +471,6 @@ RkISP1CameraConfiguration::RkISP1CameraConfiguration(Camera *camera,
CameraConfiguration::Status RkISP1CameraConfiguration::validate()
{
- static const std::array<PixelFormat, 7> formats{
- formats::YUYV,
- formats::YVYU,
- formats::VYUY,
- formats::NV16,
- formats::NV61,
- formats::NV21,
- formats::NV12,
- /* \todo Add support for 8-bit greyscale to DRM formats */
- };
-
const CameraSensor *sensor = data_->sensor_;
Status status = Valid;
@@ -482,8 +486,8 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
StreamConfiguration &cfg = config_[0];
/* Adjust the pixel format. */
- if (std::find(formats.begin(), formats.end(), cfg.pixelFormat) ==
- formats.end()) {
+ if (std::find(RKISP1_RSZ_MP_FORMATS.begin(), RKISP1_RSZ_MP_FORMATS.end(),
+ cfg.pixelFormat) == RKISP1_RSZ_MP_FORMATS.end()) {
LOG(RkISP1, Debug) << "Adjusting format to NV12";
cfg.pixelFormat = formats::NV12,
status = Adjusted;
@@ -520,8 +524,8 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
/ sensorFormat_.size.width;
}
- cfg.size.width = std::max(32U, std::min(4416U, cfg.size.width));
- cfg.size.height = std::max(16U, std::min(3312U, cfg.size.height));
+ cfg.size.boundTo(RKISP1_RSZ_MP_SRC_MAX);
+ cfg.size.expandTo(RKISP1_RSZ_MP_SRC_MIN);
if (cfg.size != size) {
LOG(RkISP1, Debug)