From patchwork Wed Feb 20 23:59:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 602 Return-Path: Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 71419601E4 for ; Thu, 21 Feb 2019 00:59:54 +0100 (CET) X-Halon-ID: 9c1aa7d2-356b-11e9-b530-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [89.233.230.99]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id 9c1aa7d2-356b-11e9-b530-005056917a89; Thu, 21 Feb 2019 00:59:51 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 21 Feb 2019 00:59:38 +0100 Message-Id: <20190220235939.25147-4-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220235939.25147-1-niklas.soderlund@ragnatech.se> References: <20190220235939.25147-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 3/4] libcamera: pipeline: vimc: enforce stream configuration X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Feb 2019 23:59:54 -0000 The format requested by configureStreams() should exactly match what programmed on the video device it self. If they do not match the call should fail as the application in that case will not know what configuration actually was programmed. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/libcamera/pipeline/vimc.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp index a93a7589643834c6..812777cffbb3e618 100644 --- a/src/libcamera/pipeline/vimc.cpp +++ b/src/libcamera/pipeline/vimc.cpp @@ -83,6 +83,7 @@ int PipelineHandlerVimc::configureStreams(Camera *camera, std::map &config) { StreamConfiguration *cfg = &config[&stream_]; + int ret; LOG(VIMC, Debug) << "Configure the camera for resolution " << cfg->width << "x" << cfg->height; @@ -92,7 +93,16 @@ int PipelineHandlerVimc::configureStreams(Camera *camera, format.height = cfg->height; format.fourcc = cfg->pixelFormat; - return video_->setFormat(&format); + ret = video_->setFormat(&format); + if (ret) + return ret; + + if (format.width != cfg->width || + format.height != cfg->height || + format.fourcc != cfg->pixelFormat) + return -EINVAL; + + return 0; } int PipelineHandlerVimc::allocateBuffers(Camera *camera, Stream *stream)