Show a cover letter.

GET /api/1.1/covers/18458/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 18458,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/18458/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/18458/",
    "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": "<20230324181247.302586-1-nicolas@ndufresne.ca>",
    "date": "2023-03-24T18:12:44",
    "name": "[libcamera-devel,v2,0/3] Add sensor mode selection to GStreamer",
    "submitter": {
        "id": 30,
        "url": "https://patchwork.libcamera.org/api/1.1/people/30/?format=api",
        "name": "Nicolas Dufresne",
        "email": "nicolas@ndufresne.ca"
    },
    "mbox": "https://patchwork.libcamera.org/cover/18458/mbox/",
    "series": [
        {
            "id": 3815,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3815/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3815",
            "date": "2023-03-24T18:12:44",
            "name": "Add sensor mode selection to GStreamer",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/3815/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/18458/comments/",
    "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 02469C0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 24 Mar 2023 18:12:57 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B33BC6271F;\n\tFri, 24 Mar 2023 19:12:57 +0100 (CET)",
            "from madras.collabora.co.uk (madras.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BDC6C61ECF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 24 Mar 2023 19:12:56 +0100 (CET)",
            "from nicolas-tpx395.lan (192-222-136-102.qc.cable.ebox.net\n\t[192.222.136.102])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: nicolas)\n\tby madras.collabora.co.uk (Postfix) with ESMTPSA id 3C968660312C;\n\tFri, 24 Mar 2023 18:12:56 +0000 (GMT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1679681577;\n\tbh=U5cOumwJWUQzf5/M1Y4/y9j/OC4cOqbsk5+8n4Bg84I=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:Cc:From;\n\tb=A5Ng8nT/P+8lg11WG3xt5ZagRnoBg27Xi9FrvlnpJzK+kJmCPosP4T0LRG5Jv5jCv\n\tgCS7eVxCGtALSKqaoYPs69jw9LyjsSdQ1XDXJYPMUgJf1i/bOlF8iX7CQ+LWgLvn56\n\t94Mf46AkbXT2XI4uSAaEiI79lrqt/IBbpQT7YRU1sYRyl+exghvFW1J+8bv94PQ35k\n\tOt+mYSWh1G4YKNmn+lDrAkH+ubB9MAIewqlIP33LkNiCFtRGGfDP2UkkLrQn2BpmUT\n\tezwekV6nCiTRPFMtiScSkYACwdpjfbePinsFChZjp2MMcfOC1mKIi1PfINTPpRJYpq\n\trUSMoBP8Q7CGQ==",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Fri, 24 Mar 2023 14:12:44 -0400",
        "Message-Id": "<20230324181247.302586-1-nicolas@ndufresne.ca>",
        "X-Mailer": "git-send-email 2.39.2",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v2 0/3] Add sensor mode selection to\n\tGStreamer",
        "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>",
        "From": "Nicolas Dufresne via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Nicolas Dufresne <nicolas@ndufresne.ca>",
        "Cc": "Nicolas Dufresne <nicolas.dufresne@collabora.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "From: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\nSensor mode selection is needed to achieve specific framerate, or select\nspecific field of view. The currently implemented method to do so it not\nportable, but works for M2M ISP. It consist of creating a stream with Raw role\nand forcing the width/height/format configuration that is unique to the wanted\nmode. Enumerating the modes is done by doing a validation loop.\n\nThis has been tested on Raspberry Pi with an Arducam IMX477 sensor. This sensor\nhas four modes:\n\n    Modes: 'SRGGB10_CSI2P' : 1332x990 [120.05 fps - (696, 528)/2664x1980 crop]\n           'SRGGB12_CSI2P' : 2028x1080 [50.03 fps - (0, 440)/4056x2160 crop]\n                             2028x1520 [40.01 fps - (0, 0)/4056x3040 crop]\n                             4056x3040 [10.00 fps - (0, 0)/4056x3040 crop]\n\nOnly one of these can achieve 60 fps, though at the cost of a smaller field of\nview. The pipeline manager does not take the framerate control into\nconsideration when selecting a mode, since you need a configuration in order to\nset the control. It also does not know anything about the wanted field of view.\n\nTo solve this, two new properties are added. sensor-modes is a GstCaps\nrepresentation of all the modes. The sensor mode caps looks like:\n\n  sensor-mode,width=1332,height=990,format=SRGGB10,framerate=[1/1, 120/1];\n  sensor-mode,width=2028,height=1080,format=SRGGB12,framerate=[1/1, 50/1];\n  ...\n\nThe user can select a mode with a filter set to sensor-mode. The sensor-mode\nvalue can be the exact mode, or could be just something to match to. If an\napplication want to ensure a 60fps capable mode is selected, it\ncan do:\n\n   libcamerasrc sensor-mode=sensor/mode,framerate=60/1 ! ...\n\nNote that on cameras like UVC camera, where its not possible to have multiple\nstreams, sensor mode enumeration (which is extremely slow on these) is skipped,\nand the sensor mode selection will have no effect.\n\nChanges in v2:\n  - Fixed missing merge conflicts\n  - Retested with UVC and RPi\n\nNicolas Dufresne (3):\n  gstreamer: Add sensor mode selection\n  doc: gstreamer: Add missing queues\n  doc: gstreamer: Document the sensor-mode(s) properties\n\n README.rst                           |  18 ++++-\n src/gstreamer/gstlibcamera-utils.cpp |   4 +\n src/gstreamer/gstlibcamerasrc.cpp    | 110 ++++++++++++++++++++++++++-\n 3 files changed, 128 insertions(+), 4 deletions(-)"
}