Show a patch.

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

{
    "id": 9833,
    "url": "https://patchwork.libcamera.org/api/patches/9833/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9833/",
    "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": "<20200925150743.1822226-5-niklas.soderlund@ragnatech.se>",
    "date": "2020-09-25T15:07:40",
    "name": "[libcamera-devel,v5,4/7] libcamera: pipeline: uvcvideo: Initialize CameraData from MediaDevice",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "e3fc449b6f41f2de56e124d9130109bc7de9b6f6",
    "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/9833/mbox/",
    "series": [
        {
            "id": 1328,
            "url": "https://patchwork.libcamera.org/api/series/1328/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1328",
            "date": "2020-09-25T15:07:36",
            "name": "libcamera: Allow for user-friendly names in applications",
            "version": 5,
            "mbox": "https://patchwork.libcamera.org/series/1328/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9833/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9833/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 07EDCC3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Sep 2020 15:08:04 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A5572631D9;\n\tFri, 25 Sep 2020 17:08:02 +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 C20A363049\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Sep 2020 17:07:59 +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 e5ae1160-ff40-11ea-a39b-005056917f90;\n\tFri, 25 Sep 2020 17:07:59 +0200 (CEST)"
        ],
        "X-Halon-ID": "e5ae1160-ff40-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": "Fri, 25 Sep 2020 17:07:40 +0200",
        "Message-Id": "<20200925150743.1822226-5-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200925150743.1822226-1-niklas.soderlund@ragnatech.se>",
        "References": "<20200925150743.1822226-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v5 4/7] libcamera: pipeline: uvcvideo:\n\tInitialize CameraData from MediaDevice",
        "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": "The UVCCameraData::init() is the only consumer of the default entry in\nthe media graph, move the lookup of it into the init() function and pass\nit the MediaDevice. This is done in preparation to extend the CameraData\ninitialization to consume more information from the MediaDevice.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n* Changes since v3\n- s/form/from/\n---\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 30 ++++++++++----------\n 1 file changed, 15 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex bafe6f1901e7b900..bf12189d1044cdfc 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -44,7 +44,7 @@ public:\n \t\tdelete video_;\n \t}\n \n-\tint init(MediaEntity *entity);\n+\tint init(MediaDevice *media);\n \tvoid addControl(uint32_t cid, const ControlInfo &v4l2info,\n \t\t\tControlInfoMap::Map *ctrls);\n \tvoid bufferReady(FrameBuffer *buffer);\n@@ -458,18 +458,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n \n \tstd::unique_ptr<UVCCameraData> data = std::make_unique<UVCCameraData>(this);\n \n-\t/* Locate and initialise the camera data with the default video node. */\n-\tconst std::vector<MediaEntity *> &entities = media->entities();\n-\tauto entity = std::find_if(entities.begin(), entities.end(),\n-\t\t\t\t   [](MediaEntity *entity) {\n-\t\t\t\t\t   return entity->flags() & MEDIA_ENT_FL_DEFAULT;\n-\t\t\t\t   });\n-\tif (entity == entities.end()) {\n-\t\tLOG(UVC, Error) << \"Could not find a default video device\";\n-\t\treturn false;\n-\t}\n-\n-\tif (data->init(*entity))\n+\tif (data->init(media))\n \t\treturn false;\n \n \t/* Create and register the camera. */\n@@ -489,12 +478,23 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n \treturn true;\n }\n \n-int UVCCameraData::init(MediaEntity *entity)\n+int UVCCameraData::init(MediaDevice *media)\n {\n \tint ret;\n \n+\t/* Locate and initialise the camera data with the default video node. */\n+\tconst std::vector<MediaEntity *> &entities = media->entities();\n+\tauto entity = std::find_if(entities.begin(), entities.end(),\n+\t\t\t\t   [](MediaEntity *entity) {\n+\t\t\t\t\t   return entity->flags() & MEDIA_ENT_FL_DEFAULT;\n+\t\t\t\t   });\n+\tif (entity == entities.end()) {\n+\t\tLOG(UVC, Error) << \"Could not find a default video device\";\n+\t\treturn -ENODEV;\n+\t}\n+\n \t/* Create and open the video device. */\n-\tvideo_ = new V4L2VideoDevice(entity);\n+\tvideo_ = new V4L2VideoDevice(*entity);\n \tret = video_->open();\n \tif (ret)\n \t\treturn ret;\n",
    "prefixes": [
        "libcamera-devel",
        "v5",
        "4/7"
    ]
}