Show a patch.

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

{
    "id": 9303,
    "url": "https://patchwork.libcamera.org/api/patches/9303/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9303/",
    "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": "<20200813005246.3265807-14-niklas.soderlund@ragnatech.se>",
    "date": "2020-08-13T00:52:46",
    "name": "[libcamera-devel,13/13] libcamera: pipeline: rkisp1: Expose self path stream",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "6bf2a8effbb8eaaf9c19c50bdbd5c4b4756e458d",
    "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/9303/mbox/",
    "series": [
        {
            "id": 1215,
            "url": "https://patchwork.libcamera.org/api/series/1215/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1215",
            "date": "2020-08-13T00:52:33",
            "name": "libcamera: pipeline: rkisp1: Extend to support two streams",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/1215/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9303/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9303/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 33744BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Aug 2020 00:53:50 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 04DD0613BF;\n\tThu, 13 Aug 2020 02:53:50 +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 9592261388\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Aug 2020 02:53:46 +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 706cbe79-dcff-11ea-92dc-005056917a89;\n\tThu, 13 Aug 2020 02:53:45 +0200 (CEST)"
        ],
        "X-Halon-ID": "706cbe79-dcff-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": "Thu, 13 Aug 2020 02:52:46 +0200",
        "Message-Id": "<20200813005246.3265807-14-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>",
        "References": "<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH 13/13] libcamera: pipeline: rkisp1: Expose\n\tself 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 f106b105a47bb4f7..0ab235d80f6c677e 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, RKISP1_RSZ_MP_SRC_MAX } };\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, RKISP1_RSZ_MP_SRC_MAX } };\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, RKISP1_RSZ_SP_SRC_MAX } };\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@@ -1214,7 +1235,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",
        "13/13"
    ]
}