Show a cover letter.

GET /api/1.1/covers/20831/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 20831,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/20831/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/20831/",
    "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": "<20240808102346.13065-1-naush@raspberrypi.com>",
    "date": "2024-08-08T10:23:39",
    "name": "[v1,0/7] Raspberry Pi: Add controls::rpi::ScalerCrops",
    "submitter": {
        "id": 34,
        "url": "https://patchwork.libcamera.org/api/1.1/people/34/?format=api",
        "name": "Naushir Patuck",
        "email": "naush@raspberrypi.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/20831/mbox/",
    "series": [
        {
            "id": 4501,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4501/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4501",
            "date": "2024-08-08T10:23:39",
            "name": "Raspberry Pi: Add controls::rpi::ScalerCrops",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/4501/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/20831/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 0D924C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  8 Aug 2024 10:23:52 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4256A633B5;\n\tThu,  8 Aug 2024 12:23:50 +0200 (CEST)",
            "from mail-wr1-x436.google.com (mail-wr1-x436.google.com\n\t[IPv6:2a00:1450:4864:20::436])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D1AF661955\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  8 Aug 2024 12:23:46 +0200 (CEST)",
            "by mail-wr1-x436.google.com with SMTP id\n\tffacd0b85a97d-3687ea0521cso584447f8f.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 08 Aug 2024 03:23:46 -0700 (PDT)",
            "from naush-laptop.pitowers.org ([93.93.133.154])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-36d272290c2sm1404234f8f.92.2024.08.08.03.23.45\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 08 Aug 2024 03:23:45 -0700 (PDT)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"Ym353Vd/\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1723112626; x=1723717426;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Y930BLZrgr8J1JsGdBBm/oclsAO8xMtxvXVk67d/ojg=;\n\tb=Ym353Vd/2qR6oxanpyZfgNv5UZu4ZUyeyaAGcg4vTeBUZ0Kxnj9RSLs7d1EgyCnnzj\n\t+wewtu4v9HjgRhgDHQqewFyErdjz328AeFOoXv9OIIZGoKJVXJCFLXMgrEtUF76SqSEu\n\tOgbD+o0vWipz+JsnXkWJ7JxpyYrwRUZbfD5m2j8UZK6poNEEcAy6cSX0sT7SbcfhkYYO\n\tNiLN5y6NX31nFNCOF1Wrq2hmVfQLteCBFdBfDUch91GGFwg2CO/OhB4VFix1+dypTuMs\n\tR6+T5GgViuJR6ScMpWGHhZ/1wzR/szsoym7CsiU4GAw1En3O44vElPNuzQhPcRGv15YN\n\tQ0tw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1723112626; x=1723717426;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=Y930BLZrgr8J1JsGdBBm/oclsAO8xMtxvXVk67d/ojg=;\n\tb=GfJJK+OR1snmTLrCPPdWnOmR7kXHJspoCgtjJ6S3Prx4O38mmbXkhO8U1dA/kKcHET\n\t6kbvFZ8yKqafWTYrbeDzXV0GxxV6D+tiddsTXMCRhWgnLMeyj+6HXArfWHkHzA8mf5cy\n\tIUDlm4q7uIQLbpx1MqnJjhwE5ikKKqBLMgAAc9td122imZ3JALCxJ9rHuEiEZ28VuGyj\n\tNsKg4sm5DexyLfLz/1KVjyrNxiFnVneZ8OoHgqrP4wKeLUTjRz2waBq9YDxESYvdzItR\n\tvMWP3DR/EWQe8zZEEImwM7Enq7ewl77A38K2xd0SD/g4NEyWBWArwusp0nvOSh3pxDvo\n\t3Pcg==",
        "X-Gm-Message-State": "AOJu0YwjuYedlFo7tCjWhc+1OwOidok1q5yz3FTut/PPGQFZeTifJVlq\n\tCnRsdvK9itPKgtyaFDdODdisIt1Nte8WJqyU5VsbhlbsF74x4bJi/A6ANIEwVhAA2LcgLstP3/h\n\tZ",
        "X-Google-Smtp-Source": "AGHT+IHLjz+vaafRSZIZUmn4T7FB3UD9WqmnC0SS41mV5HH/d+B5r2Y0HBMBq/ROsrIBE/IRyAWlEA==",
        "X-Received": "by 2002:a5d:48c6:0:b0:368:4226:407b with SMTP id\n\tffacd0b85a97d-36d27592025mr1241115f8f.61.1723112625873; \n\tThu, 08 Aug 2024 03:23:45 -0700 (PDT)",
        "From": "Naushir Patuck <naush@raspberrypi.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Naushir Patuck <naush@raspberrypi.com>",
        "Subject": "[PATCH v1 0/7] Raspberry Pi: Add controls::rpi::ScalerCrops ",
        "Date": "Thu,  8 Aug 2024 11:23:39 +0100",
        "Message-Id": "<20240808102346.13065-1-naush@raspberrypi.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hi,\n\nThis patch series adds preliminary support for setting individual crop\nrectangles for each ISP output stream. The current ScalerCrop control takes a\nsingle rectangle and applies it to all output streams. In this series, we define\na new rpi::ScalerCrops vendor control that takes a span of rectangles, one for\neach output stream. The behaviour of the existing ScalerCrop control remains\nunchanged.\n\nOne example of the use of this feature is when generating low resolution images\nfor AI inferencing. Typically, vision neural network models are trained on\nsquare dimension image with 1:1 aspect ratio (e.g. 640x640 or 320x320). If an\napplication requests, say, a 1920x1080 (16:9) output stream + 640x640 (1:1)\ninference stream, then the latter images end up squished and distorted. This\naffects the performance of the neural network.  By allowing separate crops on\neach stream, the inference stream can preserve the pixel aspect ratio for any\nrequested resolution.\n\nNote that VC4 based platforms cannot apply different crops to each output,\nwhereas the PiSP/Pi5 platform can. However, all the infrastructure for this\nchange lives in the core pipeline handler shared by both platforms.\n\nThanks,\nNaush\n\nNaushir Patuck (7):\n  controls: rpi: Add a vendor rpi::ScalerCrops control\n  pipeline: rpi: Remove CameraData::scalerCrop_\n  pipeline: rpi: Pass crop rectangle as a parameter to\n    platformSetIspCrop()\n  pipeline: rpi: Introduce CameraData::CropParams\n  pipeline: rpi: Track which ISP output is configured for a stream\n  pipeline: rpi: Pass ISP output index into platformSetIspCrop()\n  pipeline: rpi: Handler controls::rpi::ScalerCrops\n\n src/ipa/rpi/common/ipa_base.cpp               |  2 +\n src/libcamera/control_ids_rpi.yaml            | 15 ++++\n .../pipeline/rpi/common/pipeline_base.cpp     | 84 +++++++++++++------\n .../pipeline/rpi/common/pipeline_base.h       | 26 +++++-\n src/libcamera/pipeline/rpi/vc4/vc4.cpp        | 18 ++--\n 5 files changed, 112 insertions(+), 33 deletions(-)"
}