[{"id":36865,"web_url":"https://patchwork.libcamera.org/comment/36865/","msgid":"<176346449407.869409.12811063740006621855@isaac-ThinkPad-T16-Gen-2>","date":"2025-11-18T11:14:54","subject":"Re: [PATCH v2 0/2]  imx8-isi: Use MediaPipeline","submitter":{"id":215,"url":"https://patchwork.libcamera.org/api/people/215/","name":"Isaac Scott","email":"isaac.scott@ideasonboard.com"},"content":"Hi Antoine,\n\nThank you for the patches!\n\nQuoting Antoine Bouyer (2025-11-14 15:43:39)\n> Submit this imx8-isi rework on behalf of Andrei. This series is about\n> using libcamera MediaPipeline class to simplify imx8-isi pipeline\n> configuration.\n> \n> Instead of going over each pipeline subdevices during imx8-isi match(),\n> all is handled by MediaPipeline class. It helps supporting complex\n> topologies, where subdevice(s) could be optional, typically on i.MX95\n> SoC which has a formatter, while other i.MX SoCs don't have it.\n> \n> It reuses the simple pipeline's locateSensors method, so external ISP are\n> also supported then. ISP is considered as the 'sensor' element.\n> \n> Tested on i.MX8MP SoC.\n> \n\nI'm trying to test this patch series by re-routing my pipeline through\nthe ISI instead of the ISP, and I'm having some issues with getting it\nto work.\n\nMy media graph is as below:\n\n```\n- entity 1: crossbar (5 pads, 4 links, 2 routes)\n            type V4L2 subdev subtype Unknown flags 0\n            device node name /dev/v4l-subdev0\n\troutes:\n\t\t0/0 -> 3/0 [ACTIVE]\n\t\t0/0 -> 4/0 [ACTIVE]\n\tpad0: SINK,MUST_CONNECT\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t<- \"csis-32e40000.csi\":1 [ENABLED,IMMUTABLE]\n\tpad1: SINK,MUST_CONNECT\n\tpad2: SINK,MUST_CONNECT\n\t\t<- \"mxc_isi.output\":0 [ENABLED,IMMUTABLE]\n\tpad3: SOURCE\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t-> \"mxc_isi.0\":0 [ENABLED,IMMUTABLE]\n\tpad4: SOURCE\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t-> \"mxc_isi.1\":0 [ENABLED,IMMUTABLE]\n\n- entity 7: mxc_isi.0 (2 pads, 2 links, 0 routes)\n            type V4L2 subdev subtype Unknown flags 0\n            device node name /dev/v4l-subdev1\n\tpad0: SINK\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw\n\t\t compose.bounds:(0,0)/400x400\n\t\t compose:(0,0)/400x400]\n\t\t<- \"crossbar\":3 [ENABLED,IMMUTABLE]\n\tpad1: SOURCE\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none\n\t\t crop.bounds:(0,0)/400x400\n\t\t crop:(0,0)/400x400]\n\t\t-> \"mxc_isi.0.capture\":0 [ENABLED,IMMUTABLE]\n\n- entity 10: mxc_isi.0.capture (1 pad, 1 link)\n             type Node subtype V4L flags 0\n             device node name /dev/video1\n\tpad0: SINK\n\t\t<- \"mxc_isi.0\":1 [ENABLED,IMMUTABLE]\n\n- entity 18: mxc_isi.1 (2 pads, 2 links, 0 routes)\n             type V4L2 subdev subtype Unknown flags 0\n             device node name /dev/v4l-subdev2\n\tpad0: SINK\n\t\t[stream:0 fmt:UYVY8_2X8/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range\n\t\t compose.bounds:(0,0)/1920x1080\n\t\t compose:(0,0)/1920x1080]\n\t\t<- \"crossbar\":4 [ENABLED,IMMUTABLE]\n\tpad1: SOURCE\n\t\t[stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range\n\t\t crop.bounds:(0,0)/1920x1080\n\t\t crop:(0,0)/1920x1080]\n\t\t-> \"mxc_isi.1.capture\":0 [ENABLED,IMMUTABLE]\n\n- entity 21: mxc_isi.1.capture (1 pad, 1 link)\n             type Node subtype V4L flags 0\n             device node name /dev/video2\n\tpad0: SINK\n\t\t<- \"mxc_isi.1\":1 [ENABLED,IMMUTABLE]\n\n- entity 29: mxc_isi.output (1 pad, 1 link)\n             type Node subtype V4L flags 0\n\tpad0: SOURCE\n\t\t-> \"crossbar\":2 [ENABLED,IMMUTABLE]\n\n- entity 36: csis-32e40000.csi (2 pads, 2 links, 0 routes)\n             type V4L2 subdev subtype Unknown flags 0\n             device node name /dev/v4l-subdev3\n\tpad0: SINK,MUST_CONNECT\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t<- \"fpga-1\":2 [ENABLED]\n\tpad1: SOURCE,MUST_CONNECT\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t-> \"crossbar\":0 [ENABLED,IMMUTABLE]\n\n- entity 41: fpga-1 (3 pads, 3 links, 0 routes)\n             type V4L2 subdev subtype Unknown flags 0\n             device node name /dev/v4l-subdev4\n\tpad0: SINK\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t<- \"camera 11-0036\":0 [ENABLED,DYNAMIC]\n\tpad1: SINK\n\t\t[stream:0 fmt:Y8_1X8/1x1 field:none]\n\t\t<- \"bridge 11-0060\":0 [DYNAMIC]\n\tpad2: SOURCE\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n\t\t-> \"csis-32e40000.csi\":0 [ENABLED]\n\n- entity 47: camera 11-0036 (1 pad, 1 link, 0 routes)\n             type V4L2 subdev subtype Sensor flags 0\n             device node name /dev/v4l-subdev5\n\tpad0: SOURCE\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range\n\t\t crop.bounds:(8,8)/400x400\n\t\t crop:(8,8)/400x400]\n\t\t-> \"fpga-1\":0 [ENABLED,DYNAMIC]\n\n- entity 51: camera_torch_1 (0 pad, 0 link, 0 routes)\n             type V4L2 subdev subtype Flash flags 0\n             device node name /dev/v4l-subdev6\n\n- entity 53: bridge 11-0060 (1 pad, 1 link, 0 routes)\n             type V4L2 subdev subtype Sensor flags 0\n             device node name /dev/v4l-subdev7\n\tpad0: SOURCE\n\t\t[stream:0 fmt:SBGGR10_1X10/400x400\n\t\t crop.bounds:(0,0)/640x480\n\t\t crop:(0,0)/400x400]\n\t\t-> \"fpga-1\":1 [DYNAMIC]\n\n- entity 57: bridge_11-0060_flash (0 pad, 0 link, 0 routes)\n             type V4L2 subdev subtype Flash flags 0\n             device node name /dev/v4l-subdev8\n```\n\nThe camera that is actively connected to the system is camera 11-0036,\nand the formats have been correctly configured for that camera as\n400x400 SBGGR10, has propagated through as expected to mxc_isi.0.\n\nHowever, when I attempt to start the stream, I get EPIPE because\nmxc_isi.1 is configured to 1080p UYVY8, which doesn't match:\n\n```\n[   40.833904] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: width does not match (source 400, sink 1920)\n[   40.833944] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: height does not match (source 400, sink 1080)\n[   40.833950] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: media bus code does not match (source 0x00003007, sink 0x00002006)\n[   40.833955] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: link was \"crossbar\":4 -> \"mxc_isi.1\":0\n```\n\nMy question is: Should the link between crossbar:4 and mxc_isi.1 be\nenabled when it is not used? Perhaps I'm misunderstanding something\nhere.\n\nBest wishes,\n\nIsaac\n\n> ---\n> Changes in v2:\n> - Add missing documentation as suggested by Barnabás\n> - Move Entity parameters documentation from .h to .cpp file.\n> - Replace 'video' by 'last' node in source descriptions, because  in\n> imx8-isi pipeline case, the last MediaPipeline entity (i.e. crossbar) is\n> not a video node.\n> - Apply review comments from Jacopo: move Entity definition to beginning\n> of public section; move entities() to const-callable as well.\n> - link to v1: https://patchwork.libcamera.org/patch/25010/\n> \n> ---\n> Andrei Gansari (2):\n>   libamera: media_pipeline: Add accessor for MediaPipeline list of\n>     entities\n>   pipeline: imx8-isi: Integrating MediaPipeline class\n> \n>  include/libcamera/internal/media_pipeline.h  |  29 +---\n>  src/libcamera/media_pipeline.cpp             |  44 +++++\n>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 159 ++++++++++++-------\n>  3 files changed, 149 insertions(+), 83 deletions(-)\n> \n> -- \n> 2.34.1\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 07230BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 18 Nov 2025 11:15:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0996160A80;\n\tTue, 18 Nov 2025 12:14:59 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 08E36606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Nov 2025 12:14:56 +0100 (CET)","from thinkpad.ideasonboard.com\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 DD774BE4;\n\tTue, 18 Nov 2025 12:12:52 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"wDHPHQLR\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1763464373;\n\tbh=IqUniYG+CPM5bUz0utMwxrAHIapCbqCD0g/KRl8D8JM=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=wDHPHQLRGS3nlokc3qUxKsAfBi7HD4BUoHpzOxNWS9hxxbbBCLJhPtLo8eR9sfCzR\n\tCSrxSva1OPFOSQZ8aSsY1pov91iIWPWBQx2cZldnu+A2xHAtWZAtnvkNkl6s/9WBX3\n\tEaM+fBjtiF+dKhiGER+BBnYuwdDG1RBi4ZuPU0kY=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20251114154341.654850-1-antoine.bouyer@nxp.com>","References":"<20251114154341.654850-1-antoine.bouyer@nxp.com>","Subject":"Re: [PATCH v2 0/2]  imx8-isi: Use MediaPipeline","From":"Isaac Scott <isaac.scott@ideasonboard.com>","Cc":"julien.vuillaumier@nxp.com, jacopo.mondi@ideasonboard.com,\n\tbarnabas.pocze@ideasonboard.com, Antoine Bouyer <antoine.bouyer@nxp.com>","To":"Antoine Bouyer <antoine.bouyer@nxp.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 18 Nov 2025 11:14:54 +0000","Message-ID":"<176346449407.869409.12811063740006621855@isaac-ThinkPad-T16-Gen-2>","User-Agent":"alot/0.10","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>"}},{"id":36916,"web_url":"https://patchwork.libcamera.org/comment/36916/","msgid":"<24d46594-2116-4bcf-b1ea-7905a79f1bae@nxp.com>","date":"2025-11-19T10:37:34","subject":"Re: Re: [PATCH v2 0/2] imx8-isi: Use MediaPipeline","submitter":{"id":218,"url":"https://patchwork.libcamera.org/api/people/218/","name":"Antoine Bouyer","email":"antoine.bouyer@nxp.com"},"content":"Hi Isaac\n\nThanks for your feedback\n\nOn 11/18/25 12:14 PM, Isaac Scott wrote:\n> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button\n> \n> \n> Hi Antoine,\n> \n> Thank you for the patches!\n> \n> Quoting Antoine Bouyer (2025-11-14 15:43:39)\n>> Submit this imx8-isi rework on behalf of Andrei. This series is about\n>> using libcamera MediaPipeline class to simplify imx8-isi pipeline\n>> configuration.\n>>\n>> Instead of going over each pipeline subdevices during imx8-isi match(),\n>> all is handled by MediaPipeline class. It helps supporting complex\n>> topologies, where subdevice(s) could be optional, typically on i.MX95\n>> SoC which has a formatter, while other i.MX SoCs don't have it.\n>>\n>> It reuses the simple pipeline's locateSensors method, so external ISP are\n>> also supported then. ISP is considered as the 'sensor' element.\n>>\n>> Tested on i.MX8MP SoC.\n>>\n> \n> I'm trying to test this patch series by re-routing my pipeline through\n> the ISI instead of the ISP, and I'm having some issues with getting it\n> to work.\n> \n> My media graph is as below:\n> \n> ```\n> - entity 1: crossbar (5 pads, 4 links, 2 routes)\n>              type V4L2 subdev subtype Unknown flags 0\n>              device node name /dev/v4l-subdev0\n>          routes:\n>                  0/0 -> 3/0 [ACTIVE]\n>                  0/0 -> 4/0 [ACTIVE]\n>          pad0: SINK,MUST_CONNECT\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  <- \"csis-32e40000.csi\":1 [ENABLED,IMMUTABLE]\n>          pad1: SINK,MUST_CONNECT\n>          pad2: SINK,MUST_CONNECT\n>                  <- \"mxc_isi.output\":0 [ENABLED,IMMUTABLE]\n>          pad3: SOURCE\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  -> \"mxc_isi.0\":0 [ENABLED,IMMUTABLE]\n>          pad4: SOURCE\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  -> \"mxc_isi.1\":0 [ENABLED,IMMUTABLE]\n> \n> - entity 7: mxc_isi.0 (2 pads, 2 links, 0 routes)\n>              type V4L2 subdev subtype Unknown flags 0\n>              device node name /dev/v4l-subdev1\n>          pad0: SINK\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw\n>                   compose.bounds:(0,0)/400x400\n>                   compose:(0,0)/400x400]\n>                  <- \"crossbar\":3 [ENABLED,IMMUTABLE]\n>          pad1: SOURCE\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none\n>                   crop.bounds:(0,0)/400x400\n>                   crop:(0,0)/400x400]\n>                  -> \"mxc_isi.0.capture\":0 [ENABLED,IMMUTABLE]\n> \n> - entity 10: mxc_isi.0.capture (1 pad, 1 link)\n>               type Node subtype V4L flags 0\n>               device node name /dev/video1\n>          pad0: SINK\n>                  <- \"mxc_isi.0\":1 [ENABLED,IMMUTABLE]\n> \n> - entity 18: mxc_isi.1 (2 pads, 2 links, 0 routes)\n>               type V4L2 subdev subtype Unknown flags 0\n>               device node name /dev/v4l-subdev2\n>          pad0: SINK\n>                  [stream:0 fmt:UYVY8_2X8/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range\n>                   compose.bounds:(0,0)/1920x1080\n>                   compose:(0,0)/1920x1080]\n>                  <- \"crossbar\":4 [ENABLED,IMMUTABLE]\n>          pad1: SOURCE\n>                  [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range\n>                   crop.bounds:(0,0)/1920x1080\n>                   crop:(0,0)/1920x1080]\n>                  -> \"mxc_isi.1.capture\":0 [ENABLED,IMMUTABLE]\n> \n> - entity 21: mxc_isi.1.capture (1 pad, 1 link)\n>               type Node subtype V4L flags 0\n>               device node name /dev/video2\n>          pad0: SINK\n>                  <- \"mxc_isi.1\":1 [ENABLED,IMMUTABLE]\n> \n> - entity 29: mxc_isi.output (1 pad, 1 link)\n>               type Node subtype V4L flags 0\n>          pad0: SOURCE\n>                  -> \"crossbar\":2 [ENABLED,IMMUTABLE]\n> \n> - entity 36: csis-32e40000.csi (2 pads, 2 links, 0 routes)\n>               type V4L2 subdev subtype Unknown flags 0\n>               device node name /dev/v4l-subdev3\n>          pad0: SINK,MUST_CONNECT\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  <- \"fpga-1\":2 [ENABLED]\n>          pad1: SOURCE,MUST_CONNECT\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  -> \"crossbar\":0 [ENABLED,IMMUTABLE]\n> \n> - entity 41: fpga-1 (3 pads, 3 links, 0 routes)\n>               type V4L2 subdev subtype Unknown flags 0\n>               device node name /dev/v4l-subdev4\n>          pad0: SINK\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  <- \"camera 11-0036\":0 [ENABLED,DYNAMIC]\n>          pad1: SINK\n>                  [stream:0 fmt:Y8_1X8/1x1 field:none]\n>                  <- \"bridge 11-0060\":0 [DYNAMIC]\n>          pad2: SOURCE\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw]\n>                  -> \"csis-32e40000.csi\":0 [ENABLED]\n> \n> - entity 47: camera 11-0036 (1 pad, 1 link, 0 routes)\n>               type V4L2 subdev subtype Sensor flags 0\n>               device node name /dev/v4l-subdev5\n>          pad0: SOURCE\n>                  [stream:0 fmt:SBGGR10_1X10/400x400 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range\n>                   crop.bounds:(8,8)/400x400\n>                   crop:(8,8)/400x400]\n>                  -> \"fpga-1\":0 [ENABLED,DYNAMIC]\n> \n> - entity 51: camera_torch_1 (0 pad, 0 link, 0 routes)\n>               type V4L2 subdev subtype Flash flags 0\n>               device node name /dev/v4l-subdev6\n> \n> - entity 53: bridge 11-0060 (1 pad, 1 link, 0 routes)\n>               type V4L2 subdev subtype Sensor flags 0\n>               device node name /dev/v4l-subdev7\n>          pad0: SOURCE\n>                  [stream:0 fmt:SBGGR10_1X10/400x400\n>                   crop.bounds:(0,0)/640x480\n>                   crop:(0,0)/400x400]\n>                  -> \"fpga-1\":1 [DYNAMIC]\n> \n> - entity 57: bridge_11-0060_flash (0 pad, 0 link, 0 routes)\n>               type V4L2 subdev subtype Flash flags 0\n>               device node name /dev/v4l-subdev8\n> ```\n> \n> The camera that is actively connected to the system is camera 11-0036,\n> and the formats have been correctly configured for that camera as\n> 400x400 SBGGR10, has propagated through as expected to mxc_isi.0.\n> \n> However, when I attempt to start the stream, I get EPIPE because\n> mxc_isi.1 is configured to 1080p UYVY8, which doesn't match:\n\nIndeed this is odd.\n\n> \n> ```\n> [   40.833904] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: width does not match (source 400, sink 1920)\n> [   40.833944] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: height does not match (source 400, sink 1080)\n> [   40.833950] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: media bus code does not match (source 0x00003007, sink 0x00002006)\n> [   40.833955] mxc-isi 32e00000.isi: v4l2_subdev_link_validate_default: link was \"crossbar\":4 -> \"mxc_isi.1\":0\n> ```\n> \n> My question is: Should the link between crossbar:4 and mxc_isi.1 be\n> enabled when it is not used? Perhaps I'm misunderstanding something\n> here.\n\nThe link is immutable, so we cannot disable it, but format should be \naligned indeed.\n\nCould you share your test command/sequence please ? So I can try to \nreproduce on my side too.\nDid the same sequence pass before this patch series on your side ?\n\nHere is an example of test command for multiple stream case:\n\n$ export LIBCAMERA_PIPELINES_MATCH_LIST='imx8-isi'\n$ cam -c1 -s width=400,height=400,pixelformat=NV12 -C5 \n--file=/tmp/frame-#.nv12 -s width=1280,height=1024,pixelformat=NV12 -C5 \n--file=/tmp/frame-#.nv12\n\nBest regards\nAntoine\n\n> \n> Best wishes,\n> \n> Isaac\n> \n>> ---\n>> Changes in v2:\n>> - Add missing documentation as suggested by Barnabás\n>> - Move Entity parameters documentation from .h to .cpp file.\n>> - Replace 'video' by 'last' node in source descriptions, because  in\n>> imx8-isi pipeline case, the last MediaPipeline entity (i.e. crossbar) is\n>> not a video node.\n>> - Apply review comments from Jacopo: move Entity definition to beginning\n>> of public section; move entities() to const-callable as well.\n>> - link to v1: https://patchwork.libcamera.org/patch/25010/\n>>\n>> ---\n>> Andrei Gansari (2):\n>>    libamera: media_pipeline: Add accessor for MediaPipeline list of\n>>      entities\n>>    pipeline: imx8-isi: Integrating MediaPipeline class\n>>\n>>   include/libcamera/internal/media_pipeline.h  |  29 +---\n>>   src/libcamera/media_pipeline.cpp             |  44 +++++\n>>   src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 159 ++++++++++++-------\n>>   3 files changed, 149 insertions(+), 83 deletions(-)\n>>\n>> --\n>> 2.34.1\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 F36BEC0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Nov 2025 10:37:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 43E1060805;\n\tWed, 19 Nov 2025 11:37:41 +0100 (CET)","from DU2PR03CU002.outbound.protection.outlook.com\n\t(mail-northeuropeazlp170110003.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c200::3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AF19E60805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Nov 2025 11:37:38 +0100 (CET)","from GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8)\n\tby VI0PR04MB12055.eurprd04.prod.outlook.com (2603:10a6:800:325::11)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10;\n\tWed, 19 Nov 2025 10:37:36 +0000","from GVXPR04MB9831.eurprd04.prod.outlook.com\n\t([fe80::4634:3d9c:c4a:641a]) by\n\tGVXPR04MB9831.eurprd04.prod.outlook.com\n\t([fe80::4634:3d9c:c4a:641a%6]) with mapi id 15.20.9343.009;\n\tWed, 19 Nov 2025 10:37:36 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"mSGmKrr+\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=F0bxDi7Dfwo+hrToHIuilFCJ7zNq14p0qtHyc1uprETBzjk6+//9MDKY+JT+uQSU9BeCH1wRCNVBYGOuLV/RSVKH3mRnYh9gVaHoFy+w58utD7kdWTlh1dJjTq93vN/Kq4cAH8zk6Xhc7S+vXfmF+q4iL0W2jFul+UsiS75ULD1pBd8c2gLPhpyegUb/dlSjqGsu766A2FElasGvO/ory+QRCnX9wpCG0cclkL+8cftS56wK0dnGWeespoCAcZfIADD/TNSNRxsIM2aU2W5gxCZXFb2H8T5N4/JKLQGVzxRRA3Ctapg4H98QY5cJok6aMflbGi3VTdzcVDT2pEJJLQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=fwSYS7RvDatU+xxRelpPBCmMq4cNnlck4nEIU2U8/qk=;\n\tb=AAhyCR8yXmqyU2SNd82/axhxMaS4VJdrH/p/XYRW81A8RWSN15me2c61Ngt6SfVbJJyj0hv/se27e/rWxw9zygzQa7PGopB/BnxAzddHq67eJP8mDVUBAKhf5NnPhkwVcSMbGYAlZPoT2uKUMR17HsBphXKApIToZuZjdFnZuiUoYwuPa4wmTPeJ6fUBpS4NPmR9sfSIK5dCzL9g5cSUUcP5Fv5WfxbVIdOtFIMAELDagtW2z9XckzEfkclupDJWWVte2gv8/LhuWoIhPwUktp9ii1yW9H5jeCIhebtVSY7ETYiv44VzqblcX5qQNGkEY/N/9e0IMWFrG4mrXFjysg==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=fwSYS7RvDatU+xxRelpPBCmMq4cNnlck4nEIU2U8/qk=;\n\tb=mSGmKrr+OaJghGd6TAhRtT13LRHaCAN0J/gNy2yAvKfgbN3UGEDIXhC5BPQUKP8O5XXXATJvPv/uA312+Wiz3pz+bJN1+Uv+5oaAaNEfHZjT/NSeBXUWA0jWxav5S3/yu7ADHITp/qrQF/UHCLhgPDmcuXXKSWf2gGvbpH+wafYdumrvOBAOxK4TB+J+5ejuluRvzZmH9ON/l3MXq9O312bLbuOcf/mMxypdmmUOrfKKRb/3WTrbevgeZjBTE+Xyy7tftRf6aft5CT0lavxIEzDVbXKB2EfDsHQ2sfkgVy3MTy063v6z7srbCRWGBjkroOYHJQwW8kUl2+HgKQ+mXg==","Message-ID":"<24d46594-2116-4bcf-b1ea-7905a79f1bae@nxp.com>","Date":"Wed, 19 Nov 2025 11:37:34 +0100","User-Agent":"Mozilla Thunderbird","Subject":"Re: Re: [PATCH v2 0/2] imx8-isi: Use MediaPipeline","To":"Isaac Scott <isaac.scott@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"julien.vuillaumier@nxp.com, jacopo.mondi@ideasonboard.com,\n\tbarnabas.pocze@ideasonboard.com","References":"<20251114154341.654850-1-antoine.bouyer@nxp.com>\n\t<176346449407.869409.12811063740006621855@isaac-ThinkPad-T16-Gen-2>","Content-Language":"en-US","From":"Antoine Bouyer <antoine.bouyer@nxp.com>","In-Reply-To":"<176346449407.869409.12811063740006621855@isaac-ThinkPad-T16-Gen-2>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-ClientProxiedBy":"AS4P189CA0061.EURP189.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:659::10) To GVXPR04MB9831.eurprd04.prod.outlook.com\n\t(2603:10a6:150:11c::8)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"GVXPR04MB9831:EE_|VI0PR04MB12055:EE_","X-MS-Office365-Filtering-Correlation-Id":"c1a78665-1f5f-4f17-6e5a-08de2757a794","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|19092799006|376014|366016|1800799024; ","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?vxIX0as1UG/HKfZEMehUIWOZiH+I?=\n\t=?utf-8?q?dWETnbb47aTBb7oHbJxBCkgmkH9WncT56oizoApuzMfdgEHkCl4hHlr8?=\n\t=?utf-8?q?Ljc0rB60z1eOrE3qS4Jif3g1/PVnkMDc+zHIOdGk+07wrux0GiiZN1YB?=\n\t=?utf-8?q?9HAbGJop4mIW2ammxtDnTDxDvHyCK1hNlaTDrMWNHwr31hcu+CMu7o/B?=\n\t=?utf-8?q?LladgBfGM0Ufzji1F1HwcTEEeEFkAxCRpqhE5EVh13k/l4ShfKxzKN91?=\n\t=?utf-8?q?RWiVP8YX187EQdojJhvhXOH3TXwEWx1Z2fHcjM7oE7pGyq8/fPaEFuWN?=\n\t=?utf-8?q?EfH+9ozYCJwHPOgl/LwcwE2MSsk7YKUNBsh7W9h0CGzP9IXtiHmfgvKt?=\n\t=?utf-8?q?0hpKGDrkAOuinyEXb5t1Q4X1i9qriPzhv6n2YE4yjSLNtN+aS2BSj69c?=\n\t=?utf-8?q?H7PvEE4X7P8PfDLEK9EDkoXozdW7+zNxr0K2SG8uaxDLeD3uFZ28WuyA?=\n\t=?utf-8?q?+ziNyR6yZTpnl5X8uamFinZolf0sAkmZYI578shrzjmjyi9pXccy63pv?=\n\t=?utf-8?q?nj7EbhIxOSDtYqwd2b2wvf03u2jpuHKdWTBDWC1V1uL89svQbsfmmh+/?=\n\t=?utf-8?q?YJ8IOqnyE+AcAl9XYPC0fWs5yQngMq78eD9Hz7FX2AWx5eyEzZUU9gmE?=\n\t=?utf-8?q?2nO9jSzr2e+D/HrBjt4k6f6uCwHnnoV9rx3Ops/MNhr4gbQbmIltv+Sg?=\n\t=?utf-8?q?wHrOJFQcL3TXiSGSO2g+DeX9TfLgePPcb/7UI1ioMHD9I9fZkYUU0HUa?=\n\t=?utf-8?q?W5O9GgC1YX1nJn+v40Ku4YQps7LsfZuNUwDaEr2CiEnmPHRFIvwykz5+?=\n\t=?utf-8?q?XBdKS6ELOgQN4Q/hS2Xhdpmq/T9LtdWCQ+ZOoCdFH/Y6drxESQTmYqh0?=\n\t=?utf-8?q?EhMJIz5otoXMxAETeIxXQ/s6N1QTjGtJk2U5YEIfmTp11uBXiBP6cs0N?=\n\t=?utf-8?q?zEBIiIrR74GYfauRE0WQ+f7gNwDsW1CgDf2zEHMGRW4D7EwtwINCQtNO?=\n\t=?utf-8?q?tUSEH0Urg+4EitRZrtUVMq+ya2OClkq0z6ZFTvLk6BLSMU9n24vyh2gq?=\n\t=?utf-8?q?dn9rvCHvzaS86H7qSXDQQu7cuVdc7qqdsqQXenpkkxsPf6BgQu8xRLgk?=\n\t=?utf-8?q?B4e1qM8B8NGEYQNSCtJollxI8GBrheD2Add+GMj/hxKVcpDI1bzteLYv?=\n\t=?utf-8?q?cVbfI0xX/asM+i383wU2BpIcob15I2z9g/WV/3V53h24jPTG69mdmFZ6?=\n\t=?utf-8?q?ZczKNg2cFSSyFTa7ukN0nXSWin3NApssLhHBPEuHIZhW2FG4dYDMfEx+?=\n\t=?utf-8?q?E7S5uVRJpLWzQ+Uyxyrr0LlfHw64pKiEydxqyLntXkuKgmDKGYxkeZYG?=\n\t=?utf-8?q?o+MYRK9YXtIXkqUvHHasiUlH9Od8FmtXVA8axkiIXmo1Q9KwT9Crr5F7?=\n\t=?utf-8?q?mTs0q7NRy9rB9ijwlLeWNmoU99CyMiXaOTWPXAvM0E70Oso29045usqW?=\n\t=?utf-8?q?Mg=3D=3D?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:GVXPR04MB9831.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(19092799006)(376014)(366016)(1800799024); DIR:OUT;\n\tSFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?/0KRLg4gsNx5Ec+U+rVcGkcx3?=\n\t=?utf-8?q?M4MaDbU7jpYYmUXJpo0d/iuAuspivL1Os2MhOVy8izVMwsSJ2beUzia+?=\n\t=?utf-8?q?UqrcBhVcGuV/NH9GzzOeHoqSCImW5qTg9fHRBefj7i0H/+MIcuAklRsl?=\n\t=?utf-8?q?Y6BcTLCy70mlg3rK957d3aJjuP8MT/HAJfiARgvIRj4NkCfBrWi7ZJiu?=\n\t=?utf-8?q?ZV9kANSiMjCkuoxXUCSjpvUrsDwPlHLT+kOmqf5zg/BdS7vZO+rdnOwn?=\n\t=?utf-8?q?7/Ot63xk0Fqa9+to7Z5iH2jsExVjDjmSpd3Yw7bKgXG4xN02+JkiPCdM?=\n\t=?utf-8?q?tWOaxFPvssZVCidRHryLe7RoNG4hP98UUd9mXnazx5KXZ1EaKjxG2GES?=\n\t=?utf-8?q?bE9XA6CBdGKJMSZgABEJdNZd2A4KR0X+kW6WSwh4MgnyyGGpvrAmws29?=\n\t=?utf-8?q?5Z/0AYDczKcx9RXZWjIuNXhKuzyerKEu3JWj9+c5/GN38VW5750rXf8a?=\n\t=?utf-8?q?o0KR+ON1TsQ1qq0mnblPATCqmY0osVT6s6bGM9OHHhT3CzpX9WybZFxa?=\n\t=?utf-8?q?Muy3vhCceIITXrKn42hwcBtqIpZLVmtOmKsyNCqynQx/lPlQmRdCFTC1?=\n\t=?utf-8?q?LURNpETAiRAKXfDPJok+XI3RFzAbF8XsH+VPhY3AIzzUwib8lU05m2Sp?=\n\t=?utf-8?q?SvPFrj9UCR+q0vVxgrWd8OqHQsVrM0gJmgu9o84PsAQQhLA5dLDD6Etr?=\n\t=?utf-8?q?7nJbkhqu8KkZw104z4aWc3/bODZCGRTKzWXVt77SadVefcAx46Rq4Sub?=\n\t=?utf-8?q?ORmJDRNDkaK5lhxtcW9wLgVavDIh3to2KeMapUbGsJo8I9fxTvETgG2k?=\n\t=?utf-8?q?mC5fGjPUAbx0bEh3egHaA8y19SiiF6MbDwoIxHR+kqu1tmd9V3MUoPIk?=\n\t=?utf-8?q?4xG/5AYRzoxNcZIxnNqq1nwSIviX2JeJZcRNZ755+IyRgE4qlSMguZoX?=\n\t=?utf-8?q?k4snea7X8A+T+D3KMIRwXv3bFz+hUDtf8GoAxdGk7raTdn5VndffyT06?=\n\t=?utf-8?q?ZOuV4iX1may+XnB86YcLYArO9z67a5JR1ezB8y9e1vxeQQH3wknUOXE2?=\n\t=?utf-8?q?LDAJcZyv9n773rTNXmHrFL6Ub+xJ+K4QN4Swp1pLJVLQCmoFhuLK6x5V?=\n\t=?utf-8?q?0fIsS/Xjoc5XySkUs+T/K8UWNrrk+DpH1nzTXClCo44A7Alz+6IXmOei?=\n\t=?utf-8?q?/t298nGve5zgNJI/mWo5FpoiY/1/1xfdNXyqJzW+cJRN0na9HAVWYdJj?=\n\t=?utf-8?q?l/sVnxeFDVddA3PMAXPGWyN0QuIXeJ18I3dPaBQv/7vJrTpGXGs3TesD?=\n\t=?utf-8?q?o4O/91KkJiPfcfaiaXUyPzpd+Wj+5VZEHiB4d6xUavcEcZW0OZ/qAw9K?=\n\t=?utf-8?q?MntTGiw2UBEm3zLW0ZKZNgjqKJ0O9B5uz1iqRiOcRwm/fHq06SocC5Br?=\n\t=?utf-8?q?o+MpSDHfYFDP3Z/pEmrhVL9XSD2IaS3/j8WVgCxYs5t/25pbjh7uRMvc?=\n\t=?utf-8?q?AKNT2cr/98dnUzNo9PGN5iDQAhbFNCUXy1jliWr01f1QCczGfLDdTQE8?=\n\t=?utf-8?q?YdUbtCC9hdKdupTw0MExx/5DJARgw4DYOQKaUiYJzvPGVU0qjjYuJaTS?=\n\t=?utf-8?q?B7RGxgNvpLRnvj6FOyiQ/E45ifZ+k1pl4KzO1DsU43V/Hwr9dHdi3cur?=\n\t=?utf-8?q?tHAYsNP9wKi6UKKHoy+a/miRXknBw=3D=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"c1a78665-1f5f-4f17-6e5a-08de2757a794","X-MS-Exchange-CrossTenant-AuthSource":"GVXPR04MB9831.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"19 Nov 2025 10:37:36.1859\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"2jzIYbz6//I/osyotax9pEdlQF/nHBrzj3JphtjQfi/WJ3DM4IGSRNoIpK9Vya6qtPqQYAg1kKEh2Yo42z6yJw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"VI0PR04MB12055","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>"}}]