[{"id":14891,"web_url":"https://patchwork.libcamera.org/comment/14891/","msgid":"<CAO4hSrhe_D4qN7HCTGBeQ4Nw0Mq_X4VxJE1umqEvmNNjTXTK0g@mail.gmail.com>","date":"2021-02-01T21:12:34","subject":"Re: [libcamera-devel] [PATCH 00/20] libcamera: Multi-stream support\n\tfor the simple pipeline handler","submitter":{"id":79,"url":"https://patchwork.libcamera.org/api/people/79/","name":"Phi-bang Nguyen","email":"pnguyen@baylibre.com"},"content":"Hi Laurent,\n\nThank you for the patches. I tested the series under Android with three\nconcurrent streams at the same time: preview / video recording / photo\ntaking.\n\nTested-by: Phi-Bang Nguyen <pnguyen@baylibre.com>\n\nRegards,\nPhi Bang\n\nLe dim. 31 janv. 2021 à 23:47, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> a écrit :\n\n> Hello,\n>\n> This patch series implements multi-stream support in the simple pipeline\n> handler.\n>\n> Multi-stream support in the capture device requires hardware processing\n> capabilities (at least format conversion and scaling), which would\n> likely not qualify the platform for support in the simple pipeline\n> handler. However, for platforms that include a converter, the V4L2 M2M\n> API allows opening multiple instances of the converter to create\n> multiple output streams with different formats and resolution (as long\n> as the hardware has enough bandwidth to run all the processing passes).\n> This approach is generic and doesn't require any extra hardware feature\n> compared to what the simple pipeline handler already uses.\n>\n> The patches starts with refactoring of the converter class to prepare\n> for multiple streams support, and then refactors the simple pipeline\n> handler to achieve the same goal. The last two patches enable\n> multi-streams support\n>\n> The code has been tested on the MediaTek Pumpkin i500 board. Its\n> support isn't available in the simple pipeline handler yet due to the\n> drivers not being upstream, which is an issue that is being addressed.\n> Enabling it, after importing the kernel headers that define the\n> MediaTek-specific pixel formats and enabling them in libcamera, only\n> requires the following change in the simple pipeline handler.\n>\n> diff --git a/src/libcamera/pipeline/simple/simple.cpp\n> b/src/libcamera/pipeline/simple/simple.cpp\n> index 55a5528611c8..6b0170d1aba8 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -132,6 +132,7 @@ namespace {\n>\n>  static const SimplePipelineInfo supportedDevices[] = {\n>         { \"imx7-csi\", \"pxp\", 1 },\n> +       { \"mtk-camsv-p1\", \"mtk-mdp3\", 3 },\n>         { \"qcom-camss\", nullptr, 1 },\n>         { \"sun6i-csi\", nullptr, 1 },\n>  };\n>\n> Laurent Pinchart (20):\n>   libcamera: pipeline: simple: Manage converter with std::unique_ptr<>\n>   libcamera: pipeline: simple: Don't override stride at configure time\n>   libcamera: pipeline: simple: converter: Group query functions together\n>   libcamera: pipeline: simple: converter: Use StreamConfiguration for\n>     input configuration\n>   libcamera: pipeline: simple: converter: Configure input stride\n>   libcamera: pipeline: simple: converter: Differentiate input and output\n>     buffers count\n>   libcamera: pipeline: simple: converter: Replace open() with isValid()\n>   libcamera: pipeline: simple: converter: Decouple input and output\n>     completion\n>   libcamera: pipeline: simple: converter: Add multi-stream support\n>   libcamera: pipeline: simple: Store streams in a vector\n>   libcamera: pipeline: simple: Drop unused members of configuration\n>   libcamera: pipeline: simple: Document the pipeline handler design\n>   libcamera: pipeline: simple: Rename Configuration::pixelFormat\n>   libcamera: pipeline: simple: Cache pipeline config in\n>     SimpleCameraConfiguration\n>   libcamera: pipeline: simple: Add output formats to Configuration\n>   libcamera: pipeline: simple: Move converter data to camera data\n>   libcamera: pipeline: simple: Hardcode the number of internal buffers\n>   libcamera: pipeline: simple: Support configuration of multiple streams\n>   libcamera: pipeline: simple: Support usage of multiple streams\n>   libcamera: pipeline: simple: Enable multiple streams for compatible\n>     devices\n>\n>  src/libcamera/pipeline/simple/converter.cpp | 398 ++++++++------\n>  src/libcamera/pipeline/simple/converter.h   |  60 ++-\n>  src/libcamera/pipeline/simple/simple.cpp    | 542 +++++++++++++-------\n>  3 files changed, 650 insertions(+), 350 deletions(-)\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>\n>","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 10608BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  1 Feb 2021 21:22:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8DE5468419;\n\tMon,  1 Feb 2021 22:22:28 +0100 (CET)","from mail-io1-xd2f.google.com (mail-io1-xd2f.google.com\n\t[IPv6:2607:f8b0:4864:20::d2f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9BC52683FF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  1 Feb 2021 22:12:46 +0100 (CET)","by mail-io1-xd2f.google.com with SMTP id u20so4885672iot.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 01 Feb 2021 13:12:46 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=baylibre-com.20150623.gappssmtp.com\n\theader.i=@baylibre-com.20150623.gappssmtp.com\n\theader.b=\"oH4PW7Y5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=baylibre-com.20150623.gappssmtp.com; s=20150623;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=UrlJAm+ra09Dnb2Lj2Jv8l0uZfYhZKVITE0Qny12RmY=;\n\tb=oH4PW7Y57KBO2GTckYY4UnxjJGuRj+W9RlyRjO/XfUxTswPdoUsvsnjo790PqZNjzr\n\tfEjyhmITl+80e4rauqUbpdcyR2n71L8/uywfDwr7LCok3M16Cy5W3F6DKeMoFKsv74AU\n\tTcAw1U5oi5iThOyK3gMHRUud0zxbkrdq08D2BORrv2lK+saH+qF93XeNirPf9Z1s9Qkm\n\tiWIzGImL8i9vJIEF1+xSAdwbKUaxN/1gnQqiI2+3BQZZ3emmxG4zwpV9EBVKK0FxGpXg\n\tsAWL/lLIXbi/82TRJ26hTLTo75u26F+BcIcVHjncubbGjbxxIOFEoaaEHogSE62Rv2vP\n\tq2oQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=UrlJAm+ra09Dnb2Lj2Jv8l0uZfYhZKVITE0Qny12RmY=;\n\tb=mL3uzE9uhStpNuyDMJY6Ab307+RE3kmW1gCkMqXz8BQORx/eTAXE7ERP9P/zmmETlM\n\tJ6Ah5Lw0nAQ5RSayvNVB3Lk2IfUBiuUkq8kiJHKI80I3x6rpLWgs+sLe1t0ZwVVcswSg\n\tTSE/WQjiEtQST9rhwuzEZMnKoOvYiHDhMTPOPRy33dcSHcyv2HJsiatogWsGogVYDXMp\n\t9tscbFA7pmRrLQZ2nQtztJI7Lg86Ep8zWEM/rQJhjJFEVOk7uW8C41OE/oqz4/LFqR5h\n\tQwYQ9jEfjgYPVRBAEgMa6EpN+KF/S9pph79MFXhsUbSP3bVoeZXhVHfTTHljiZy0RaVb\n\tlm3g==","X-Gm-Message-State":"AOAM532VmeyQdXj2b8qLB429K7fi63Cimlb0NLF/597b9Xcxyft0CVO5\n\tnybrZbEJJ9pItWLNdj6fZJrggW08X5R9HYr1boQPHPcowX1VWQ==","X-Google-Smtp-Source":"ABdhPJyKgfpscYJb5gT5tCsAgue0aW0leonUzaXgDwmzdhx9YmJB7kOXUijfW04slxAHKB7bblhWdkbLXdZFD1T6m80=","X-Received":"by 2002:a6b:7b06:: with SMTP id\n\tl6mr14745389iop.199.1612213965300; \n\tMon, 01 Feb 2021 13:12:45 -0800 (PST)","MIME-Version":"1.0","References":"<20210131224702.8838-1-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20210131224702.8838-1-laurent.pinchart@ideasonboard.com>","From":"Phi-bang Nguyen <pnguyen@baylibre.com>","Date":"Mon, 1 Feb 2021 22:12:34 +0100","Message-ID":"<CAO4hSrhe_D4qN7HCTGBeQ4Nw0Mq_X4VxJE1umqEvmNNjTXTK0g@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","X-Mailman-Approved-At":"Mon, 01 Feb 2021 22:22:27 +0100","Subject":"Re: [libcamera-devel] [PATCH 00/20] libcamera: Multi-stream support\n\tfor the simple pipeline handler","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":"libcamera-devel@lists.libcamera.org","Content-Type":"multipart/mixed;\n\tboundary=\"===============8478084554527846610==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]