Show a patch.

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

{
    "id": 9585,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/9585/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9585/",
    "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": "<20200912101129.12625-6-jacopo@jmondi.org>",
    "date": "2020-09-12T10:11:24",
    "name": "[libcamera-devel,v4,05/10] android: camera_device: Generate RAW resolutions",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "72005ac70c80aece196c589de98da27db0053525",
    "submitter": {
        "id": 3,
        "url": "https://patchwork.libcamera.org/api/1.1/people/3/?format=api",
        "name": "Jacopo Mondi",
        "email": "jacopo@jmondi.org"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/9585/mbox/",
    "series": [
        {
            "id": 1287,
            "url": "https://patchwork.libcamera.org/api/1.1/series/1287/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1287",
            "date": "2020-09-12T10:11:19",
            "name": "android: camera_device: Fix JPEG/RAW sizes",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/1287/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9585/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9585/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 7C3DEC3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 12 Sep 2020 10:08:04 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 51D8F62DB4;\n\tSat, 12 Sep 2020 12:08:04 +0200 (CEST)",
            "from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 023A962C8C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 12 Sep 2020 12:08:03 +0200 (CEST)",
            "from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id B4AE81BF206;\n\tSat, 12 Sep 2020 10:08:00 +0000 (UTC)"
        ],
        "X-Originating-IP": "2.224.242.101",
        "From": "Jacopo Mondi <jacopo@jmondi.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Sat, 12 Sep 2020 12:11:24 +0200",
        "Message-Id": "<20200912101129.12625-6-jacopo@jmondi.org>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200912101129.12625-1-jacopo@jmondi.org>",
        "References": "<20200912101129.12625-1-jacopo@jmondi.org>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v4 05/10] android: camera_device: Generate\n\tRAW resolutions",
        "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>",
        "Cc": "hanlinchen@chromium.org",
        "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 resolutions supported for the RAW formats cannot be tested from\na list of known sizes like the processed ones. This is mainly due to the\nfact RAW streams are produced by capturing frames at the CSI-2 receiver\noutput and their size corresponds to the sensor's native sizes.\n\nIn order to obtain the RAW frame size generate a temporary\nCameraConfiguration for the Role::StillCaptureRAW role and inspect the\nmap of StreamFormats returned by the pipeline handler.\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nAcked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n src/android/camera_device.h   |  2 ++\n 2 files changed, 22 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 0386287dc39d..0608d026e4b0 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -314,6 +314,17 @@ std::vector<Size> CameraDevice::getYUVResolutions(CameraConfiguration *cameraCon\n \treturn supportedResolutions;\n }\n \n+std::vector<Size> CameraDevice::getRawResolutions(const libcamera::PixelFormat &pixelFormat)\n+{\n+\tstd::unique_ptr<CameraConfiguration> cameraConfig =\n+\t\tcamera_->generateConfiguration({ StillCaptureRaw });\n+\tStreamConfiguration &cfg = cameraConfig->at(0);\n+\tconst StreamFormats &formats = cfg.formats();\n+\tstd::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n+\n+\treturn supportedResolutions;\n+}\n+\n /*\n  * Initialize the format conversion map to translate from Android format\n  * identifier to libcamera pixel formats and fill in the list of supported\n@@ -458,9 +469,15 @@ int CameraDevice::initializeStreamConfigurations()\n \t\t\t\t<< camera3Format.name << \" to \"\n \t\t\t\t<< mappedFormat.toString();\n \n-\t\tstd::vector<Size> resolutions = getYUVResolutions(cameraConfig.get(),\n-\t\t\t\t\t\t\t\t  mappedFormat,\n-\t\t\t\t\t\t\t\t  cameraResolutions);\n+\t\tstd::vector<Size> resolutions;\n+\t\tconst PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\n+\t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)\n+\t\t\tresolutions = getRawResolutions(mappedFormat);\n+\t\telse\n+\t\t\tresolutions = getYUVResolutions(cameraConfig.get(),\n+\t\t\t\t\t\t\tmappedFormat,\n+\t\t\t\t\t\t\tcameraResolutions);\n+\n \t\tfor (const Size &res : resolutions) {\n \t\t\tstreamConfigurations_.push_back({ res, androidFormat });\n \ndiff --git a/src/android/camera_device.h b/src/android/camera_device.h\nindex 1ff43327bab1..c0732fb8ed7f 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -97,6 +97,8 @@ private:\n \tgetYUVResolutions(libcamera::CameraConfiguration *cameraConfig,\n \t\t\t  const libcamera::PixelFormat &pixelFormat,\n \t\t\t  const std::vector<libcamera::Size> &resolutions);\n+\tstd::vector<libcamera::Size>\n+\tgetRawResolutions(const libcamera::PixelFormat &pixelFormat);\n \n \tstd::tuple<uint32_t, uint32_t> calculateStaticMetadataSize();\n \tlibcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);\n",
    "prefixes": [
        "libcamera-devel",
        "v4",
        "05/10"
    ]
}