[{"id":37908,"web_url":"https://patchwork.libcamera.org/comment/37908/","msgid":"<3003abcc-59ab-4d5f-ad19-c8cf706f78bb@ideasonboard.com>","date":"2026-01-23T13:27:38","subject":"Re: [PATCH v2 1/1] libcamera: camera_sensor: Fix imageStream() for\n\tCameraSensorLegacy class","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n\n2026. 01. 23. 13:59 keltezéssel, Julien Vuillaumier írta:\n> The CameraSensor::imageStream() function has a default implementation\n> in the base class that returns {0, 0} as {pad, stream}, assuming that\n> the image pad is located on the pad index 0.\n> This assumption is correct most of the time, but not in some other\n> cases, for instance when an external ISP entity acts as the sensor.\n> Such entity would typically have sink pad(s) connected to the actual\n> sensor and source pad(s) connected to the downstream graph. Associated\n> pad indexes would likely be different from zero.\n> \n> CameraSensorLegacy subclass correctly handles this case in its\n> functions, using the pad_ variable discovered at init() time to access\n> the source pad index, instead of using a hardcoded zero value.\n> Exception is imageStream() that is not overriden in the\n> CameraSensorLegacy definition so keeps the default implementation of\n> the parent class, hardcoding the returned source pad index to zero.\n> \n> This change declares CameraSensor::imageStream() as a pure virtual to\n> let the subclasses provide an implementation. Implementation for\n> CameraSensorLegacy is added, based on pad_ variable usage.\n> \n> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n> ---\n\nAs far as I can see, this looks ok. It may be worth to add\n\n   Fixes: 3feb4df755d5 (\"libcamera: camera_sensor: Add support for embedded data\")\n\nAlso, I'm wondering if you could maybe attach (part of) the output of\n`media-ctl -p` so that the situation is clear (even just as a reply here).\n\n\nRegards,\nBarnabás Pőcze\n\n>   include/libcamera/internal/camera_sensor.h    | 2 +-\n>   src/libcamera/sensor/camera_sensor.cpp        | 5 +----\n>   src/libcamera/sensor/camera_sensor_legacy.cpp | 6 ++++++\n>   3 files changed, 8 insertions(+), 5 deletions(-)\n> \n> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> index e6b72d22a..58e7df4a4 100644\n> --- a/include/libcamera/internal/camera_sensor.h\n> +++ b/include/libcamera/internal/camera_sensor.h\n> @@ -64,7 +64,7 @@ public:\n>   \t\t\t\t       Transform transform = Transform::Identity,\n>   \t\t\t\t       V4L2SubdeviceFormat *sensorFormat = nullptr) = 0;\n>   \n> -\tvirtual V4L2Subdevice::Stream imageStream() const;\n> +\tvirtual V4L2Subdevice::Stream imageStream() const = 0;\n>   \tvirtual std::optional<V4L2Subdevice::Stream> embeddedDataStream() const;\n>   \tvirtual V4L2SubdeviceFormat embeddedDataFormat() const;\n>   \tvirtual int setEmbeddedDataEnabled(bool enable);\n> diff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/sensor/camera_sensor.cpp\n> index 05390d1e1..58affd8f5 100644\n> --- a/src/libcamera/sensor/camera_sensor.cpp\n> +++ b/src/libcamera/sensor/camera_sensor.cpp\n> @@ -200,6 +200,7 @@ CameraSensor::~CameraSensor() = default;\n>    */\n>   \n>   /**\n> + * \\fn CameraSensor::imageStream()\n>    * \\brief Retrieve the image source stream\n>    *\n>    * Sensors that produce multiple streams do not guarantee that the image stream\n> @@ -209,10 +210,6 @@ CameraSensor::~CameraSensor() = default;\n>    *\n>    * \\return The image source stream\n>    */\n> -V4L2Subdevice::Stream CameraSensor::imageStream() const\n> -{\n> -\treturn { 0, 0 };\n> -}\n>   \n>   /**\n>    * \\brief Retrieve the embedded data source stream\n> diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp\n> index 39c34200b..d2583a615 100644\n> --- a/src/libcamera/sensor/camera_sensor_legacy.cpp\n> +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp\n> @@ -84,6 +84,7 @@ public:\n>   \t\t\t       Transform transform = Transform::Identity,\n>   \t\t\t       V4L2SubdeviceFormat *sensorFormat = nullptr) override;\n>   \n> +\tV4L2Subdevice::Stream imageStream() const override;\n>   \tconst ControlList &properties() const override { return properties_; }\n>   \tint sensorInfo(IPACameraSensorInfo *info) const override;\n>   \tTransform computeTransform(Orientation *orientation) const override;\n> @@ -856,6 +857,11 @@ int CameraSensorLegacy::applyConfiguration(const SensorConfiguration &config,\n>   \treturn 0;\n>   }\n>   \n> +V4L2Subdevice::Stream CameraSensorLegacy::imageStream() const\n> +{\n> +\treturn { pad_, 0 };\n> +}\n> +\n>   int CameraSensorLegacy::sensorInfo(IPACameraSensorInfo *info) const\n>   {\n>   \tif (!bayerFormat_)","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 5C4F1BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 23 Jan 2026 13:27:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6CA5F61FC4;\n\tFri, 23 Jan 2026 14:27:42 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 81A54615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 23 Jan 2026 14:27:41 +0100 (CET)","from [192.168.33.29] (185.221.142.123.nat.pool.zt.hu\n\t[185.221.142.123])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0F4449CE;\n\tFri, 23 Jan 2026 14:27:08 +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=\"KsTb6VB8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769174828;\n\tbh=2KZqney+RuCHphWttfq15ggLpqWbMqTucxs+d2cYRDw=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=KsTb6VB8NLZoLW22kemZntCnxHq061jUxJZsqpxsUh1ICshVXapQ+cH9WpEGv7A1H\n\tXPwN6amw7K0F86NhpE6xV1ni+2ruBkGUhdz2EQuafCiS8ivZDq0unoALi6C8keyJQm\n\tNmQcYbeHTfdGA4QwGdAZEUM3zpeifxPTq25FE2tg=","Message-ID":"<3003abcc-59ab-4d5f-ad19-c8cf706f78bb@ideasonboard.com>","Date":"Fri, 23 Jan 2026 14:27:38 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 1/1] libcamera: camera_sensor: Fix imageStream() for\n\tCameraSensorLegacy class","To":"Julien Vuillaumier <julien.vuillaumier@nxp.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260123125903.2469016-1-julien.vuillaumier@nxp.com>\n\t<20260123125903.2469016-2-julien.vuillaumier@nxp.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260123125903.2469016-2-julien.vuillaumier@nxp.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>"}},{"id":37924,"web_url":"https://patchwork.libcamera.org/comment/37924/","msgid":"<c0177f40-a3a6-486a-8b9d-e00d53b961eb@nxp.com>","date":"2026-01-23T18:34:02","subject":"[PATCH v2 1/1] libcamera: camera_sensor: Fix imageStream() for\n\tCameraSensorLegacy class","submitter":{"id":190,"url":"https://patchwork.libcamera.org/api/people/190/","name":"Julien Vuillaumier","email":"julien.vuillaumier@nxp.com"},"content":"Hi Barnabás,\n\nOn 23/01/2026 14:27, Barnabás Pőcze wrote:\n> 2026. 01. 23. 13:59 keltezéssel, Julien Vuillaumier írta:\n>> The CameraSensor::imageStream() function has a default implementation\n>> in the base class that returns {0, 0} as {pad, stream}, assuming that\n>> the image pad is located on the pad index 0.\n>> This assumption is correct most of the time, but not in some other\n>> cases, for instance when an external ISP entity acts as the sensor.\n>> Such entity would typically have sink pad(s) connected to the actual\n>> sensor and source pad(s) connected to the downstream graph. Associated\n>> pad indexes would likely be different from zero.\n>>\n>> CameraSensorLegacy subclass correctly handles this case in its\n>> functions, using the pad_ variable discovered at init() time to access\n>> the source pad index, instead of using a hardcoded zero value.\n>> Exception is imageStream() that is not overriden in the\n>> CameraSensorLegacy definition so keeps the default implementation of\n>> the parent class, hardcoding the returned source pad index to zero.\n>>\n>> This change declares CameraSensor::imageStream() as a pure virtual to\n>> let the subclasses provide an implementation. Implementation for\n>> CameraSensorLegacy is added, based on pad_ variable usage.\n>>\n>> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n>> ---\n> \n> As far as I can see, this looks ok. It may be worth to add\n> \n>    Fixes: 3feb4df755d5 (\"libcamera: camera_sensor: Add support for \n> embedded data\")\n\nI can add - is a new patch version desired to add the tag to the commit \nmessage?\n\n> Also, I'm wondering if you could maybe attach (part of) the output of\n> `media-ctl -p` so that the situation is clear (even just as a reply here).\n\nThe case is about the graph of subdevices:\nraw sensor -> external ISP -> MIPI CSI\n\nSome pipelines use the heuristic to consider the external ISP subdevice \nas the device to be controlled by the CameraSensor class [1].\nThat is supported by the CameraSensorLegacy subclass [2].\n\nHere is the `media-ctl -p` relevant extract for the graph\nOnsemi ar0144 sensor -> Onsemi ap1302 ISP -> NXP i.MX9 MIPI CSI\nIn that case, based on ap1302 ISP topology (2 sinks, 1 source), \nCameraSensor()::imageStream() shall report (pad, stream) = (2, 0) \ninstead of (0, 0).\n\n```\nmedia-ctl -p -d\n[...]\n- entity 115: csidev-4ad30000.csi (2 pads, 2 links, 1 route)\n               type V4L2 subdev subtype Unknown flags 0\n               device node name /dev/v4l-subdev18\n         routes:\n                 0/0 -> 1/0 [ACTIVE]\n         pad0: SINK\n                 [stream:0 fmt:UYVY8_1X16/1280x800 field:none \ncolorspace:rec709 xfer:srgb ycbcr:601 quantization:lim-range]\n                 <- \"ap1302 2-003c\":2 [ENABLED]\n         pad1: SOURCE\n                 [stream:0 fmt:UYVY8_1X16/1280x800 field:none \ncolorspace:rec709 xfer:srgb ycbcr:601 quantization:lim-range]\n                 -> \"4ac10000.syscon:formatter@20\":0 [ENABLED,IMMUTABLE]\n\n- entity 120: ap1302 2-003c (3 pads, 2 links, 0 routes)\n               type V4L2 subdev subtype Unknown flags 0\n               device node name /dev/v4l-subdev20\n         pad0: SINK\n                 [stream:0 fmt:SGRBG12_1X12/1280x800 field:none \ncolorspace:srgb\n                  crop.bounds:(0,0)/1280x800\n                  crop:(0,0)/1280x800]\n                 <- \"ar0144 0\":0 [ENABLED,IMMUTABLE]\n         pad1: SINK\n                 [stream:0 fmt:SGRBG12_1X12/1280x800 field:none \ncolorspace:srgb\n                  crop.bounds:(0,0)/1280x800\n                  crop:(0,0)/1280x800]\n         pad2: SOURCE\n                 [stream:0 fmt:UYVY8_1X16/1280x800 field:none \ncolorspace:srgb\n                  crop.bounds:(0,0)/1280x800\n                  crop:(0,0)/1280x800]\n                 -> \"csidev-4ad30000.csi\":0 [ENABLED]\n\n- entity 124: ar0144 0 (1 pad, 1 link, 0 routes)\n               type V4L2 subdev subtype Sensor flags 0\n               device node name /dev/v4l-subdev19\n         pad0: SOURCE\n                 [stream:0 fmt:SGRBG12_1X12/1280x800 field:none \ncolorspace:srgb]\n                 -> \"ap1302 2-003c\":0 [ENABLED,IMMUTABLE]\n\n```\n\n[1] \nhttps://git.libcamera.org/libcamera/libcamera.git/tree/src/libcamera/pipeline/simple/simple.cpp?h=v0.6.0#n1671\n[2] \nhttps://git.libcamera.org/libcamera/libcamera.git/tree/src/libcamera/sensor/camera_sensor_legacy.cpp?h=v0.6.0#n193\n\nThanks,\nJulien\n\n> \n> \n> Regards,\n> Barnabás Pőcze\n> \n>>   include/libcamera/internal/camera_sensor.h    | 2 +-\n>>   src/libcamera/sensor/camera_sensor.cpp        | 5 +----\n>>   src/libcamera/sensor/camera_sensor_legacy.cpp | 6 ++++++\n>>   3 files changed, 8 insertions(+), 5 deletions(-)\n>>\n>> diff --git a/include/libcamera/internal/camera_sensor.h b/include/ \n>> libcamera/internal/camera_sensor.h\n>> index e6b72d22a..58e7df4a4 100644\n>> --- a/include/libcamera/internal/camera_sensor.h\n>> +++ b/include/libcamera/internal/camera_sensor.h\n>> @@ -64,7 +64,7 @@ public:\n>>                                      Transform transform = \n>> Transform::Identity,\n>>                                      V4L2SubdeviceFormat *sensorFormat \n>> = nullptr) = 0;\n>>\n>> -     virtual V4L2Subdevice::Stream imageStream() const;\n>> +     virtual V4L2Subdevice::Stream imageStream() const = 0;\n>>       virtual std::optional<V4L2Subdevice::Stream> \n>> embeddedDataStream() const;\n>>       virtual V4L2SubdeviceFormat embeddedDataFormat() const;\n>>       virtual int setEmbeddedDataEnabled(bool enable);\n>> diff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/ \n>> sensor/camera_sensor.cpp\n>> index 05390d1e1..58affd8f5 100644\n>> --- a/src/libcamera/sensor/camera_sensor.cpp\n>> +++ b/src/libcamera/sensor/camera_sensor.cpp\n>> @@ -200,6 +200,7 @@ CameraSensor::~CameraSensor() = default;\n>>    */\n>>\n>>   /**\n>> + * \\fn CameraSensor::imageStream()\n>>    * \\brief Retrieve the image source stream\n>>    *\n>>    * Sensors that produce multiple streams do not guarantee that the \n>> image stream\n>> @@ -209,10 +210,6 @@ CameraSensor::~CameraSensor() = default;\n>>    *\n>>    * \\return The image source stream\n>>    */\n>> -V4L2Subdevice::Stream CameraSensor::imageStream() const\n>> -{\n>> -     return { 0, 0 };\n>> -}\n>>\n>>   /**\n>>    * \\brief Retrieve the embedded data source stream\n>> diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/ \n>> libcamera/sensor/camera_sensor_legacy.cpp\n>> index 39c34200b..d2583a615 100644\n>> --- a/src/libcamera/sensor/camera_sensor_legacy.cpp\n>> +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp\n>> @@ -84,6 +84,7 @@ public:\n>>                              Transform transform = Transform::Identity,\n>>                              V4L2SubdeviceFormat *sensorFormat = \n>> nullptr) override;\n>>\n>> +     V4L2Subdevice::Stream imageStream() const override;\n>>       const ControlList &properties() const override { return \n>> properties_; }\n>>       int sensorInfo(IPACameraSensorInfo *info) const override;\n>>       Transform computeTransform(Orientation *orientation) const \n>> override;\n>> @@ -856,6 +857,11 @@ int CameraSensorLegacy::applyConfiguration(const \n>> SensorConfiguration &config,\n>>       return 0;\n>>   }\n>>\n>> +V4L2Subdevice::Stream CameraSensorLegacy::imageStream() const\n>> +{\n>> +     return { pad_, 0 };\n>> +}\n>> +\n>>   int CameraSensorLegacy::sensorInfo(IPACameraSensorInfo *info) const\n>>   {\n>>       if (!bayerFormat_)\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 5C742C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 23 Jan 2026 18:34:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 50C1461FC4;\n\tFri, 23 Jan 2026 19:34:08 +0100 (CET)","from DB3PR0202CU003.outbound.protection.outlook.com\n\t(mail-northeuropeazlp170100001.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c200::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8F587615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 23 Jan 2026 19:34:06 +0100 (CET)","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby DB9PR04MB9646.eurprd04.prod.outlook.com (2603:10a6:10:30a::20)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11;\n\tFri, 23 Jan 2026 18:34:03 +0000","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::b387:72c6:e33c:8656]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::b387:72c6:e33c:8656%7]) with mapi id 15.20.9542.009;\n\tFri, 23 Jan 2026 18:34:03 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"n3F/hOLg\";\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=NhrRosAmDK3wnmB2ry7Cn3TraSZtzbijK08SyvuCKDEryIQfhXlG1ojoX2k3s8A/5ukHLiVo/p+QWWL/g/8wLUu6UG1gjoegLuwpl4+F7qhUVLZdiEqwWw6PZIIedtj+ZpeBnZjOOaRT4rX2bQ2RuhBUf6/MdD2f5FH51Up5YlOJs2/OJpO5jQQi4rM8JXwRruS65m9GYV3Bg1ffC4K0xKk/sM62hKphdZ36VS2Jdg/YBU+B1NJssXtjN0jbZbmyBDLRAZi8GV4c8En7jt8vYux1iroIwjxg6dfI3auDb6gbIV5PVsgdUoMRmh5vUkV4vGlzgbPvaUCvh/02UvayTw==","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=bxXuo43I7IFTg/F1S2cURfB/TcTjX7qIJcmjg1iV4Oc=;\n\tb=aiZvqxwCvR9wnnDyhJOUVQsETXjYO/X7flAUM4n+bliV3LDI6ScPoP4025i1RjKbrKLEzeSiDZfn3jVq3K15kCuY1vvbzKsEtstdV6W4/WcMAkWIXqpmpIsA0y0KtHJIjUTzjM91FALSHSjDVMQEGnDNenhHQhPNcX9QXYxXXfYWKpSIVoBmBw4FEkJ5G8veKeE7lCcxeBXru8PspVUL3mChFRseWbzu+kZo8ubtIdE4ONJ7OpQgjqU+cg+/kRWsjsIrpXPIBfW14uNSxYfKWDl6dxkopZlLLPx8UZtadbiZrmrvqaqop4lgcbk8hBlfPJRW1fBfzJW2hr5Gs3m7Bg==","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=bxXuo43I7IFTg/F1S2cURfB/TcTjX7qIJcmjg1iV4Oc=;\n\tb=n3F/hOLgh/lA2Aw4b9tA51aNi8SLgjSvjxivS8TcmA2/oeHkZixu24/fwARBO6v8jEutPmhhzzKL/ajPUDiyombAtdzqN2eXuJlktx989KM4t7CwSrVz+syLk0Io4CLNQbQ8WOGT0CxfFC+sWD133q2o+15WGiIK32TMhGJflfNUOX5iq2QB/KZUITyNZRjl0/rJiPokSDXDl28FjIhNv/doifxEHR+nnJQ3fk8sHEXttftaklCTBWsLR5EMysSsx+NIhDG2TKefd2T+FrWDprD8sN8I/FbmQzW+6WfzSNp75+57sttJAjEWGew0BJFgWc0EbC7ZBJg2CFwNKUD5Aw==","Message-ID":"<c0177f40-a3a6-486a-8b9d-e00d53b961eb@nxp.com>","Date":"Fri, 23 Jan 2026 19:34:02 +0100","User-Agent":"Mozilla Thunderbird","Subject":"[PATCH v2 1/1] libcamera: camera_sensor: Fix imageStream() for\n\tCameraSensorLegacy class","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260123125903.2469016-1-julien.vuillaumier@nxp.com>\n\t<20260123125903.2469016-2-julien.vuillaumier@nxp.com>\n\t<3003abcc-59ab-4d5f-ad19-c8cf706f78bb@ideasonboard.com>","Content-Language":"en-US","From":"Julien Vuillaumier <julien.vuillaumier@nxp.com>","In-Reply-To":"<3003abcc-59ab-4d5f-ad19-c8cf706f78bb@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-ClientProxiedBy":"AS4P251CA0023.EURP251.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:5d3::20) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AM9PR04MB8147:EE_|DB9PR04MB9646:EE_","X-MS-Office365-Filtering-Correlation-Id":"1d75042f-350d-4965-0c2f-08de5aadfbe0","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|19092799006|366016|376014|1800799024; ","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?rV9zR/iE0h+lXjtgob57ComkSak4?=\n\t=?utf-8?q?Uq/kazpL4R9USQJNB8tedmW7tXxKQOfMStAsZXCA9I9s0qu6Ug5Xq9zW?=\n\t=?utf-8?q?6AN66+Da79ZKQdhGLSl5D7fioZxEQ70FqRJhykEVgCgr1r2NLhMuXizK?=\n\t=?utf-8?q?7jKmg9Qc4d8YmywtAF9qkB3LniqFHBveh7coJB5NVfGEokaoHP5Iz/K3?=\n\t=?utf-8?q?/rCwTIOPICFMmyq4D79kngoWuJk1QTbn6U9gL9Z+Kj88idEdoj8SY+pj?=\n\t=?utf-8?q?89GsL7aPH5uADunSm3cObMRUOuaPh6fZV076wvHuMpTH5o7RUKnFnOjL?=\n\t=?utf-8?q?jrox6Uy6145fDwjYHZgFd9wcrGclxeAEEJVRco12e/Pwdr0q1XT4koGi?=\n\t=?utf-8?q?PnL7o4jDKScBZFjOD8a/E+FNp1BL/Yy1Z/5CQD3+cDauY2cPhwGIGuO+?=\n\t=?utf-8?q?uf950uvFQX/Kr8iasoP9diknn0DdCUCmNVIR/JjcAjuIKdXseGJqHYKz?=\n\t=?utf-8?q?TYIfud4YzllXfJJNW0r9A7smph+ti0hrXA0iQMMZkwgVlsyCMj/dKjXD?=\n\t=?utf-8?q?7GWNW4X5RZQ3SLDvf8lrYt980iIkiF6zwBYalvXNaQVpB8Vg7NsIu/0T?=\n\t=?utf-8?q?q0ccX9TIMsl/7ucfsSRmovLhSkPpLcz1V4JgpFI82NYCCU2lBK95ST6y?=\n\t=?utf-8?q?+MhSAobrmlCONrzOuOc4A6Vgi4pdyVzAyhWNoo0w5azmv4Bdui11QFa9?=\n\t=?utf-8?q?fj3NFyfJA/fT5eZKOEHi2yzxgc+FsM6ScVf+SgzJxpjkFGhE6NIjUyxw?=\n\t=?utf-8?q?Rc2+uhqIQp9YJ6kZmDHB0BOIlerKl8MMUamps5v3Je13ZrineBpOs7cK?=\n\t=?utf-8?q?9cXx/qc5Reu4F3UBKprnJoW+dXL5DPYCnGUyoWECsQEWe2GuZ2q2dd3j?=\n\t=?utf-8?q?8NK7tKhKJDb8gxeokLMUquWULzK5GVGp1y4PlAa3/PLcfhZs7h9pd0rn?=\n\t=?utf-8?q?rnpC9u/pjNlLrAsAISYzBqSbAo+OqDtrAhQF7YoW8dGAAbHSbC14iWHS?=\n\t=?utf-8?q?pkwltkOmPXsYtFPzWdfeyv/Cx/Hy7D3ahR6BuoOVBdR3W4wlRNVfEYwX?=\n\t=?utf-8?q?sW4f1U+sfzavYXwsVqcHE/c1GW3qspGFAgNRGw73LJgjeBTKD/0vOBdY?=\n\t=?utf-8?q?+Z79Q40WFaZ+jv9CkfUShgRExQrG3VvaJP6NHdGPwfI6dxede1KAl/7w?=\n\t=?utf-8?q?c9n56g6WCI35G5WwDqlri03/WYBbNXNbEGzVz9In6VxDe2Wx5CejXSEr?=\n\t=?utf-8?q?F4Um03DoQh1pzS4iY5D18MMDXl1OaxqhGI4QJIw8LrHEB3YlPdu333Z+?=\n\t=?utf-8?q?URhp0nPGjzCYS3ugpLXU58dv6/QLG3+9gX8dUiQZX63cLycxjmQSQ+LA?=\n\t=?utf-8?q?iXxgv+DQP7dgVKQWZ5aKrTZT1Pa1i5encrthveUt2B+6TnQImrGWFDVa?=\n\t=?utf-8?q?ec8AikJRSsjYT1GxsDLkOtRE5Hf7PyK0DLXDJ+qWtDB5pTo95zLUfufw?=\n\t=?utf-8?q?9bnHvQ6BSmK6L0/heb4XlJf2veZJQkVpoJ7EyZXM1n2ItxzM8ckHZie7?=\n\t=?utf-8?q?AqLoP+KPeKmDRdm1on1EOPxEycXtf1xmZFu0q1ItXLI4BUobdYva?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(19092799006)(366016)(376014)(1800799024); DIR:OUT;\n\tSFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?foYU5OBUah8IZCaxbrPNyXJLG?=\n\t=?utf-8?q?ghtADnU4MBIgDL67z+X23QFNXK8XWKSn2SNA8bMoB8gjvfz0rglNMWnT?=\n\t=?utf-8?q?7NVXgoUyryihSYATPChT7ck/R3tMybtYn2CM6Rwbj6qCRIMsXDqFiao1?=\n\t=?utf-8?q?OzUzRddl1H/iHtaRHFdXl7YGAHGPbVxYlZHwhSUlMPMaYNjJLRsMuIpC?=\n\t=?utf-8?q?izkv3C5ji76q4J7fMQzM6vHqKTwoAnAAWYtOGNy8xF2ILL8A1zU64dU2?=\n\t=?utf-8?q?NBlifA81FfMuNZQcdXklS/ZJtNaMY/xzRtZadBzSc1bLtDiD07joGdL1?=\n\t=?utf-8?q?cLCEjdW6C88t006jz1aN5h8I5BSLWNvrkO9Z4di0MgP8E36fyFMG500/?=\n\t=?utf-8?q?8RA39m66WK360qcZ2nwY14LAdXOG9BSlk8j/qeEh7+hMc/ohRb5gP01c?=\n\t=?utf-8?q?OGExOkrl+8Ww6qAFQnaVxjnMrpZdd0BhWDQT5T42TBiaMZJvaCD8YLkK?=\n\t=?utf-8?q?hCXXWqOTLDIN290tX7wRpeaJPaGeaZnWO8yo8G4A0Fb4NJAP/TVfckPM?=\n\t=?utf-8?q?Ovov7Y5LEiv1STc6kW6VNpjUpMfSEd1JHsdK/Te7C69rly5tPogTVDkm?=\n\t=?utf-8?q?01qbhey6VItWzBspFZDQE6iO0ATXjAEW2TPSXEPhK8rrA5TmWbw6nBFp?=\n\t=?utf-8?q?lyRbqEGJS5dq0bdDvaIsNLmPkuDZM65Dge1l69Ipc3BHgrvxI12DuPle?=\n\t=?utf-8?q?YRFiSNUp98dmYXSxdk7721aMHMv+xFxRo363zmDHaVxuo0YD0Dwg2p8h?=\n\t=?utf-8?q?hlMIxxg6X4Tvcf1626RveW8gKynpHdd3HPNDvqZBzk4guq6LG0BGevP6?=\n\t=?utf-8?q?cZWzJDvhEaMTYzoBfvaEVnOo3+PgUOpDiA/9/MHXBVC+NpemJtT6awQp?=\n\t=?utf-8?q?S5HUYQrVi8HZ3y/qBxC2IXA/UAlaF742mI/Dbz/irvjwW3ekA9qr5YX/?=\n\t=?utf-8?q?uiF4crgLxDAbjdSi5huif9V+UZJwKw89hFYlvLnhDYFXepcokL+nN0EL?=\n\t=?utf-8?q?izmRbtbi2fHwTQJK37jv49USiSp7IUkqUGfpRG9EldTMKcDuS62JnPC8?=\n\t=?utf-8?q?PYIIV1grBo89kH6NRNMlnL/+hQCi7WQ1tvIkql7R6lLlkP6ddsIulWnO?=\n\t=?utf-8?q?WjntuNRlBv84ADOPolgX4OPlunXGbm8pYEVmWUWflpRQ57LAsf5cB0bc?=\n\t=?utf-8?q?CgSTtcsQ7YRbfJbx/udurLSMhsEM4CzjrTGIrvbJpddH3ceUuaordTAa?=\n\t=?utf-8?q?L3zqEPYEajW4nB44S4lw9yX+RC2t+IFbFen12VMkfUCaCiRxDMEn/pug?=\n\t=?utf-8?q?pM6JZwpFlHJMJwCsTqbR8Sj9ATxYK6+5V49kaTZUBDJA7GSGDVd4XzPP?=\n\t=?utf-8?q?sncnbcJmcUyifEceTTDiazGIfifRmuz/kiC1TdreDVj01iHow6G2cNt3?=\n\t=?utf-8?q?Nk/jQ+k8e9fT3f/kAwd5kuW57srn37HPwo5TT6wN0ZznWw2dLbagJuRw?=\n\t=?utf-8?q?039XJjCFWbr8+Jzp3YrDbvMIMyzvV+uNG5Gix+k0y+05KLV5cbY3jT87?=\n\t=?utf-8?q?HwcQjlf9QIsf3TUl5CtKbxy1TZGq4K6OM97LdP3dYVc/koHQDWmWYPK6?=\n\t=?utf-8?q?MDwAoOoxKQmL+Y7xgzOV2E7jFYKJefecnIsDg9MkZMfiIuDx3Hgo5JrT?=\n\t=?utf-8?q?290pgz4X9jWVoOyynyLk6oT7iXP87o2PFF01xRZRrFXIx3SIt1TRah1u?=\n\t=?utf-8?q?2jaKSJPftup30rCoRFhMotwAMWXthoRCk8cdZlU1VT5dP4SAU0+dol6T?=\n\t=?utf-8?q?i8as4HN/7uirg0VHvUTeRsT+Pr7s4wzxPJVeFFy0rwdILt62IfOK+d5B?=\n\t=?utf-8?q?Df5YdcxkLM=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"1d75042f-350d-4965-0c2f-08de5aadfbe0","X-MS-Exchange-CrossTenant-AuthSource":"AM9PR04MB8147.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"23 Jan 2026 18:34:03.8377\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":"YGRlZ7wmY/YjWgLX5tYjUqM0brSOKTjWUKp03/Pauo4vV6gVNxEiOWH8XIYB3mXfijrsWu9E5IazeSQHxjo9AQWp2xaa9JxYyGvNEwrjSZ0=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DB9PR04MB9646","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>"}}]