{"id":9976,"url":"https://patchwork.libcamera.org/api/1.1/patches/9976/?format=json","web_url":"https://patchwork.libcamera.org/patch/9976/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20201006144432.22908-8-jacopo@jmondi.org>","date":"2020-10-06T14:44:26","name":"[libcamera-devel,v2,07/13] android: camera_stream: Fetch format and size from configuration","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"dd889d51b40a8d13c5341a06b23d5de2eade8029","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/1.1/people/3/?format=json","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/9976/mbox/","series":[{"id":1356,"url":"https://patchwork.libcamera.org/api/1.1/series/1356/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1356","date":"2020-10-06T14:44:19","name":"CameraStream refactor","version":2,"mbox":"https://patchwork.libcamera.org/series/1356/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/9976/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/9976/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 20510BEEDF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  6 Oct 2020 14:40:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F27F363CD2;\n\tTue,  6 Oct 2020 16:40:48 +0200 (CEST)","from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net\n\t[217.70.183.195])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1456863C1B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  6 Oct 2020 16:40:47 +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 relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 9A48260007;\n\tTue,  6 Oct 2020 14:40:46 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Tue,  6 Oct 2020 16:44:26 +0200","Message-Id":"<20201006144432.22908-8-jacopo@jmondi.org>","X-Mailer":"git-send-email 2.28.0","In-Reply-To":"<20201006144432.22908-1-jacopo@jmondi.org>","References":"<20201006144432.22908-1-jacopo@jmondi.org>","MIME-Version":"1.0","Subject":"[libcamera-devel] [PATCH v2 07/13] android: camera_stream: Fetch\n\tformat and size from configuration","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>","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":"Fetch the format and size of the libcamera::StreamConfiguration\nassociated with a CameraStream by accessing the configuration by\nindex.\n\nThis removes the need to store the libcamera stream format and sizes\nas class members and avoid duplicating information that might get out\nof sync.\n\nIt also allows to remove the StreamConfiguration from the constructor\nparameters list, as it can be identified by its index. While at it,\nre-order the constructor parameters order.\n\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp |  8 +++-----\n src/android/camera_stream.cpp | 15 +++++----------\n src/android/camera_stream.h   | 18 ++++--------------\n 3 files changed, 12 insertions(+), 29 deletions(-)","diff":"diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 47c423195796..678dca609003 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -1206,9 +1206,8 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n \t\tstreamConfiguration.pixelFormat = format;\n \n \t\tconfig_->addConfiguration(streamConfiguration);\n-\t\tunsigned int index = config_->size() - 1;\n-\t\tstreams_.emplace_back(this, stream, streamConfiguration,\n-\t\t\t\t      CameraStream::Type::Direct, index);\n+\t\tstreams_.emplace_back(this, CameraStream::Type::Direct,\n+\t\t\t\t      stream, config_->size() - 1);\n \t\tstream->priv = static_cast<void *>(&streams_.back());\n \t}\n \n@@ -1262,8 +1261,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n \t\t\tindex = config_->size() - 1;\n \t\t}\n \n-\t\tStreamConfiguration &cfg = config_->at(index);\n-\t\tstreams_.emplace_back(this, jpegStream, cfg, type, index);\n+\t\tstreams_.emplace_back(this, type, jpegStream, index);\n \t\tjpegStream->priv = static_cast<void *>(&streams_.back());\n \t}\n \ndiff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\nindex 9c7819efb679..3946a2cdf844 100644\n--- a/src/android/camera_stream.cpp\n+++ b/src/android/camera_stream.cpp\n@@ -17,18 +17,13 @@ using namespace libcamera;\n \n LOG_DECLARE_CATEGORY(HAL);\n \n-CameraStream::CameraStream(CameraDevice *cameraDevice,\n-\t\t\t   camera3_stream_t *camera3Stream,\n-\t\t\t   const libcamera::StreamConfiguration &cfg,\n-\t\t\t   Type type, unsigned int index)\n-\t: cameraDevice_(cameraDevice), camera3Stream_(camera3Stream),\n-\t  type_(type), index_(index)\n+CameraStream::CameraStream(CameraDevice *cameraDevice, Type type,\n+\t\t\t   camera3_stream_t *camera3Stream, unsigned int index)\n+\t: cameraDevice_(cameraDevice), type_(type),\n+\t  camera3Stream_(camera3Stream), index_(index)\n {\n \tconfig_ = cameraDevice_->cameraConfiguration();\n \n-\tformat_ = cfg.pixelFormat;\n-\tsize_ = cfg.size;\n-\n \tif (type_ == Type::Internal || type_ == Type::Mapped)\n \t\tencoder_ = std::make_unique<EncoderLibJpeg>();\n }\n@@ -63,7 +58,7 @@ int CameraStream::process(const libcamera::FrameBuffer &source,\n \texif.setMake(\"libcamera\");\n \texif.setModel(\"cameraModel\");\n \texif.setOrientation(cameraDevice_->orientation());\n-\texif.setSize(size_);\n+\texif.setSize(configuration().size);\n \t/*\n \t * We set the frame's EXIF timestamp as the time of encode.\n \t * Since the precision we need for EXIF timestamp is only one\ndiff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\nindex d8d9d8c4b237..f46cfd605d03 100644\n--- a/src/android/camera_stream.h\n+++ b/src/android/camera_stream.h\n@@ -106,16 +106,11 @@ public:\n \t\tInternal,\n \t\tMapped,\n \t};\n-\tCameraStream(CameraDevice *cameraDevice,\n-\t\t     camera3_stream_t *androidStream,\n-\t\t     const libcamera::StreamConfiguration &cfg,\n-\t\t     Type type, unsigned int index);\n+\tCameraStream(CameraDevice *cameraDevice, Type type,\n+\t\t     camera3_stream_t *camera3Stream, unsigned int index);\n \n-\tconst camera3_stream_t &camera3Stream() const { return *camera3Stream_; }\n-\tconst libcamera::PixelFormat &format() const { return format_; }\n-\tconst libcamera::Size &size() const { return size_; }\n \tType type() const { return type_; }\n-\n+\tconst camera3_stream_t &camera3Stream() const { return *camera3Stream_; }\n \tconst libcamera::StreamConfiguration &configuration() const;\n \tlibcamera::Stream *stream() const;\n \n@@ -126,13 +121,8 @@ public:\n private:\n \tCameraDevice *cameraDevice_;\n \tlibcamera::CameraConfiguration *config_;\n-\tcamera3_stream_t *camera3Stream_;\n \tType type_;\n-\n-\t/* Libcamera facing format and sizes. */\n-\tlibcamera::PixelFormat format_;\n-\tlibcamera::Size size_;\n-\n+\tcamera3_stream_t *camera3Stream_;\n \t/*\n \t * The index of the libcamera StreamConfiguration as added during\n \t * configureStreams(). A single libcamera Stream may be used to deliver\n","prefixes":["libcamera-devel","v2","07/13"]}