{"id":21481,"url":"https://patchwork.libcamera.org/api/covers/21481/?format=json","web_url":"https://patchwork.libcamera.org/cover/21481/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20241002212632.2463458-1-kieran.bingham@ideasonboard.com>","date":"2024-10-02T21:26:28","name":"[v2,0/4] MediaPipeline: Complex input device support","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/21481/mbox/","series":[{"id":4650,"url":"https://patchwork.libcamera.org/api/series/4650/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4650","date":"2024-10-02T21:26:28","name":"MediaPipeline: Complex input device support","version":2,"mbox":"https://patchwork.libcamera.org/series/4650/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/21481/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 F3D19C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  2 Oct 2024 21:26:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A7BF16352C;\n\tWed,  2 Oct 2024 23:26:40 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9C9CD63510\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  2 Oct 2024 23:26:37 +0200 (CEST)","from Monstersaurus.tail69b4.ts.net\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CDE70581;\n\tWed,  2 Oct 2024 23:25:04 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"LcUXzxXM\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1727904304;\n\tbh=99N6TPOOLplMFVyh16fCSCtNSxaDaXg9rdu2zd5ZBtU=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=LcUXzxXMxHndL9NRoLwe9ZLjxHTATVQx5HulXf2is2HJY0FX11+t/vL+e76pzweFA\n\tJOsplCdFDbgI24Di69879TSVJciYdCph5przCjJ1NOIxjT9JQ4ZY0eYmfQTkaDkY6L\n\tOV2YhPo5iyDZw9DHOwL5iiuwUZVJuxyqTyx7EBqI=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"[PATCH v2 0/4] MediaPipeline: Complex input device support","Date":"Wed,  2 Oct 2024 22:26:28 +0100","Message-Id":"<20241002212632.2463458-1-kieran.bingham@ideasonboard.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":"The input pipelines for cameras on small board platforms can be widely\nvaried and may incorporate video multiplexers feeding multiple cameras\ninto a single CSI2 receiver.\n\nSuch devices are already supported in the Simple Pipeline handler with\nit's graph management code.\n\nThis series proposes a new class 'MediaPipeline' which takes the\nimplementation details of handling multiple cameras and the routing\ninvolved in selecting and configuring the links and pads of those\nroutes.\n\nThe series then ads this helper to the RKISP1 pipeline handler to\nfacilitate multiple cameras connected to a single CSI2 receiver. One\nexample of this could be making use of the Arducam 4 camera multiplexor\n[0] connected to the Debix Model A which we have used for testing this.\n\n[0] https://www.arducam.com/product/multi-camera-v2-1-adapter-raspberry-pi/\n\nThis series convers only the RkISP1 for now, but I could anticipate an\nadditional series will also convert the Simple Pipeline handler to make\nuse of this new helper class. The Mali-C55 and other pipeline handlers\nwhich antipate user configurable input paths would also be able to make\nuse of this implementation.\n\nKieran Bingham (4):\n  libcamera: media_device: Add helper to return matching entities\n  libcamera: pipeline: rkisp1: Fix typo in todo task\n  libcamera: internal: Add MediaPipeline helper\n  libcamera: pipeline: rkisp1: Convert to use MediaPipeline\n\n include/libcamera/internal/media_device.h   |   2 +\n include/libcamera/internal/media_pipeline.h |  59 ++++\n include/libcamera/internal/meson.build      |   1 +\n src/libcamera/media_device.cpp              |  25 +-\n src/libcamera/media_pipeline.cpp            | 307 ++++++++++++++++++++\n src/libcamera/meson.build                   |   1 +\n src/libcamera/pipeline/rkisp1/rkisp1.cpp    |  88 +++---\n 7 files changed, 427 insertions(+), 56 deletions(-)\n create mode 100644 include/libcamera/internal/media_pipeline.h\n create mode 100644 src/libcamera/media_pipeline.cpp"}