Show a patch.

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

{
    "id": 9582,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/9582/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9582/",
    "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-3-jacopo@jmondi.org>",
    "date": "2020-09-12T10:11:21",
    "name": "[libcamera-devel,v4,02/10] android: camera_device: Generate JPEG sizes",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "4179a00d75a02498d58d2ca3500585801056a05b",
    "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/9582/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/9582/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9582/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 03901C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 12 Sep 2020 10:07:58 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D546162D86;\n\tSat, 12 Sep 2020 12:07:57 +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 DDB5862D5B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 12 Sep 2020 12:07:56 +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 08D191BF203;\n\tSat, 12 Sep 2020 10:07:54 +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:21 +0200",
        "Message-Id": "<20200912101129.12625-3-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 02/10] android: camera_device: Generate\n\tJPEG sizes",
        "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": "When producing the list of image resolutions to claim as supported by the\ncamera HAL, the JPEG stream was assumed to be 'always valid' as, at the\ntime, there was no JPEG support in place at all.\n\nWith the introduction of support for JPEG compression, reporting\nnon-valid sizes as supported obviously causes troubles.\n\nIn order to avoid reporting non-supported resolutions as supported,\nproduce the list of available JPEG sizes by using the ones supported\nby the YCbCr_420_888 format, from which the JPEG stream is encoded.\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp | 40 ++++++++++++++++++++++-------------\n 1 file changed, 25 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex ebebdac38e28..3be2dac28f9c 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -369,17 +369,21 @@ int CameraDevice::initializeStreamConfigurations()\n \t\tconst std::vector<PixelFormat> &libcameraFormats =\n \t\t\tcamera3Format.libcameraFormats;\n \n+\t\t/*\n+\t\t * JPEG is always supported, either produced directly by the\n+\t\t * camera, or encoded in the HAL.\n+\t\t */\n+\t\tif (androidFormat == HAL_PIXEL_FORMAT_BLOB) {\n+\t\t\tformatsMap_[androidFormat] = formats::MJPEG;\n+\t\t\tcontinue;\n+\t\t}\n+\n \t\t/*\n \t\t * Test the libcamera formats that can produce images\n \t\t * compatible with the format defined by Android.\n \t\t */\n \t\tPixelFormat mappedFormat;\n \t\tfor (const PixelFormat &pixelFormat : libcameraFormats) {\n-\t\t\t/* \\todo Fixed mapping for JPEG. */\n-\t\t\tif (androidFormat == HAL_PIXEL_FORMAT_BLOB) {\n-\t\t\t\tmappedFormat = formats::MJPEG;\n-\t\t\t\tbreak;\n-\t\t\t}\n \n \t\t\t/*\n \t\t\t * The stream configuration size can be adjusted,\n@@ -422,19 +426,25 @@ int CameraDevice::initializeStreamConfigurations()\n \t\t\tcfg.size = res;\n \n \t\t\tCameraConfiguration::Status status = cameraConfig->validate();\n-\t\t\t/*\n-\t\t\t * Unconditionally report we can produce JPEG.\n-\t\t\t *\n-\t\t\t * \\todo The JPEG stream will be implemented as an\n-\t\t\t * HAL-only stream, but some cameras can produce it\n-\t\t\t * directly. As of now, claim support for JPEG without\n-\t\t\t * inspecting where the JPEG stream is produced.\n-\t\t\t */\n-\t\t\tif (androidFormat != HAL_PIXEL_FORMAT_BLOB &&\n-\t\t\t    status != CameraConfiguration::Valid)\n+\t\t\tif (status != CameraConfiguration::Valid)\n \t\t\t\tcontinue;\n \n \t\t\tstreamConfigurations_.push_back({ res, androidFormat });\n+\n+\t\t\t/*\n+\t\t\t * If the format is HAL_PIXEL_FORMAT_YCbCr_420_888\n+\t\t\t * from which JPEG is produced, add an entry for\n+\t\t\t * the JPEG stream.\n+\t\t\t *\n+\t\t\t * \\todo Wire the JPEG encoder to query the supported\n+\t\t\t * sizes provided a list of formats it can encode.\n+\t\t\t *\n+\t\t\t * \\todo Support JPEG streams produced by the Camera\n+\t\t\t * natively.\n+\t\t\t */\n+\t\t\tif (androidFormat == HAL_PIXEL_FORMAT_YCbCr_420_888)\n+\t\t\t\tstreamConfigurations_.push_back(\n+\t\t\t\t\t{ res, HAL_PIXEL_FORMAT_BLOB });\n \t\t}\n \t}\n \n",
    "prefixes": [
        "libcamera-devel",
        "v4",
        "02/10"
    ]
}