[libcamera-devel] [PATCH] libcamera: rkisp1: Generate configuration from main path if only one role
Kieran Bingham
kieran.bingham at ideasonboard.com
Wed Jun 22 10:31:42 CEST 2022
Quoting Paul Elder via libcamera-devel (2022-06-22 08:46:08)
> The current logic for generating configurations assumes that we have
> multiple roles. The consequence of this is that if only one role is
> requested, and it is for viewfinder or recording, then the self path's
> configuration generator would be used instead of the main path's. This
> is what causes the default resolution on the rkisp1 pipeline handler to
> be 1920x1920 (since it's the max resolution of the self path). Note that
> the main path is still used for streaming, just that it is using self
> path's default configuraion (if it isn't changed by the application).
>
> This patch skips all the logic for determining which path to assign to
> which role in the event that only one role is requested. In this case,
> we simply generate the configuration from the math path. This makes the
s/math/main/
> default resolution for a single stream 2592x1944.
This sounds like quite a large effect, but I suspect it's ok. If a
StreamRole is set to ViewFinder, should this default resolution be
smaller?
>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
> src/libcamera/pipeline/rkisp1/rkisp1.cpp | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 7cf36524..43b76e14 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -515,6 +515,16 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera
> if (roles.empty())
> return config;
>
> + if (roles.size() == 1) {
> + StreamConfiguration cfg = data->mainPath_->generateConfiguration(
> + data->sensor_->resolution());
> +
> + config->addConfiguration(cfg);
> + config->validate();
> +
> + return config;
> + }
> +
> bool mainPathAvailable = true;
> bool selfPathAvailable = true;
> for (const StreamRole role : roles) {
> --
> 2.30.2
>
More information about the libcamera-devel
mailing list