Show a patch.

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

{
    "id": 13122,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/13122/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/13122/",
    "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": "<20210726153100.27856-4-jacopo@jmondi.org>",
    "date": "2021-07-26T15:31:00",
    "name": "[libcamera-devel,v2,3/3] android: capabilities: Centralize RAW support check",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "2d1c7d4b8394a18f4682f222d6b0ec7e88b819fd",
    "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/13122/mbox/",
    "series": [
        {
            "id": 2279,
            "url": "https://patchwork.libcamera.org/api/1.1/series/2279/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2279",
            "date": "2021-07-26T15:30:57",
            "name": "android: Drive-by cleanups",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/2279/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/13122/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/13122/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 7C312C322D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 26 Jul 2021 15:30:22 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 05959687C8;\n\tMon, 26 Jul 2021 17:30:22 +0200 (CEST)",
            "from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net\n\t[217.70.183.197])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CFF61687BA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 26 Jul 2021 17:30:19 +0200 (CEST)",
            "(Authenticated sender: jacopo@jmondi.org)\n\tby relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 36F9E1C0011;\n\tMon, 26 Jul 2021 15:30:19 +0000 (UTC)"
        ],
        "From": "Jacopo Mondi <jacopo@jmondi.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Mon, 26 Jul 2021 17:31:00 +0200",
        "Message-Id": "<20210726153100.27856-4-jacopo@jmondi.org>",
        "X-Mailer": "git-send-email 2.32.0",
        "In-Reply-To": "<20210726153100.27856-1-jacopo@jmondi.org>",
        "References": "<20210726153100.27856-1-jacopo@jmondi.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v2 3/3] android: capabilities: Centralize\n\tRAW support check",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The validation of RAW stream support is performed in two different\nplaces:\n\n- At initializeStreamConfigurations() time, by verifying that the\n  libcamera format associated with HAL_PIXEL_FORMAT_BLOB is a Raw format\n  and ensuring the Camera successfully validates it\n- As initializeStaticMetadata() time by generating a CameraConfiguration\n  for the Raw stream role and ensuring it is a Raw format with a 16 bit\n  depth\n\nThe first check is used to build the list of supported Raw stream\nresolutions. The latter is used to register the\nANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW capability.\n\nAs building the list of supported Raw streams doesn't serve any\npurpose if the RAW capability is not registered, centralize the Raw\nformat support verification at initializeStreamConfigurations() time by\nensuring the supported format is a Raw one with a 16 bit depth.\n\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n---\n src/android/camera_capabilities.cpp | 25 ++++++++++---------------\n src/android/camera_capabilities.h   |  1 +\n 2 files changed, 11 insertions(+), 15 deletions(-)\n\n--\n2.32.0",
    "diff": "diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\nindex 15e54192adff..12ffda2ee0b2 100644\n--- a/src/android/camera_capabilities.cpp\n+++ b/src/android/camera_capabilities.cpp\n@@ -122,6 +122,7 @@ int CameraCapabilities::initialize(std::shared_ptr<libcamera::Camera> camera,\n \tcamera_ = camera;\n \torientation_ = orientation;\n \tfacing_ = facing;\n+\trawStreamAvailable_ = false;\n\n \t/* Acquire the camera and initialize available stream configurations. */\n \tint ret = camera_->acquire();\n@@ -324,11 +325,16 @@ int CameraCapabilities::initializeStreamConfigurations()\n\n \t\tstd::vector<Size> resolutions;\n \t\tconst PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\n-\t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)\n+\t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {\n+\t\t\tif (info.bitsPerPixel != 16)\n+\t\t\t\tcontinue;\n+\n+\t\t\trawStreamAvailable_ = true;\n \t\t\tresolutions = initializeRawResolutions(mappedFormat);\n-\t\telse\n+\t\t} else {\n \t\t\tresolutions = initializeYUVResolutions(mappedFormat,\n \t\t\t\t\t\t\t       cameraResolutions);\n+\t\t}\n\n \t\tfor (const Size &res : resolutions) {\n \t\t\tstreamConfigurations_.push_back({ res, androidFormat });\n@@ -866,22 +872,11 @@ int CameraCapabilities::initializeStaticMetadata()\n \t};\n\n \t/* Report if camera supports RAW. */\n-\tbool rawStreamAvailable = false;\n-\tstd::unique_ptr<CameraConfiguration> cameraConfig =\n-\t\tcamera_->generateConfiguration({ StreamRole::Raw });\n-\tif (cameraConfig && !cameraConfig->empty()) {\n-\t\tconst PixelFormatInfo &info =\n-\t\t\tPixelFormatInfo::info(cameraConfig->at(0).pixelFormat);\n-\t\t/* Only advertise RAW support if RAW16 is possible. */\n-\t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW &&\n-\t\t    info.bitsPerPixel == 16) {\n-\t\t\trawStreamAvailable = true;\n+\tif (rawStreamAvailable_)\n \t\t\tavailableCapabilities.push_back(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW);\n-\t\t}\n-\t}\n\n \t/* Number of { RAW, YUV, JPEG } supported output streams */\n-\tint32_t numOutStreams[] = { rawStreamAvailable, 2, 1 };\n+\tint32_t numOutStreams[] = { rawStreamAvailable_, 2, 1 };\n \tstaticMetadata_->addEntry(ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,\n \t\t\t\t  numOutStreams);\n\ndiff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h\nindex e7aa46c0a689..42a976d3b482 100644\n--- a/src/android/camera_capabilities.h\n+++ b/src/android/camera_capabilities.h\n@@ -55,6 +55,7 @@ private:\n\n \tint facing_;\n \tint orientation_;\n+\tbool rawStreamAvailable_;\n\n \tstd::vector<Camera3StreamConfiguration> streamConfigurations_;\n \tstd::map<int, libcamera::PixelFormat> formatsMap_;\n",
    "prefixes": [
        "libcamera-devel",
        "v2",
        "3/3"
    ]
}