{"id":2374,"url":"https://patchwork.libcamera.org/api/patches/2374/?format=json","web_url":"https://patchwork.libcamera.org/patch/2374/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20191126233620.1695316-27-niklas.soderlund@ragnatech.se>","date":"2019-11-26T23:36:16","name":"[libcamera-devel,26/30] libcamera: camera: Start streams before pipeline","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"aa30abf9474478f49a7df394abcc021dffd99fed","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/?format=json","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/2374/mbox/","series":[{"id":579,"url":"https://patchwork.libcamera.org/api/series/579/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=579","date":"2019-11-26T23:35:50","name":"libcamera: Rework buffer API","version":1,"mbox":"https://patchwork.libcamera.org/series/579/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/2374/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/2374/checks/","tags":{},"headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net\n\t[195.74.38.229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DC49061C91\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 27 Nov 2019 00:39:45 +0100 (CET)","from bismarck.berto.se (p54ac5865.dip0.t-ipconnect.de\n\t[84.172.88.101]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n\tid 06248b26-10a6-11ea-a0b9-005056917f90;\n\tWed, 27 Nov 2019 00:39:44 +0100 (CET)"],"X-Halon-ID":"06248b26-10a6-11ea-a0b9-005056917f90","Authorized-sender":"niklas@soderlund.pp.se","From":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 27 Nov 2019 00:36:16 +0100","Message-Id":"<20191126233620.1695316-27-niklas.soderlund@ragnatech.se>","X-Mailer":"git-send-email 2.24.0","In-Reply-To":"<20191126233620.1695316-1-niklas.soderlund@ragnatech.se>","References":"<20191126233620.1695316-1-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 26/30] libcamera: camera: Start streams\n\tbefore pipeline","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 26 Nov 2019 23:39:46 -0000"},"content":"The FrameBuffer interface require individual streams to be started\nexplicitly. This is needed so that the streams may perform any\npreparations before the pipeline and this the camera is started.\n\nThe only supported stream at the moment is V4L2 streams and they need to\nbe started so they can prepare for the use of external buffers in the\ncase they are used.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n src/libcamera/camera.cpp | 13 ++++++++++++-\n 1 file changed, 12 insertions(+), 1 deletion(-)","diff":"diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex e810fb725d81350d..6b1b3fb64f8b2c0b 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -856,15 +856,23 @@ int Camera::queueRequest(Request *request)\n  */\n int Camera::start()\n {\n+\tint ret;\n+\n \tif (disconnected_)\n \t\treturn -ENODEV;\n \n \tif (!stateIs(CameraPrepared))\n \t\treturn -EACCES;\n \n+\tfor (Stream *stream : activeStreams_) {\n+\t\tret = stream->start();\n+\t\tif (ret < 0)\n+\t\t\treturn ret;\n+\t}\n+\n \tLOG(Camera, Debug) << \"Starting capture\";\n \n-\tint ret = pipe_->start(this);\n+\tret = pipe_->start(this);\n \tif (ret)\n \t\treturn ret;\n \n@@ -899,6 +907,9 @@ int Camera::stop()\n \n \tpipe_->stop(this);\n \n+\tfor (Stream *stream : activeStreams_)\n+\t\tstream->stop();\n+\n \treturn 0;\n }\n \n","prefixes":["libcamera-devel","26/30"]}