Show a patch.

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

{
    "id": 9472,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/9472/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9472/",
    "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": "<20200902152236.69770-12-jacopo@jmondi.org>",
    "date": "2020-09-02T15:22:35",
    "name": "[libcamera-devel,v2,11/12] android: camera_device: Set Encoder at construction",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "ee4c512fe3d19b23e288fd976f59c76859be6324",
    "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/9472/mbox/",
    "series": [
        {
            "id": 1259,
            "url": "https://patchwork.libcamera.org/api/1.1/series/1259/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1259",
            "date": "2020-09-02T15:22:24",
            "name": "android: camera_device: Fix JPEG/RAW sizes",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/1259/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9472/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9472/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 9F610BE174\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  2 Sep 2020 15:19:13 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 798FA629C9;\n\tWed,  2 Sep 2020 17:19:13 +0200 (CEST)",
            "from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net\n\t[217.70.183.193])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C062962931\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  2 Sep 2020 17:19:11 +0200 (CEST)",
            "from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay1-d.mail.gandi.net (Postfix) with ESMTPSA id 964B0240003;\n\tWed,  2 Sep 2020 15:19:10 +0000 (UTC)"
        ],
        "X-Originating-IP": "93.34.118.233",
        "From": "Jacopo Mondi <jacopo@jmondi.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Wed,  2 Sep 2020 17:22:35 +0200",
        "Message-Id": "<20200902152236.69770-12-jacopo@jmondi.org>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200902152236.69770-1-jacopo@jmondi.org>",
        "References": "<20200902152236.69770-1-jacopo@jmondi.org>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v2 11/12] android: camera_device: Set\n\tEncoder at construction",
        "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": "tfiga@google.com, hiroh@google.com",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Make the CameraStream Encoder * a private struct member and require its\ninitialization at construction time.\n\nThis change dis-allow creating a CameraStream and set the Encoder later,\nwhich shall not happen now that we create CameraStream once we have all\nthe required information in place.\n\nNo functional changes intended but this change aims to make the code\nmore robust enforcing a stricter CameraStream interface.\n\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   |  7 ++++---\n 2 files changed, 16 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 9bcd1d993c17..28d8e081eab0 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -168,14 +168,14 @@ MappedCamera3Buffer::MappedCamera3Buffer(const buffer_handle_t camera3buffer,\n \t}\n }\n \n-CameraStream::CameraStream(PixelFormat f, Size s, unsigned int i)\n-\t: format(f), size(s), jpeg(nullptr), index_(i)\n+CameraStream::CameraStream(PixelFormat f, Size s, unsigned int i, Encoder *encoder)\n+\t: format(f), size(s), index_(i), encoder_(encoder)\n {\n }\n \n CameraStream::~CameraStream()\n {\n-\tdelete jpeg;\n+\tdelete encoder_;\n };\n \n /*\n@@ -1279,20 +1279,21 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n \t\tPixelFormat format = formats::MJPEG;\n \t\tSize size = cfg.size;\n \n-\t\tCameraStream &cameraStream = streams_.emplace_back(format, size, index);\n-\t\tstream->priv = static_cast<void *>(&cameraStream);\n-\n \t\t/*\n \t\t * Construct a software encoder for MJPEG streams from the\n \t\t * chosen libcamera source stream.\n \t\t */\n-\t\tcameraStream.jpeg = new EncoderLibJpeg();\n-\t\tint ret = cameraStream.jpeg->configure(cfg);\n+\t\tEncoder *encoder = new EncoderLibJpeg();\n+\t\tint ret = encoder->configure(cfg);\n \t\tif (ret) {\n-\t\t\tLOG(HAL, Error)\n-\t\t\t\t<< \"Failed to configure encoder\";\n+\t\t\tLOG(HAL, Error) << \"Failed to configure encoder\";\n+\t\t\tdelete encoder;\n \t\t\treturn ret;\n \t\t}\n+\n+\t\tCameraStream &cameraStream = streams_.emplace_back(format, size,\n+\t\t\t\t\t\t\t\t   index, encoder);\n+\t\tstream->priv = static_cast<void *>(&cameraStream);\n \t}\n \n \tswitch (config_->validate()) {\n@@ -1481,7 +1482,7 @@ void CameraDevice::requestComplete(Request *request)\n \t\tif (cameraStream->format != formats::MJPEG)\n \t\t\tcontinue;\n \n-\t\tEncoder *encoder = cameraStream->jpeg;\n+\t\tEncoder *encoder = cameraStream->encoder();\n \t\tif (!encoder) {\n \t\t\tLOG(HAL, Error) << \"Failed to identify encoder\";\n \t\t\tcontinue;\ndiff --git a/src/android/camera_device.h b/src/android/camera_device.h\nindex f8f237203ce9..3c57ffec265d 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -29,16 +29,16 @@ class CameraMetadata;\n \n struct CameraStream {\n public:\n-\tCameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i);\n+\tCameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i,\n+\t\t     Encoder *encoder = nullptr);\n \t~CameraStream();\n \n \tunsigned int index() const { return index_; }\n+\tEncoder *encoder() const { return encoder_; }\n \n \tlibcamera::PixelFormat format;\n \tlibcamera::Size size;\n \n-\tEncoder *jpeg;\n-\n private:\n \t/*\n \t * The index of the libcamera StreamConfiguration as added during\n@@ -46,6 +46,7 @@ private:\n \t * one or more streams to the Android framework.\n \t */\n \tunsigned int index_;\n+\tEncoder *encoder_;\n };\n \n class CameraDevice : protected libcamera::Loggable\n",
    "prefixes": [
        "libcamera-devel",
        "v2",
        "11/12"
    ]
}