Patch Detail
Show a patch.
GET /api/1.1/patches/9812/?format=api
{ "id": 9812, "url": "https://patchwork.libcamera.org/api/1.1/patches/9812/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9812/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20200925014207.1455796-15-niklas.soderlund@ragnatech.se>", "date": "2020-09-25T01:41:59", "name": "[libcamera-devel,v3,14/22] libcamera: pipeline: rkisp1: Expose self path stream", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "5fb3637410b60202b55655258d05a1061c08f878", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/9812/mbox/", "series": [ { "id": 1325, "url": "https://patchwork.libcamera.org/api/1.1/series/1325/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1325", "date": "2020-09-25T01:41:45", "name": "libcamera: pipeline: rkisp1: Extend to support two streams", "version": 3, "mbox": "https://patchwork.libcamera.org/series/1325/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9812/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9812/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 2BF7BC3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Sep 2020 01:42:59 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BBABF6303C;\n\tFri, 25 Sep 2020 03:42:58 +0200 (CEST)", "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 3511A63023\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Sep 2020 03:42:52 +0200 (CEST)", "from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de\n\t[84.172.82.168]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid 6c16d15b-fed0-11ea-92dc-005056917a89;\n\tFri, 25 Sep 2020 03:42:51 +0200 (CEST)" ], "X-Halon-ID": "6c16d15b-fed0-11ea-92dc-005056917a89", "Authorized-sender": "niklas.soderlund@fsdn.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Fri, 25 Sep 2020 03:41:59 +0200", "Message-Id": "<20200925014207.1455796-15-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200925014207.1455796-1-niklas.soderlund@ragnatech.se>", "References": "<20200925014207.1455796-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v3 14/22] libcamera: pipeline: rkisp1:\n\tExpose self path stream", "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>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Expose the self stream to applications and prefers it for the viewfinder\nand video roles as it can be extended to produce RGB. Keep preferring\nthe main path for still capture as it could be extended to support RAW\nformats which makes most sense for still capture.\n\nWith this change the self path becomes available to applications and a\ncamera backed by this pipeline can produce two streams simultaneously.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n* Changes since v2\n- Rework generation logic to grantee a stream is not picked for both\n roles.\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 55 +++++++++++++++++++-----\n 1 file changed, 45 insertions(+), 10 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex bd53183a034efaff..27a3c44da3805c5f 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -718,17 +718,49 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera\n \tif (roles.empty())\n \t\treturn config;\n \n-\tstd::map<PixelFormat, std::vector<SizeRange>> streamFormats;\n-\tfor (const PixelFormat &format : RKISP1_RSZ_MP_FORMATS)\n-\t\tstreamFormats[format] =\n-\t\t\t{ { RKISP1_RSZ_MP_SRC_MIN, data->sensor_->resolution() } };\n+\tbool mainPathAvailable = true;\n+\tbool selfPathAvailable = true;\n+\tfor (const StreamRole role : roles) {\n+\t\tbool useMainPath;\n \n-\tStreamFormats formats(streamFormats);\n-\tStreamConfiguration cfg(formats);\n-\tcfg.pixelFormat = formats::NV12;\n-\tcfg.size = data->sensor_->resolution();\n+\t\tswitch (role) {\n+\t\tcase StreamRole::StillCapture: {\n+\t\t\tuseMainPath = mainPathAvailable;\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase StreamRole::Viewfinder:\n+\t\tcase StreamRole::VideoRecording: {\n+\t\t\tuseMainPath = !selfPathAvailable;\n+\t\t\tbreak;\n+\t\t}\n+\t\tdefault:\n+\t\t\tLOG(RkISP1, Warning)\n+\t\t\t\t<< \"Requested stream role not supported: \" << role;\n+\t\t\tdelete config;\n+\t\t\treturn nullptr;\n+\t\t}\n \n-\tconfig->addConfiguration(cfg);\n+\t\tstd::map<PixelFormat, std::vector<SizeRange>> streamFormats;\n+\t\tif (useMainPath) {\n+\t\t\tmainPathAvailable = false;\n+\t\t\tfor (const PixelFormat &format : RKISP1_RSZ_MP_FORMATS)\n+\t\t\t\tstreamFormats[format] =\n+\t\t\t\t{ { RKISP1_RSZ_MP_SRC_MIN, data->sensor_->resolution() } };\n+\t\t} else {\n+\t\t\tselfPathAvailable = false;\n+\t\t\tfor (const PixelFormat &format : RKISP1_RSZ_SP_FORMATS)\n+\t\t\t\tstreamFormats[format] =\n+\t\t\t\t{ { RKISP1_RSZ_SP_SRC_MIN, data->sensor_->resolution() } };\n+\t\t}\n+\n+\t\tStreamFormats formats(streamFormats);\n+\t\tStreamConfiguration cfg(formats);\n+\t\tcfg.pixelFormat = formats::NV12;\n+\t\tcfg.size = data->sensor_->resolution();\n+\t\tcfg.bufferCount = 4;\n+\n+\t\tconfig->addConfiguration(cfg);\n+\t}\n \n \tconfig->validate();\n \n@@ -1216,7 +1248,10 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \tif (ret)\n \t\treturn ret;\n \n-\tstd::set<Stream *> streams{ &data->mainPathStream_ };\n+\tstd::set<Stream *> streams{\n+\t\t&data->mainPathStream_,\n+\t\t&data->selfPathStream_,\n+\t};\n \tstd::shared_ptr<Camera> camera =\n \t\tCamera::create(this, data->sensor_->id(), streams);\n \tregisterCamera(std::move(camera), std::move(data));\n", "prefixes": [ "libcamera-devel", "v3", "14/22" ] }