From patchwork Sun Feb 24 17:36:59 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: 612 Return-Path: Received: from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net [195.74.38.228]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 0F4C6610BB for ; Sun, 24 Feb 2019 18:37:12 +0100 (CET) X-Halon-ID: d0745186-385a-11e9-b5ae-0050569116f7 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [89.233.230.99]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id d0745186-385a-11e9-b5ae-0050569116f7; Sun, 24 Feb 2019 18:37:10 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Sun, 24 Feb 2019 18:36:59 +0100 Message-Id: <20190224173701.8587-3-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190224173701.8587-1-niklas.soderlund@ragnatech.se> References: <20190224173701.8587-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 2/4] libcamera: pipeline: uvcvideo: 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: Sun, 24 Feb 2019 17:37:13 -0000 The format requested by configureStreams() should exactly match what is programmed on the video device. If they do not match the call should fail as the application in that case will not know what configuration was actually programmed. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/libcamera/pipeline/uvcvideo.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp index 37a3477c2c56f3ea..b7b8ff109109e9c5 100644 --- a/src/libcamera/pipeline/uvcvideo.cpp +++ b/src/libcamera/pipeline/uvcvideo.cpp @@ -84,6 +84,7 @@ int PipelineHandlerUVC::configureStreams(Camera *camera, std::map &config) { StreamConfiguration *cfg = &config[&stream_]; + int ret; LOG(UVC, Debug) << "Configure the camera for resolution " << cfg->width << "x" << cfg->height; @@ -93,7 +94,16 @@ int PipelineHandlerUVC::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 PipelineHandlerUVC::allocateBuffers(Camera *camera, Stream *stream)