Patch Detail
Show a patch.
GET /api/patches/9459/?format=api
{ "id": 9459, "url": "https://patchwork.libcamera.org/api/patches/9459/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9459/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/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": "<20200902130846.55910-7-jacopo@jmondi.org>", "date": "2020-09-02T13:08:45", "name": "[libcamera-devel,RFC,6/7] android: camera_device: Set Encoder at construction", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "ed438ec4b3bb9c81a59b675cf385ba4c7e212f60", "submitter": { "id": 3, "url": "https://patchwork.libcamera.org/api/people/3/?format=api", "name": "Jacopo Mondi", "email": "jacopo@jmondi.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/9459/mbox/", "series": [ { "id": 1258, "url": "https://patchwork.libcamera.org/api/series/1258/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1258", "date": "2020-09-02T13:08:39", "name": "android: camera_device: Turn CameraStream into a class", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1258/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9459/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9459/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 448CDBF019\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 2 Sep 2020 13:05:21 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 16DE462931;\n\tWed, 2 Sep 2020 15:05:21 +0200 (CEST)", "from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 996F660374\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 2 Sep 2020 15:05:19 +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 relay11.mail.gandi.net (Postfix) with ESMTPSA id 33C41100007;\n\tWed, 2 Sep 2020 13:05:16 +0000 (UTC)" ], "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 2 Sep 2020 15:08:45 +0200", "Message-Id": "<20200902130846.55910-7-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200902130846.55910-1-jacopo@jmondi.org>", "References": "<20200902130846.55910-1-jacopo@jmondi.org>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [RFC 6/7] android: camera_device: Set Encoder at\n\tconstruction", "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\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp | 22 +++++++++++-----------\n src/android/camera_device.h | 7 ++++---\n 2 files changed, 15 insertions(+), 14 deletions(-)", "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 15dc12556cf5..aef9a6fb4be1 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,20 @@ 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\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 +1481,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 975c312c1c12..da9d5c0435f0 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", "RFC", "6/7" ] }