Cover Letter Detail
Show a cover letter.
GET /api/covers/16801/?format=api
{ "id": 16801, "url": "https://patchwork.libcamera.org/api/covers/16801/?format=api", "web_url": "https://patchwork.libcamera.org/cover/16801/", "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": "<20220726182500.425182-1-hanlinchen@chromium.org>", "date": "2022-07-26T18:24:54", "name": "[libcamera-devel,0/6] Implement Android Partial Result Featrue", "submitter": { "id": 98, "url": "https://patchwork.libcamera.org/api/people/98/?format=api", "name": "Hanlin Chen", "email": "hanlinchen@chromium.org" }, "mbox": "https://patchwork.libcamera.org/cover/16801/mbox/", "series": [ { "id": 3329, "url": "https://patchwork.libcamera.org/api/series/3329/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3329", "date": "2022-07-26T18:24:54", "name": "Implement Android Partial Result Featrue", "version": 1, "mbox": "https://patchwork.libcamera.org/series/3329/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/16801/comments/", "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 B23E2BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 26 Jul 2022 18:25:24 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3BCD363312;\n\tTue, 26 Jul 2022 20:25:24 +0200 (CEST)", "from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com\n\t[IPv6:2607:f8b0:4864:20::102a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1089F60487\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Jul 2022 20:25:23 +0200 (CEST)", "by mail-pj1-x102a.google.com with SMTP id\n\tq7-20020a17090a7a8700b001f300db8677so1204236pjf.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Jul 2022 11:25:22 -0700 (PDT)", "from localhost ([2401:fa00:1:17:739:6574:4032:5911])\n\tby smtp.gmail.com with UTF8SMTPSA id\n\tl3-20020a170903244300b0015eab1b097dsm3063191pls.22.2022.07.26.11.25.19\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tTue, 26 Jul 2022 11:25:20 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1658859924;\n\tbh=MviuWh4zQGjni2hAzoonNBcAB/MdzVJ3JNGunLLQ4hU=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=zuoX0MhWNpH5Z4J6v2XkLL6S2bp1O0qdpUBsEgaCqfnFrstwIvGmZQMGIpZ4+Bsca\n\t/TuK9d6X/+RhW11XQWJZH6LDDhvl8DCyJhsrNCCsT2j11OJRba7TB6O5V1dfirWacU\n\tmv/VynIvYRASHsC6szG42djAg5lkDAD/XaJ6/0svH14Jn2q3zzOg8yKMG0AV256UHm\n\ty/iD0llbxgRcsay03vX1UahT4B/jvJYDsA/Ghnmy0sexWop2UZkgfTcD9MwLat5st8\n\tTWI3gk9oq1jyE8X27FDDFpswMdoXENn0PRm7ZQGi7tFFaLDcPf+MQa/HFaPDiVhnDA\n\tO/gvqEwoCmjaQ==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; h=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=dWLbX6R/ZbYmUO9MZF8VUxCzZRrNNcr+kgwNLzBO0e4=;\n\tb=YLQbTZZIFw3M6hyDFdBS9VWEt7WLJecQwH2AVBGhsapR1oVNVcWzphqU3U7tFmO6DX\n\t/Y9kjH003bmO1BG1NqABhaoNI+kQWS65qmEUlEy/lZz/Xoc7HrZxD5zcH5zB0Ml8rJ0j\n\t2ukWYs3xq0s0CUN1ryH+G6VKcU/icKmkqTo5o=" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=chromium.org\n\theader.i=@chromium.org header.b=\"YLQbTZZI\"; \n\tdkim-atps=neutral", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=dWLbX6R/ZbYmUO9MZF8VUxCzZRrNNcr+kgwNLzBO0e4=;\n\tb=2uPF5a5eyMwHwxUmpWT/RIvO1bKAN2uPKv42OdzOcuvVhVJbs5xRwOlEY35y72dG4s\n\tiLpBnZgQ6sfXP6No38Y8jJ1kHRFL84NqT8xo0nDpGTg87JktYdxRy/Ip+NCFMaALqswf\n\tY4/wN9EWr/QK4Tqf5Mg33op2U+koVEHl2MxgNFu1dARp3AUPgBWcZKBKMMOYwWBBYoU6\n\tyglcuWZVyaYhM0l+zo7UdXTx7baEKGJpj6ZDdljd6kO6ad/0s4V6/3YB4/d4AOAyDwMG\n\tQKiaDZChhl8K+6VHlgycgxH+ANrPNdE24/CHm7EjA7b5DvTfT8RVLnqoCDVfIxs58LnB\n\tBSrg==", "X-Gm-Message-State": "AJIora8trdP7o974WODV78AzlpX30fTmzYcgMgtk26vkgGP0xZ+wqkyK\n\tGVVj8uTAHGTfqgBuiTexB3r+ek5Rcqmbng==", "X-Google-Smtp-Source": "AGRyM1v3d0b2ykpuZYNvY0kdHR0D6jvbVvRNrg1Cf7GVehKELv25NQWGJw/UucnVjLyojnQ/gvvwsQ==", "X-Received": "by 2002:a17:902:bb8a:b0:16d:190d:981d with SMTP id\n\tm10-20020a170902bb8a00b0016d190d981dmr17958556pls.53.1658859920875; \n\tTue, 26 Jul 2022 11:25:20 -0700 (PDT)", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 27 Jul 2022 02:24:54 +0800", "Message-Id": "<20220726182500.425182-1-hanlinchen@chromium.org>", "X-Mailer": "git-send-email 2.37.1.359.gd136c6c3e2-goog", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 0/6] Implement Android Partial Result\n\tFeatrue", "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>", "From": "Han-Lin Chen via libcamera-devel <libcamera-devel@lists.libcamera.org>", "Reply-To": "Han-Lin Chen <hanlinchen@chromium.org>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "The series is to implement Android partial result feature, which allows\npipeline handler returns early buffers and metadata back to application before\nrequest completed.\n\nThe feature is as a preparation of implementing the following description of\nAndroid camera3 spec:\n\n* The order of returning metadata and buffers for a single result does not\n* matter, but buffers for a given stream must be returned in FIFO order. So\n* the buffer for request 5 for stream A must always be returned before the\n* buffer for request 6 for stream A. This also applies to the result\n* metadata; the metadata for request 5 must be returned before the metadata\n* for request 6.\n*\n* However, different streams are independent of each other, so it is\n* acceptable and expected that the buffer for request 5 for stream A may be\n* returned after the buffer for request 6 for stream B is. And it is\n* acceptable that the result metadata for request 6 for stream B is\n* returned before the buffer for request 5 for stream A is.\n\nThe spec is critical for ZSL implementation, because the still capture\ncan be return in an order independent to pending preview requests. This will\nenhance still capture performance by:\n1. Use cached raw frame for still capture, skip pending sensor exposure.\n2. Skip pending preview requests and return still capture concurently.\n2. HAL can pick 3A stable raw frame, so the application doesn't need to\nwait for the process of stablizing 3A (by AEPrecapture and AFTrigger).\n\nBecause Android relies on metadata to process buffer properly, bufferCompleted\nsignal is not sufficient to report partial result to framework. The\npatch series allows returning metadata earlier for pipeline handler and\nrefactor Android adaptor to return partial result as soon as possible.\n\nHan-Lin Chen (6):\n libcamera: Camera: Add RequestCompletionMode to configure the\n completion order\n libcamera: Camera: Add signals for completion of metadata and partial\n result\n libcamera: ipu3: returning partial results\n android: Move StreamBuffer out of Camera3RequestDescriptor\n android: Add JpegExifMetadata to store tags setting into Exif\n android: Implement partial result feature based on\n partialResultCompleted signal\n\n include/libcamera/camera.h | 10 +\n include/libcamera/internal/camera.h | 4 +\n include/libcamera/internal/pipeline_handler.h | 3 +\n include/libcamera/request.h | 40 +\n src/android/camera_capabilities.cpp | 2 +-\n src/android/camera_capabilities.h | 2 +\n src/android/camera_device.cpp | 702 ++++++++++++------\n src/android/camera_device.h | 30 +-\n src/android/camera_request.cpp | 79 +-\n src/android/camera_request.h | 96 ++-\n src/android/camera_stream.cpp | 17 +-\n src/android/camera_stream.h | 10 +-\n src/android/jpeg/post_processor_jpeg.cpp | 17 +-\n src/android/jpeg/post_processor_jpeg.h | 2 +-\n src/android/post_processor.h | 4 +-\n src/android/yuv/post_processor_yuv.cpp | 2 +-\n src/android/yuv/post_processor_yuv.h | 2 +-\n src/libcamera/camera.cpp | 78 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 46 +-\n src/libcamera/pipeline_handler.cpp | 120 ++-\n src/libcamera/request.cpp | 159 ++++\n 21 files changed, 1048 insertions(+), 377 deletions(-)" }