Show a patch.

GET /api/patches/9605/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 9605,
    "url": "https://patchwork.libcamera.org/api/patches/9605/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9605/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20200914142149.63857-14-niklas.soderlund@ragnatech.se>",
    "date": "2020-09-14T14:21:49",
    "name": "[libcamera-devel,v2,13/13] libcamera: pipeline: rkisp1: Expose self path stream",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "86b8dbda680151d1fe71e68be4858939f210d91d",
    "submitter": {
        "id": 5,
        "url": "https://patchwork.libcamera.org/api/people/5/?format=api",
        "name": "Niklas Söderlund",
        "email": "niklas.soderlund@ragnatech.se"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/9605/mbox/",
    "series": [
        {
            "id": 1289,
            "url": "https://patchwork.libcamera.org/api/series/1289/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1289",
            "date": "2020-09-14T14:21:36",
            "name": "libcamera: pipeline: rkisp1: Extend to support two streams",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/1289/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9605/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9605/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 35246C3B5D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 14 Sep 2020 14:22:19 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 07F4162E0B;\n\tMon, 14 Sep 2020 16:22:19 +0200 (CEST)",
            "from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net\n\t[195.74.38.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6A0C362E0B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 14 Sep 2020 16:22:16 +0200 (CEST)",
            "from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de\n\t[84.172.82.168]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n\tid b021a937-f695-11ea-a39b-005056917f90;\n\tMon, 14 Sep 2020 16:22:15 +0200 (CEST)"
        ],
        "X-Halon-ID": "b021a937-f695-11ea-a39b-005056917f90",
        "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": "Mon, 14 Sep 2020 16:21:49 +0200",
        "Message-Id": "<20200914142149.63857-14-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200914142149.63857-1-niklas.soderlund@ragnatech.se>",
        "References": "<20200914142149.63857-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v2 13/13] 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 produce RGB. Keep preferring the main path for\nstill capture as it could be extended to support RAW formats which makes\nmost sens 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 src/libcamera/pipeline/rkisp1/rkisp1.cpp | 44 ++++++++++++++++++------\n 1 file changed, 34 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 851ff68f138b98dd..1260ed947d385ca9 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -729,17 +729,38 @@ 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+\tfor (const StreamRole role : roles) {\n+\t\tstd::map<PixelFormat, std::vector<SizeRange>> streamFormats;\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\tfor (const PixelFormat &format : RKISP1_RSZ_MP_FORMATS)\n+\t\t\t\tstreamFormats[format] =\n+\t\t\t\t\t{ { RKISP1_RSZ_MP_SRC_MIN, data->sensor_->resolution() } };\n+\t\t\tbreak;\n+\t\t}\n+\t\tcase StreamRole::Viewfinder:\n+\t\tcase StreamRole::VideoRecording: {\n+\t\t\tfor (const PixelFormat &format : RKISP1_RSZ_SP_FORMATS)\n+\t\t\t\tstreamFormats[format] =\n+\t\t\t\t\t{ { RKISP1_RSZ_SP_SRC_MIN, data->sensor_->resolution() } };\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\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 +1237,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",
        "v2",
        "13/13"
    ]
}