Patch Detail
Show a patch.
GET /api/1.1/patches/9466/?format=api
{ "id": 9466, "url": "https://patchwork.libcamera.org/api/1.1/patches/9466/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9466/", "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-6-jacopo@jmondi.org>", "date": "2020-09-02T15:22:29", "name": "[libcamera-devel,v2,05/12] android: camera_device: Generate RAW resolutions", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "c1cf2a5087530daa19d523f1478651cc62ddb6a8", "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/9466/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/9466/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9466/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 62CD8BE174\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 2 Sep 2020 15:19:05 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 41533629B2;\n\tWed, 2 Sep 2020 17:19:05 +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 20F57629B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 2 Sep 2020 17:19:04 +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 F119E240011;\n\tWed, 2 Sep 2020 15:19:02 +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:29 +0200", "Message-Id": "<20200902152236.69770-6-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 05/12] android: camera_device: Generate\n\tRAW resolutions", "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": "The resolutions supported for the RAW formats cannot be tested from\na list of known sizes like the processed ones. This is mainly due to the\nfact RAW streams are produced by capturing frames at the CSI-2 receiver\noutput and their size corresponds to the sensor's native sizes.\n\nIn order to obtain the RAW frame size generate a temporary\nCameraConfiguration for the Role::StillCaptureRAW role and inspect the\nmap of StreamFormats returned by the pipeline handler.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp | 21 +++++++++++++++++----\n src/android/camera_device.h | 2 ++\n 2 files changed, 19 insertions(+), 4 deletions(-)", "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 58b2ad27c5e2..b110bfe43ece 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -314,6 +314,17 @@ std::vector<Size> CameraDevice::filterYUVResolutions(CameraConfiguration *camera\n \treturn supportedResolutions;\n }\n \n+std::vector<Size> CameraDevice::filterRawResolutions(const libcamera::PixelFormat &pixelFormat)\n+{\n+\tstd::unique_ptr<CameraConfiguration> cameraConfig =\n+\t\tcamera_->generateConfiguration({ StillCaptureRaw });\n+\tStreamConfiguration &cfg = cameraConfig->at(0);\n+\tconst StreamFormats &formats = cfg.formats();\n+\tstd::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n+\n+\treturn supportedResolutions;\n+}\n+\n /*\n * Initialize the format conversion map to translate from Android format\n * identifier to libcamera pixel formats and fill in the list of supported\n@@ -466,13 +477,15 @@ int CameraDevice::initializeStreamConfigurations()\n \t\t\t\t<< camera3Format.name << \" to: \"\n \t\t\t\t<< mappedFormat.toString();\n \n+\t\tstd::vector<Size> resolutions;\n \t\tconst PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\n \t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)\n-\t\t\tcontinue;\n+\t\t\tresolutions = filterRawResolutions(mappedFormat);\n+\t\telse\n+\t\t\tresolutions = filterYUVResolutions(cameraConfig.get(),\n+\t\t\t\t\t\t\t mappedFormat,\n+\t\t\t\t\t\t\t cameraResolutions);\n \n-\t\tstd::vector<Size> resolutions = filterYUVResolutions(cameraConfig.get(),\n-\t\t\t\t\t\t\t\t mappedFormat,\n-\t\t\t\t\t\t\t\t cameraResolutions);\n \t\tfor (const Size &res : resolutions) {\n \t\t\tstreamConfigurations_.push_back({ res, androidFormat });\n \ndiff --git a/src/android/camera_device.h b/src/android/camera_device.h\nindex 359a163ebab9..dc0ee664d443 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -97,6 +97,8 @@ private:\n \tfilterYUVResolutions(libcamera::CameraConfiguration *cameraConfig,\n \t\t\t const libcamera::PixelFormat &pixelFormat,\n \t\t\t const std::vector<libcamera::Size> &resolutions);\n+\tstd::vector<libcamera::Size>\n+\tfilterRawResolutions(const libcamera::PixelFormat &pixelFormat);\n \n \tstd::tuple<uint32_t, uint32_t> calculateStaticMetadataSize();\n \tlibcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);\n", "prefixes": [ "libcamera-devel", "v2", "05/12" ] }