summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2020-07-04 17:55:42 +0900
committerPaul Elder <paul.elder@ideasonboard.com>2020-07-10 16:11:24 +0900
commit3a9c574ed9fd17e7bfec41abf09ada08ec8872aa (patch)
tree04b52e41e5f141b697393ebdc891e1c043320aae /src/libcamera/pipeline
parentbded08db18109eddc62caa970829ee7da9bf2573 (diff)
libcamera: ipu3: Fill stride and frameSize at config validation
Fill the stride and frameSize fields of the StreamConfiguration at configuration validation time instead of at camera configuration time. This allows applications to get the stride when trying a configuration without modifying the active configuration of the camera. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline')
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index af51fb2d..eb00eecf 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -278,6 +278,12 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
<< cfg.toString();
status = Adjusted;
}
+
+ const PixelFormatInfo &info = PixelFormatInfo::info(cfg.pixelFormat);
+ bool packedRaw = info.colourEncoding == PixelFormatInfo::ColourEncodingRAW;
+
+ cfg.stride = info.stride(cfg.size.width, 0, packedRaw ? 64 : 1);
+ cfg.frameSize = info.frameSize(cfg.size, packedRaw ? 64 : 1);
}
return status;
@@ -495,21 +501,13 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
if (ret)
return ret;
- cfg.stride = outputFormat.planes[0].bpl;
outActive = true;
} else if (stream == vfStream) {
ret = imgu->configureViewfinder(cfg, &outputFormat);
if (ret)
return ret;
- cfg.stride = outputFormat.planes[0].bpl;
vfActive = true;
- } else {
- /*
- * The RAW stream is configured as part of the CIO2 and
- * no configuration is needed for the ImgU.
- */
- cfg.stride = cio2Format.planes[0].bpl;
}
}