summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2019-02-27 13:37:11 +0100
committerJacopo Mondi <jacopo@jmondi.org>2019-04-03 10:11:17 +0200
commit9a1cdb7500f2cc4c01aa6f3e6ecf28bcbb5b448f (patch)
tree06cf537c62805617d5b6922f80951d67a3ca3833
parent4ce2f06a1b2c22cdd6abe36d569b682937e4173e (diff)
libcamera: ipu3: Set stream configuration
Use the cached sensor maximum resolution and the pixel format generated by the ImgU output devices as default stream configuration. While at it, replace the hardcoded numerical value for the number of buffers with a named constexpr. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index dfb7eed3..25434d52 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -169,6 +169,8 @@ private:
Stream stream_;
};
+ static constexpr unsigned int IPU3_BUFFER_COUNT = 4;
+
IPU3CameraData *cameraData(const Camera *camera)
{
return static_cast<IPU3CameraData *>(
@@ -201,26 +203,20 @@ std::map<Stream *, StreamConfiguration>
PipelineHandlerIPU3::streamConfiguration(Camera *camera,
std::set<Stream *> &streams)
{
- IPU3CameraData *data = cameraData(camera);
std::map<Stream *, StreamConfiguration> configs;
- V4L2SubdeviceFormat format = {};
-
- /*
- * FIXME: As of now, return the image format reported by the sensor.
- * In future good defaults should be provided for each stream.
- */
- if (data->cio2_.sensor_->getFormat(0, &format)) {
- LOG(IPU3, Error) << "Failed to create stream configurations";
- return configs;
- }
-
- StreamConfiguration config = {};
- config.width = format.width;
- config.height = format.height;
- config.pixelFormat = V4L2_PIX_FMT_IPU3_SGRBG10;
- config.bufferCount = 4;
-
- configs[&data->stream_] = config;
+ IPU3CameraData *data = cameraData(camera);
+ StreamConfiguration *config = &configs[&data->stream_];
+ Size *maxSize = &data->.cio2_.maxSize_;
+
+ config->width = maxSize->width;
+ config->height = maxSize->height;
+ config->pixelFormat = V4L2_PIX_FMT_NV12;
+ config->bufferCount = IPU3_BUFFER_COUNT;
+
+ LOG(IPU3, Debug)
+ << "Stream format set to " << config->width << "x"
+ << config->height << "-0x" << std::hex << std::setfill('0')
+ << std::setw(8) << config->pixelFormat;
return configs;
}