Patch Detail
Show a patch.
GET /api/patches/9442/?format=api
{ "id": 9442, "url": "https://patchwork.libcamera.org/api/patches/9442/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9442/", "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": "<20200902104730.43451-6-jacopo@jmondi.org>", "date": "2020-09-02T10:47:30", "name": "[libcamera-devel,5/5] android: camera_device: List RAW resolutions", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "eea14c2cd87dc5a63da32c8efb1d7158c646d3f0", "submitter": { "id": 3, "url": "https://patchwork.libcamera.org/api/people/3/?format=api", "name": "Jacopo Mondi", "email": "jacopo@jmondi.org" }, "delegate": { "id": 15, "url": "https://patchwork.libcamera.org/api/users/15/?format=api", "username": "jmondi", "first_name": "Jacopo", "last_name": "Mondi", "email": "jacopo@jmondi.org" }, "mbox": "https://patchwork.libcamera.org/patch/9442/mbox/", "series": [ { "id": 1255, "url": "https://patchwork.libcamera.org/api/series/1255/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1255", "date": "2020-09-02T10:47:25", "name": "android: camera_device: List JPEG/RAW correct resolutions", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1255/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9442/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9442/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 4D817BF019\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 2 Sep 2020 10:44:02 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 278CC62997;\n\tWed, 2 Sep 2020 12:44:02 +0200 (CEST)", "from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net\n\t[217.70.183.194])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 36D1B628EE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 2 Sep 2020 12:44:00 +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 relay2-d.mail.gandi.net (Postfix) with ESMTPSA id 58C2940009;\n\tWed, 2 Sep 2020 10:43:59 +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 12:47:30 +0200", "Message-Id": "<20200902104730.43451-6-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200902104730.43451-1-jacopo@jmondi.org>", "References": "<20200902104730.43451-1-jacopo@jmondi.org>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH 5/5] android: camera_device: List RAW\n\tresolutions", "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\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 765c3292e4f3..181fca83988d 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -314,6 +314,17 @@ std::vector<Size> CameraDevice::listProcessedResolutions(CameraConfiguration *ca\n \treturn supportedResolutions;\n }\n \n+std::vector<Size> CameraDevice::listRawResolutions(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 = listRawResolutions(mappedFormat);\n+\t\telse\n+\t\t\tresolutions = listProcessedResolutions(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 = listProcessedResolutions(cameraConfig.get(),\n-\t\t\t\t\t\t\t\t\t mappedFormat,\n-\t\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 18fd5ff03cde..230e89b011e6 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -97,6 +97,8 @@ private:\n \tlistProcessedResolutions(libcamera::CameraConfiguration *cameraConfig,\n \t\t\t\t const libcamera::PixelFormat &pixelFormat,\n \t\t\t\t const std::vector<libcamera::Size> &resolutions);\n+\tstd::vector<libcamera::Size>\n+\tlistRawResolutions(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", "5/5" ] }