From patchwork Wed Feb 20 14:37:33 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: 595 Return-Path: Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D9F1D60100 for ; Wed, 20 Feb 2019 15:38:48 +0100 (CET) X-Halon-ID: 39bae34c-351d-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 39bae34c-351d-11e9-b530-005056917a89; Wed, 20 Feb 2019 15:38:45 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Feb 2019 15:37:33 +0100 Message-Id: <20190220143736.529-2-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220143736.529-1-niklas.soderlund@ragnatech.se> References: <20190220143736.529-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/4] cam: free allocated buffers when done capturing 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 14:38:49 -0000 The allocated buffers needs to be freed once the application is done with them. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 9b67ab75a6a1663e..b034eb25429abeb3 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -163,7 +163,8 @@ static int capture() Request *request = camera->createRequest(); if (!request) { std::cerr << "Can't create request" << std::endl; - return -ENOMEM; + ret = -ENOMEM; + goto out; } std::map map; @@ -171,13 +172,13 @@ static int capture() ret = request->setBuffers(map); if (ret < 0) { std::cerr << "Can't set buffers for request" << std::endl; - return ret; + goto out; } ret = camera->queueRequest(request); if (ret < 0) { std::cerr << "Can't queue request" << std::endl; - return ret; + goto out; } } @@ -187,6 +188,9 @@ static int capture() ret = loop->exec(); camera->stop(); +out: + camera->freeBuffers(); + return ret; } From patchwork Wed Feb 20 14:37:34 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: 596 Return-Path: Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5CC90600FF for ; Wed, 20 Feb 2019 15:38:49 +0100 (CET) X-Halon-ID: 3a18f3d9-351d-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 3a18f3d9-351d-11e9-b530-005056917a89; Wed, 20 Feb 2019 15:38:46 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Feb 2019 15:37:34 +0100 Message-Id: <20190220143736.529-3-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220143736.529-1-niklas.soderlund@ragnatech.se> References: <20190220143736.529-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/4] cam: improve error checking when capturing 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 14:38:49 -0000 The return value when start() and stop() the camera should be checked and handled. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index b034eb25429abeb3..30267970a2c8485f 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -183,11 +183,18 @@ static int capture() } std::cout << "Capture until user interrupts by SIGINT" << std::endl; - camera->start(); + + ret = camera->start(); + if (ret) { + std::cout << "Failed to start capture" << std::endl; + goto out; + } ret = loop->exec(); - camera->stop(); + ret = camera->stop(); + if (ret) + std::cout << "Failed to stop capture" << std::endl; out: camera->freeBuffers(); From patchwork Wed Feb 20 14:37:35 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: 597 Return-Path: Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D44F1601E7 for ; Wed, 20 Feb 2019 15:38:50 +0100 (CET) X-Halon-ID: 3a84663d-351d-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 3a84663d-351d-11e9-b530-005056917a89; Wed, 20 Feb 2019 15:38:46 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Feb 2019 15:37:35 +0100 Message-Id: <20190220143736.529-4-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220143736.529-1-niklas.soderlund@ragnatech.se> References: <20190220143736.529-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 3/4] cam: fix printing of camera name 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 14:38:51 -0000 Since commit c8c546fe99a343c1 ("cam: options: Add option type handling to options parser") introduced type handling for options the context the option is read became important. When reading the camera option for printing there is no explicit context to print it as a string and instead the int context was chosen resulting in: $ cam --camera foo Camera 0 not found While the expected output is: $ cam --camera foo Camera foo not found Fix this by providing the correct context for the camera option when printing it. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 30267970a2c8485f..522d2f0d3373dc25 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -233,7 +233,8 @@ int main(int argc, char **argv) if (options.isSet(OptCamera)) { camera = cm->get(options[OptCamera]); if (!camera) { - std::cout << "Camera " << options[OptCamera] + std::cout << "Camera " + << std::string(options[OptCamera]) << " not found" << std::endl; goto out; } From patchwork Wed Feb 20 14:37:36 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: 598 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 E0964601EE for ; Wed, 20 Feb 2019 15:38:50 +0100 (CET) X-Halon-ID: 3af2e8a3-351d-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 3af2e8a3-351d-11e9-b530-005056917a89; Wed, 20 Feb 2019 15:38:47 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Feb 2019 15:37:36 +0100 Message-Id: <20190220143736.529-5-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220143736.529-1-niklas.soderlund@ragnatech.se> References: <20190220143736.529-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 4/4] cam: Improve when usage information is printed 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 14:38:51 -0000 Running the cam tool without any options results in the tool to exit with EXIT_FAILURE but no usage being printed, this is confusing. Improve this by also printing the usage text. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/cam/main.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 522d2f0d3373dc25..9f4c8e26751d982c 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -41,6 +41,8 @@ void signalHandler(int signal) static int parseOptions(int argc, char *argv[]) { + int ret = 0; + KeyValueParser formatKeyValue; formatKeyValue.addOption("width", OptionInteger, "Width in pixels", ArgumentRequired); @@ -67,15 +69,14 @@ static int parseOptions(int argc, char *argv[]) parser.addOption(OptList, OptionNone, "List all cameras", "list"); options = parser.parse(argc, argv); + if (!options.valid()) - return -EINVAL; + ret = -EINVAL; - if (argc == 1 || options.isSet(OptHelp)) { + if (ret || options.isSet(OptHelp)) parser.usage(); - return 1; - } - return 0; + return ret; } static bool configureStreams(Camera *camera, std::vector &streams)