Patch Detail
Show a patch.
GET /api/1.1/patches/9541/?format=api
{ "id": 9541, "url": "https://patchwork.libcamera.org/api/1.1/patches/9541/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9541/", "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": "<20200908134142.27470-11-jacopo@jmondi.org>", "date": "2020-09-08T13:41:41", "name": "[libcamera-devel,v3,10/11] android: camera_device: Set Encoder at construction", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "0068e880b03133a35a3726401d97c348670d5d28", "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/9541/mbox/", "series": [ { "id": 1274, "url": "https://patchwork.libcamera.org/api/1.1/series/1274/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1274", "date": "2020-09-08T13:41:31", "name": "android: camera_device: Fix JPEG/RAW sizes", "version": 3, "mbox": "https://patchwork.libcamera.org/series/1274/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9541/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9541/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 09FF8BDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 8 Sep 2020 13:38:21 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DB46762C74;\n\tTue, 8 Sep 2020 15:38:20 +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 BF56262CA7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 8 Sep 2020 15:38:19 +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 relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 437731C0003;\n\tTue, 8 Sep 2020 13:38:18 +0000 (UTC)" ], "X-Originating-IP": "2.224.242.101", "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 8 Sep 2020 15:41:41 +0200", "Message-Id": "<20200908134142.27470-11-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200908134142.27470-1-jacopo@jmondi.org>", "References": "<20200908134142.27470-1-jacopo@jmondi.org>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v3 10/11] 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": "hanlinchen@chromium.org", "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 unique pointer and require its\ninitialization at construction time. This ties the encoder lifetime to\nthe CameraStream it has been created with, allowing to remove the\nCameraStream destructor.\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: 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 | 22 +++++++++-------------\n src/android/camera_device.h | 8 ++++----\n 2 files changed, 13 insertions(+), 17 deletions(-)", "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex e0260c92246c..4c1416913d00 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -168,16 +168,11 @@ 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-};\n-\n /*\n * \\struct Camera3RequestDescriptor\n *\n@@ -1271,20 +1266,21 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n \t\t}\n \n \t\tStreamConfiguration &cfg = config_->at(index);\n-\t\tCameraStream &cameraStream =\n-\t\t\tstreams_.emplace_back(formats::MJPEG, cfg.size, index);\n-\t\tjpegStream->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) << \"Failed to configure encoder\";\n+\t\t\tdelete encoder;\n \t\t\treturn ret;\n \t\t}\n+\n+\t\tstreams_.emplace_back(formats::MJPEG, cfg.size, index, encoder);\n+\t\tjpegStream->priv = static_cast<void *>(&streams_.back());\n \t}\n \n \tswitch (config_->validate()) {\n@@ -1473,7 +1469,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..5ac8f05e5a07 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -29,16 +29,15 @@ class CameraMetadata;\n \n struct CameraStream {\n public:\n-\tCameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i);\n-\t~CameraStream();\n+\tCameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i,\n+\t\t Encoder *encoder = nullptr);\n \n \tunsigned int index() const { return index_; }\n+\tEncoder *encoder() const { return encoder_.get(); }\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 +45,7 @@ private:\n \t * one or more streams to the Android framework.\n \t */\n \tunsigned int index_;\n+\tstd::unique_ptr<Encoder> encoder_;\n };\n \n class CameraDevice : protected libcamera::Loggable\n", "prefixes": [ "libcamera-devel", "v3", "10/11" ] }