From 3b9388ecdb682b6e7e9f57a4192b4612bfb43410 Mon Sep 17 00:00:00 2001 From: Hao Yao Date: Tue, 30 Dec 2025 15:04:23 +0800 Subject: [PATCH] PTL release for iot on 2025-12-30 Signed-off-by: Hao Yao --- CMakeLists.txt | 4 + config/linux/ipu75xa/sensors/isx031-1.json | 1429 ++++++++-- config/linux/ipu75xa/sensors/isx031-2.json | 351 +-- config/linux/ipu75xa/sensors/isx031-3.json | 351 +-- config/linux/ipu75xa/sensors/isx031-4.json | 1041 +------ config/linux/ipu75xa/sensors/isx031-5.json | 352 +-- config/linux/ipu75xa/sensors/isx031-6.json | 351 +-- config/linux/ipu75xa/sensors/isx031-7.json | 351 +-- config/linux/ipu75xa/sensors/isx031-8.json | 2405 +---------------- config/linux/ipu7x/sensors/imx471-uf.json | 4 +- include/linux/media.h | 3 + .../ipu75xa/FragmentsConfigurator.cpp | 46 +- .../ipu_desc/ipu75xa/FragmentsConfigurator.h | 4 +- .../ipu75xa/GraphResolutionConfigurator.cpp | 56 +- .../ipu75xa/GraphResolutionConfigurator.h | 5 +- ...75xaGraphResolutionConfiguratorAutogen.cpp | 4 +- .../ipu75xa/Ipu75xaStaticGraphAutogen.cpp | 2 +- .../Ipu75xaTerminalDescriptorAutogen.cpp | 2 +- .../ipu_desc/ipu7x/FragmentsConfigurator.cpp | 46 +- .../ipu_desc/ipu7x/FragmentsConfigurator.h | 4 +- .../ipu7x/GraphResolutionConfigurator.cpp | 56 +- .../ipu7x/GraphResolutionConfigurator.h | 5 +- .../ipu7x/Ipu7xStaticGraphBinaryAutogen.h | 3 + src/3a/AiqCore.h | 2 +- src/3a/AiqUnit.h | 2 +- src/3a/MakerNote.h | 2 +- src/3a/intel3a/Intel3AParameter.cpp | 2 +- src/core/CMakeLists.txt | 1 + src/core/CameraDevice.cpp | 167 +- src/core/CameraDevice.h | 11 + src/core/CameraEventType.h | 8 + src/core/CameraStream.cpp | 60 +- src/core/CameraStream.h | 15 +- src/core/FileSource.cpp | 24 + src/core/FileSource.h | 39 +- src/core/InputEventMonitor.cpp | 229 ++ src/core/InputEventMonitor.h | 72 + src/core/IpuPacAdaptor.h | 2 +- src/core/RequestThread.cpp | 17 + src/core/RequestThread.h | 7 + src/iutils/ModuleTags.cpp | 4 +- src/iutils/ModuleTags.h | 128 +- src/platformdata/CameraSensorsParser.cpp | 31 + src/platformdata/PlatformData.cpp | 9 + src/platformdata/PlatformData.h | 13 + src/v4l2/MediaControl.cpp | 96 +- src/v4l2/MediaControl.h | 8 + 47 files changed, 2288 insertions(+), 5536 deletions(-) create mode 100644 src/core/InputEventMonitor.cpp create mode 100644 src/core/InputEventMonitor.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f3e4332..3b3b8a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ project(libcamhal) option(BUILD_CAMHAL_PLUGIN "Build libcamhal as plugins" OFF) option(BUILD_CAMHAL_ADAPTOR "Build hal_adaptor as libcamhal" OFF) +option(LINUX_PRIVACY_MODE "Enable Linux privacy mode support" ON) #------------------------- Global settings ------------------------- @@ -167,6 +168,9 @@ endif() message("Linux build") add_definitions(-DSUPPORT_MULTI_PROCESS) add_definitions(-DLINUX_BUILD) +if (LINUX_PRIVACY_MODE) + add_definitions(-DLINUX_PRIVACY_MODE) +endif() include_directories(${MODULES_DIR}/v4l2) find_package(LIBDRM) if(LIBDRM_FOUND AND ("${LIBDRM_VERSION}" VERSION_GREATER_EQUAL 2.4.114)) diff --git a/config/linux/ipu75xa/sensors/isx031-1.json b/config/linux/ipu75xa/sensors/isx031-1.json index f93d147..ddfe908 100644 --- a/config/linux/ipu75xa/sensors/isx031-1.json +++ b/config/linux/ipu75xa/sensors/isx031-1.json @@ -20,9 +20,12 @@ { "name": "isx031-1", "description": "isx031 as sensor.", + "vcCount": 4, + "vcId": 0, + "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "route" : [ @@ -37,6 +40,90 @@ { "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, "srcStream": 0, "flag": 1 + }, + { + "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, + "srcStream": 1, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, + "srcStream": 1, "flag": 1 + }, + { + "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, + "srcStream": 2, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, + "srcStream": 2, "flag": 1 + }, + { + "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, + "srcStream": 3, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, + "srcStream": 3, "flag": 1 + }, + { + "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, + "srcStream": 0, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, + "srcStream": 1, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, + "srcStream": 1, "flag": 1 + }, + { + "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, + "srcStream": 2, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, + "srcStream": 2, "flag": 1 + }, + { + "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, + "srcStream": 3, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, + "srcStream": 3, "flag": 1 } ], "format": "V4L2_PIX_FMT_UYVY", @@ -68,164 +155,202 @@ { "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - } - ], - "link": [ + }, { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true + "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true + "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - } - ], - "videonode": [ + "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 }, { - "name": "isx031 a-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ + "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 + "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 + "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ + "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, + "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, + "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, + "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, { "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, + "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - } - ], - "link": [ + }, { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true + "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true + "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - } - ], - "videonode": [ + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ + "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 + "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 + "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, + "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, + "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, + "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, + "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 } ], "link": [ @@ -244,130 +369,120 @@ { "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - } - ], - "videonode": [ + }, { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", + "sinkPad": 0, "enable": true }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 5, "enable": true }, { - "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-1", - "description": "isx031 as sensor.", - "vcCount": 4, - "vcId": 0, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, + "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", + "sinkPad": 0, "enable": true }, { - "name": "isx031 a-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ + "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 6, "enable": true + }, { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, + "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true }, { - "name": "isx031 a-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ + "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", + "sinkPad": 0, "enable": true + }, { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 7, "enable": true }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true }, { - "name": "isx031 a-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, + "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 4, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, + "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 5, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, + "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 6, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, + "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 7, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, + "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-1", - "description": "isx031 as sensor.", - "vcCount": 4, - "vcId": 0, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", + ], "videonode": [ { "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" @@ -381,36 +496,944 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ + "route" : [ { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, + "srcStream": 0, "flag": 1 }, { - "name": "isx031 a-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, + "srcStream": 1, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, + "srcStream": 1, "flag": 1 + }, + { + "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, + "srcStream": 2, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, + "srcStream": 2, "flag": 1 + }, + { + "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, + "srcStream": 3, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, + "srcStream": 3, "flag": 1 + }, + { + "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, + "srcStream": 0, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, + "srcStream": 1, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, + "srcStream": 1, "flag": 1 + }, + { + "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, + "srcStream": 2, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, + "srcStream": 2, "flag": 1 + }, + { + "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, + "srcStream": 3, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, + "srcStream": 3, "flag": 1 } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], + ], "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ + "formats": [ { - "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 }, { - "name": "isx031 a-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + } + ], + "link": [ + { + "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 4, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, + "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 5, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, + "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 6, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, + "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 7, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, + "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 4, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, + "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 5, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, + "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 6, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, + "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 7, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, + "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true + } + ], + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2, + "configMode": "AUTO", + "output": [1280, 720], + "route" : [ + { + "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, + "srcStream": 0, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, + "srcStream": 1, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, + "srcStream": 1, "flag": 1 + }, + { + "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, + "srcStream": 2, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, + "srcStream": 2, "flag": 1 + }, + { + "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, + "srcStream": 3, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, + "srcStream": 3, "flag": 1 + }, + { + "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, + "srcStream": 0, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, + "srcStream": 1, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, + "srcStream": 1, "flag": 1 + }, + { + "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, + "srcStream": 2, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, + "srcStream": 2, "flag": 1 + }, + { + "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, + "srcStream": 0, "flag": 1 + }, + { + "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, + "srcStream": 3, "flag": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, + "srcStream": 3, "flag": 1 + } + ], + "format": "V4L2_PIX_FMT_UYVY", + "formats": [ + { + "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 + }, + { + "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 + }, + { + "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 + }, + { + "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + }, + { + "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, + "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 + } + ], + "link": [ + { + "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 4, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, + "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 5, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, + "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 6, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, + "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", + "sinkPad": 7, "enable": true + }, + { + "srcName": "max9x a", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, + "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 4, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, + "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 5, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, + "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 6, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, + "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true + }, + { + "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", + "sinkPad": 0, "enable": true + }, + { + "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", + "sinkPad": 7, "enable": true + }, + { + "srcName": "max9x c", "srcPad": 0, + "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true + }, + { + "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, + "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true + } + ], + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } diff --git a/config/linux/ipu75xa/sensors/isx031-2.json b/config/linux/ipu75xa/sensors/isx031-2.json index e20b4f7..738b917 100644 --- a/config/linux/ipu75xa/sensors/isx031-2.json +++ b/config/linux/ipu75xa/sensors/isx031-2.json @@ -20,357 +20,16 @@ { "name": "isx031-2", "description": "isx031 bs sensor.", - "vcCount": 1, - "vcId": 1, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - } - ], - "link": [ - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - } - ], - "link": [ - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - } - ], - "link": [ - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-2", - "description": "isx031 bs sensor.", - "vcCount": 4, - "vcId": 1, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-2", - "description": "isx031 bs sensor.", "vcCount": 4, "vcId": 1, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" @@ -384,10 +43,11 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" @@ -401,10 +61,11 @@ ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" diff --git a/config/linux/ipu75xa/sensors/isx031-3.json b/config/linux/ipu75xa/sensors/isx031-3.json index c699cf7..0525fca 100644 --- a/config/linux/ipu75xa/sensors/isx031-3.json +++ b/config/linux/ipu75xa/sensors/isx031-3.json @@ -20,357 +20,16 @@ { "name": "isx031-3", "description": "isx031 cs sensor.", - "vcCount": 1, - "vcId": 2, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - } - ], - "link": [ - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - } - ], - "link": [ - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - } - ], - "link": [ - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-3", - "description": "isx031 cs sensor.", - "vcCount": 4, - "vcId": 2, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-3", - "description": "isx031 cs sensor.", "vcCount": 4, "vcId": 2, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" @@ -384,10 +43,11 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" @@ -401,10 +61,11 @@ ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" diff --git a/config/linux/ipu75xa/sensors/isx031-4.json b/config/linux/ipu75xa/sensors/isx031-4.json index 4c200a2..29172db 100644 --- a/config/linux/ipu75xa/sensors/isx031-4.json +++ b/config/linux/ipu75xa/sensors/isx031-4.json @@ -20,1047 +20,16 @@ { "name": "isx031-4", "description": "isx031 ds sensor.", - "vcCount": 1, - "vcId": 3, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-4", - "description": "isx031 ds sensor.", - "vcCount": 4, - "vcId": 3, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-0", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-4", - "description": "isx031 ds sensor.", "vcCount": 4, "vcId": 3, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" @@ -1074,10 +43,11 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" @@ -1091,10 +61,11 @@ ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" diff --git a/config/linux/ipu75xa/sensors/isx031-5.json b/config/linux/ipu75xa/sensors/isx031-5.json index 7a2b95f..a337f4f 100644 --- a/config/linux/ipu75xa/sensors/isx031-5.json +++ b/config/linux/ipu75xa/sensors/isx031-5.json @@ -20,276 +20,16 @@ { "name": "isx031-5", "description": "isx031 as sensor.", - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - } - ], - "link": [ - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 a-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - } - ], - "link": [ - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - } - ], - "link": [ - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-5", - "description": "isx031 as sensor.", "vcCount": 4, "vcId": 0, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" @@ -303,10 +43,11 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" @@ -315,93 +56,16 @@ "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, { - "name": "isx031 a-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 a-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-5", - "description": "isx031 as sensor.", - "vcCount": 4, - "vcId": 0, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 a-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 a-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" @@ -410,7 +74,7 @@ "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, { - "name": "isx031 a-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + "name": "isx031 a", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } diff --git a/config/linux/ipu75xa/sensors/isx031-6.json b/config/linux/ipu75xa/sensors/isx031-6.json index 4dc5789..192533d 100644 --- a/config/linux/ipu75xa/sensors/isx031-6.json +++ b/config/linux/ipu75xa/sensors/isx031-6.json @@ -20,357 +20,16 @@ { "name": "isx031-6", "description": "isx031 bs sensor.", - "vcCount": 1, - "vcId": 1, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - } - ], - "link": [ - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - } - ], - "link": [ - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - } - ], - "link": [ - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-6", - "description": "isx031 bs sensor.", - "vcCount": 4, - "vcId": 1, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 b-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-6", - "description": "isx031 bs sensor.", "vcCount": 4, "vcId": 1, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" @@ -384,10 +43,11 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" @@ -401,10 +61,11 @@ ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" diff --git a/config/linux/ipu75xa/sensors/isx031-7.json b/config/linux/ipu75xa/sensors/isx031-7.json index a301ec3..bae9d12 100644 --- a/config/linux/ipu75xa/sensors/isx031-7.json +++ b/config/linux/ipu75xa/sensors/isx031-7.json @@ -20,357 +20,16 @@ { "name": "isx031-7", "description": "isx031 cs sensor.", - "vcCount": 1, - "vcId": 2, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - } - ], - "link": [ - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - } - ], - "link": [ - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - } - ], - "link": [ - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-7", - "description": "isx031 cs sensor.", - "vcCount": 4, - "vcId": 2, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "format": "V4L2_PIX_FMT_UYVY", - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 c-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-7", - "description": "isx031 cs sensor.", "vcCount": 4, "vcId": 2, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" @@ -384,10 +43,11 @@ ] }, { - "id": 1 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" @@ -401,10 +61,11 @@ ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], "format": "V4L2_PIX_FMT_UYVY", + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" diff --git a/config/linux/ipu75xa/sensors/isx031-8.json b/config/linux/ipu75xa/sensors/isx031-8.json index 60b51b8..2e6b9c4 100644 --- a/config/linux/ipu75xa/sensors/isx031-8.json +++ b/config/linux/ipu75xa/sensors/isx031-8.json @@ -20,77 +20,16 @@ { "name": "isx031-8", "description": "isx031 ds sensor.", - "vcCount": 1, + "vcCount": 4, "vcId": 3, "vcGroupId": 0, "MediaCtlConfig": [ { - "id": 0 , + "id": 0, "configMode": "AUTO", "output": [1920, 1536], - "route" : [ - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" @@ -104,72 +43,11 @@ ] }, { - "id": 0 , + "id": 1, "configMode": "AUTO", "output": [1920, 1080], - "route" : [ - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" @@ -183,2280 +61,11 @@ ] }, { - "id": 2 , + "id": 2, "configMode": "AUTO", "output": [1280, 720], - "route" : [ - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x4-8", - "description": "isx031 ds sensor.", - "vcCount": 4, - "vcId": 3, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - } - ], - "StaticMetadata": { - "supportedStreamConfig": [ - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 - }, - { - "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 - } - ] - }, - - "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], - "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], - "enableAIQ": false, - "usePSysProcessor": false - }, - { - "name": "isx031x8-8", - "description": "isx031 ds sensor.", - "vcCount": 4, - "vcId": 3, - "vcGroupId": 0, - "MediaCtlConfig": [ - { - "id": 0 , - "configMode": "AUTO", - "output": [1920, 1536], - "route" : [ - { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - }, - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 1 , - "configMode": "AUTO", - "output": [1920, 1080], - "route" : [ - { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - }, - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], - "videonode": [ - { - "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" - }, - { - "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" - }, - { - "name": "isx031 d-2", "videoNodeType": "VIDEO_PIXEL_ARRAY" - } - ] - }, - { - "id": 2 , - "configMode": "AUTO", - "output": [1280, 720], - "route" : [ - { - "name": "max9x a-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-0", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x a", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - }, - { - "name": "max9x a-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 4, "sinkStream": 0, "srcPad": 0, - "srcStream": 0, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 0, "srcPad": 1, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x b-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 5, "sinkStream": 0, "srcPad": 0, - "srcStream": 1, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 1, "srcPad": 2, - "srcStream": 1, "flag": 1 - }, - { - "name": "max9x c-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 6, "sinkStream": 0, "srcPad": 0, - "srcStream": 2, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 2, "srcPad": 3, - "srcStream": 2, "flag": 1 - }, - { - "name": "max9x d-2", "sinkPad": 0, "sinkStream": 0, "srcPad": 2, - "srcStream": 0, "flag": 1 - }, - { - "name": "max9x c", "sinkPad": 7, "sinkStream": 0, "srcPad": 0, - "srcStream": 3, "flag": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "sinkPad": 0, "sinkStream": 3, "srcPad": 4, - "srcStream": 3, "flag": 1 - } - ], - "format": "V4L2_PIX_FMT_UYVY", - "formats": [ - { - "name": "isx031 a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-0", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 0", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "isx031 a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x a-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 1, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "isx031 b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x b-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 5, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 1 - }, - { - "name": "isx031 c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 6, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 3, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 2 - }, - { - "name": "isx031 d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x d-2", "pad": 2, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 7, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 0 - }, - { - "name": "max9x c", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 0, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - }, - { - "name": "Intel IPU7 CSI2 2", "pad": 4, "width": 1920, "height": 1536, - "format": "V4L2_MBUS_FMT_UYVY8_1X16", "stream": 3 - } - ], - "link": [ - { - "srcName": "isx031 a-0", "srcPad": 0, "sinkName": "max9x a-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-0", "srcPad": 0, "sinkName": "max9x b-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 1", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-0", "srcPad": 0, "sinkName": "max9x c-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-0", "srcPad": 0, "sinkName": "max9x d-0", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-0", "srcPad": 2, "sinkName": "max9x a", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x a", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 0", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 0", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 3", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 a-2", "srcPad": 0, "sinkName": "max9x a-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x a-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 4, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 1, - "sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 b-2", "srcPad": 0, "sinkName": "max9x b-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x b-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 5, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 2, - "sinkName": "Intel IPU7 ISYS Capture 17", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 c-2", "srcPad": 0, "sinkName": "max9x c-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x c-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 6, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 3, - "sinkName": "Intel IPU7 ISYS Capture 18", "sinkPad": 0, "enable": true - }, - { - "srcName": "isx031 d-2", "srcPad": 0, "sinkName": "max9x d-2", - "sinkPad": 0, "enable": true - }, - { - "srcName": "max9x d-2", "srcPad": 2, "sinkName": "max9x c", - "sinkPad": 7, "enable": true - }, - { - "srcName": "max9x c", "srcPad": 0, - "sinkName": "Intel IPU7 CSI2 2", "sinkPad": 0, "enable": true - }, - { - "srcName": "Intel IPU7 CSI2 2", "srcPad": 4, - "sinkName": "Intel IPU7 ISYS Capture 19", "sinkPad": 0, "enable": true - } - ], + "sensorCommonConfig": "isx031-1", "videonode": [ { "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" diff --git a/config/linux/ipu7x/sensors/imx471-uf.json b/config/linux/ipu7x/sensors/imx471-uf.json index 0fa69a6..9fbdd1c 100644 --- a/config/linux/ipu7x/sensors/imx471-uf.json +++ b/config/linux/ipu7x/sensors/imx471-uf.json @@ -207,7 +207,9 @@ "skipFrameV4L2Error": true, "isISYSCompression": false, "isPSACompression": false, - "usingMockPSys": false + "usingMockPSys": false, + "privacyShutterEventType": 5, + "privacyShutterEventCode": 9 } ] } diff --git a/include/linux/media.h b/include/linux/media.h index 0a8c796..bc92aa5 100644 --- a/include/linux/media.h +++ b/include/linux/media.h @@ -47,6 +47,9 @@ struct media_device_info { #define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_T_DEVNODE + 3) /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_T_DEVNODE + 4) +#define MEDIA_ENT_F_OLD_BASE (1 << MEDIA_ENT_TYPE_SHIFT) +#define MEDIA_ENT_F_IO_V4L (MEDIA_ENT_F_OLD_BASE + 1) +#define MEDIA_ENT_T_V4L2_VIDEO MEDIA_ENT_F_IO_V4L #define MEDIA_ENT_T_V4L2_SUBDEV (2 << MEDIA_ENT_TYPE_SHIFT) #define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR (MEDIA_ENT_T_V4L2_SUBDEV + 1) #define MEDIA_ENT_T_V4L2_SUBDEV_FLASH (MEDIA_ENT_T_V4L2_SUBDEV + 2) diff --git a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp index f1a1545..0c153c9 100644 --- a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp +++ b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp @@ -97,7 +97,13 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments(std::vectornumberOfFragments; stripe++) { - if (_node->fragmentVanishStatus[stripe] == VanishOption::Full) + if ((_node->fragmentVanishStatus[stripe] == VanishOption::Full) || + (isTnr && _node->fragmentVanishStatus[stripe] == VanishOption::AfterTnr)) { // Not vanished leftNonVanishedStripe = stripe; @@ -541,7 +548,8 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsOutput(StaticGraphRu for (int16_t stripe = _node->numberOfFragments - 1; stripe >= 0; stripe--) { - if (_node->fragmentVanishStatus[stripe] == VanishOption::Full) + if ((_node->fragmentVanishStatus[stripe] == VanishOption::Full) || + (isTnr && _node->fragmentVanishStatus[stripe] == VanishOption::AfterTnr)) { // Not vanished rightNonVanishedStripe = stripe; @@ -807,14 +815,22 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGrap } StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, - uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels) + StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels) { if (kernelFragments == nullptr || prevKernelFragments == nullptr) { return StaticGraphStatus::SG_ERROR; } - copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); + auto resInfo = runKernel->resolution_info; + if (resInfo->input_width == 0 || resInfo->input_height == 0 || + resInfo->output_width == 0 || resInfo->output_height == 0) + { + // Smurf not in use + return StaticGraphStatus::SG_OK; + } + + _outputStartX[runKernel->kernel_uuid] = std::vector(_node->numberOfFragments, 0); // Find the device that is fed by this smurf (the second in the pair) StaticGraphRunKernel* deviceRunKernel = nullptr; @@ -851,6 +867,10 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRun return StaticGraphStatus::SG_ERROR; } + double newScaleFactorH = (double)(resInfo->output_width + resInfo->output_crop.left + resInfo->output_crop.right) / (resInfo->input_width - resInfo->input_crop.left - resInfo->input_crop.right); + double newScaleFactorV = (double)(resInfo->output_height + resInfo->output_crop.top + resInfo->output_crop.bottom) / (resInfo->input_height - resInfo->input_crop.top - resInfo->input_crop.bottom); + double newScaleFactor = std::max(newScaleFactorH, newScaleFactorV); + for (int8_t stripe = 0; stripe < _node->GetNumberOfFragments(); stripe++) { // If device is vanished, vanish the smurf too @@ -863,6 +883,16 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRun // Smurf output is the same as the device input kernelFragments[stripe].fragmentOutputWidth = deviceFragments[stripe].fragmentInputWidth; + + // Get the start X that will we actually have (since feeder can only crop even numbers) prevKernelFragments is the feeder + uint32_t requiredOutputStartX = deviceFragments[stripe].fragmentStartX + resInfo->output_crop.left; + uint32_t actualOutputStartX = static_cast(ceil(newScaleFactor * prevKernelFragments[stripe].fragmentStartX / 2)) * 2; + + if (actualOutputStartX > (uint32_t)resInfo->output_crop.left && (requiredOutputStartX > actualOutputStartX)) + { + // This is actually output crop (PAL knows :) + kernelFragments[stripe].upscalerFragDesc.fragmentInputCropLeft = static_cast(requiredOutputStartX - actualOutputStartX); + } } return StaticGraphStatus::SG_OK; @@ -879,7 +909,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurfFeeder(StaticGr for (uint8_t stripe = 0; stripe < _node->numberOfFragments; stripe++) { - _outputStartX[runKernel->kernel_uuid][stripe] = static_cast(kernelFragments[stripe].fragmentStartX - runKernel->resolution_info->input_crop.left); + _outputStartX[runKernel->kernel_uuid][stripe] = kernelFragments[stripe].fragmentStartX; } return StaticGraphStatus::SG_OK; diff --git a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h index 0afe80d..f3b81b9 100644 --- a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h +++ b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h @@ -43,10 +43,10 @@ class Ipu8FragmentsConfigurator StaticGraphStatus configFragmentsDownscaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsCropper(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsUpscaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); - StaticGraphStatus configFragmentsOutput(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); + StaticGraphStatus configFragmentsOutput(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, bool isTnr); StaticGraphStatus configFragmentsTnrScaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsTnrFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, GraphResolutionConfiguratorKernelRole kernelRole); - StaticGraphStatus configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, + StaticGraphStatus configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels); StaticGraphStatus configFragmentsSmurfFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments); diff --git a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp index 10b4598..b8f5f89 100644 --- a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp +++ b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp @@ -824,21 +824,34 @@ StaticGraphStatus GraphResolutionConfigurator::updateCroppingScaler(StaticGraphR StaticGraphStatus GraphResolutionConfigurator::updateRunKernelResolutionHistory(StaticGraphRunKernel* runKernel, StaticGraphRunKernel* prevRunKernel, bool updateResolution) { - runKernel->resolution_history->input_crop.left = prevRunKernel->resolution_history->input_crop.left + - static_cast(prevRunKernel->resolution_info->input_crop.left / _sensorHorizontalScaling); - runKernel->resolution_history->input_crop.right = prevRunKernel->resolution_history->input_crop.right + - static_cast(prevRunKernel->resolution_info->input_crop.right / _sensorHorizontalScaling); - runKernel->resolution_history->input_crop.top = prevRunKernel->resolution_history->input_crop.top + - static_cast(prevRunKernel->resolution_info->input_crop.top / _sensorVerticalScaling); - runKernel->resolution_history->input_crop.bottom = prevRunKernel->resolution_history->input_crop.bottom + - static_cast(prevRunKernel->resolution_info->input_crop.bottom / _sensorVerticalScaling); - if (updateResolution == true) { runKernel->resolution_history->output_width = runKernel->resolution_info->input_width; runKernel->resolution_history->output_height = runKernel->resolution_info->input_height; } + double horScaleFactor = _sensorHorizontalScaling; + double verScaleFactor = _sensorVerticalScaling; + + if (prevRunKernel->resolution_info != nullptr) + { + // Take our crop, translate according to our history. Take into account the scaling that prev kernel performed. + horScaleFactor = (double)prevRunKernel->resolution_history->output_width / + (prevRunKernel->resolution_history->input_width - prevRunKernel->resolution_history->input_crop.left - prevRunKernel->resolution_history->input_crop.right); + + verScaleFactor = (double)prevRunKernel->resolution_history->output_height / + (prevRunKernel->resolution_history->input_height - prevRunKernel->resolution_history->input_crop.top - prevRunKernel->resolution_history->input_crop.bottom); + + runKernel->resolution_history->input_crop.left = prevRunKernel->resolution_history->input_crop.left + + static_cast(prevRunKernel->resolution_info->input_crop.left / horScaleFactor); + runKernel->resolution_history->input_crop.right = prevRunKernel->resolution_history->input_crop.right + + static_cast(prevRunKernel->resolution_info->input_crop.right / horScaleFactor); + runKernel->resolution_history->input_crop.top = prevRunKernel->resolution_history->input_crop.top + + static_cast(prevRunKernel->resolution_info->input_crop.top / verScaleFactor); + runKernel->resolution_history->input_crop.bottom = prevRunKernel->resolution_history->input_crop.bottom + + static_cast(prevRunKernel->resolution_info->input_crop.bottom / verScaleFactor); + } + return StaticGraphStatus::SG_OK; } @@ -1157,7 +1170,7 @@ Ipu8GraphResolutionConfigurator::Ipu8GraphResolutionConfigurator(IStaticGraphCon // Save original values for kernels that are being updated _originalCropOfDownScaler = _downscalerRunKernel->resolution_info->input_crop; - _originalCropOfEspaCropper = _cropperRunKernel->resolution_info->input_crop; + _originalCropOfUpscaler = _upscalerRunKernel->resolution_info->input_crop; _originaHistoryOfOutput = _outputRunKernel->resolution_history->input_crop; if (_outputRunKernel->resolution_info != nullptr) @@ -1470,8 +1483,11 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso uint32_t inputWidth = _downscalerRunKernel->resolution_info->input_width; uint32_t inputHeight = _downscalerRunKernel->resolution_info->input_height; - uint32_t outputWidth = _cropperRunKernel->resolution_info->output_width; - uint32_t outputHeight = _cropperRunKernel->resolution_info->output_height; + uint32_t outputWidthCropper = _cropperRunKernel->resolution_info->output_width; + uint32_t outputHeightCropper = _cropperRunKernel->resolution_info->output_height; + + uint32_t outputWidth = _upscalerRunKernel->resolution_info->output_width; + uint32_t outputHeight = _upscalerRunKernel->resolution_info->output_height; StaticGraphKernelResCrop downscalerCropHist = _downscalerRunKernel->resolution_history->input_crop; @@ -1487,7 +1503,7 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso ret = StaticGraphStatus::SG_ERROR; } - if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidth, outputHeight) != StaticGraphStatus::SG_OK) + if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidthCropper, outputHeightCropper) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } @@ -1499,14 +1515,14 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso updateRunKernelPassThrough(_downscalerRunKernel, inputWidth, inputHeight); // Configure ESPA crop to output resolution (TNR ROI) - if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidth, outputHeight) != StaticGraphStatus::SG_OK) + if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidthCropper, outputHeightCropper) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } // Configure upscaler to crop from output resolution to ROI if (updateRunKernelUpScaler(_upscalerRunKernel, roi, _cropperRunKernel->resolution_info->input_crop, - outputWidth, outputHeight) != StaticGraphStatus::SG_OK) + outputWidthCropper, outputHeightCropper, outputWidth, outputHeight) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } @@ -1706,18 +1722,18 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelCropper(Static } StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, - uint32_t outputWidth, uint32_t outputHeight) + uint32_t inputWidth, uint32_t inputHeight, uint32_t outputWidth, uint32_t outputHeight) { StaticGraphStatus ret = StaticGraphStatus::SG_OK; - runKernel->resolution_info->input_width = outputWidth; - runKernel->resolution_info->input_height = outputHeight; + runKernel->resolution_info->input_width = inputWidth; + runKernel->resolution_info->input_height = inputHeight; runKernel->resolution_info->output_width = outputWidth; runKernel->resolution_info->output_height = outputHeight; // How much cropping is left for the upscaler to do after the cropper? - uint32_t totalCropW = roi.left + roi.right - cropperKernelCrop.left - cropperKernelCrop.right; - uint32_t totalCropH = roi.top + roi.bottom - cropperKernelCrop.top - cropperKernelCrop.bottom; + uint32_t totalCropW = roi.left + roi.right - cropperKernelCrop.left - cropperKernelCrop.right - _originalCropOfUpscaler.left - _originalCropOfUpscaler.right; + uint32_t totalCropH = roi.top + roi.bottom - cropperKernelCrop.top - cropperKernelCrop.bottom - _originalCropOfUpscaler.top - _originalCropOfUpscaler.bottom; // Cropping must be done in units of stepW x stepH. // How many units of stepW x stepH should we crop? diff --git a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h index 3105f94..171828a 100644 --- a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h +++ b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h @@ -79,6 +79,7 @@ enum class GraphResolutionConfiguratorKernelRole : uint8_t EspaCropper, NonRcb, Output, + TnrOutput, TnrScaler, TnrFeederFull, TnrFeederSmall, @@ -212,7 +213,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphStatus updateRunKernelOfScalers(ResolutionRoi& roi); StaticGraphStatus updateRunKernelDownScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, uint32_t& outputWidth, uint32_t& outputHeight); - StaticGraphStatus updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, uint32_t outputWidth, uint32_t outputHeight); + StaticGraphStatus updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, uint32_t inputWidth, uint32_t inputHeight, uint32_t outputWidth, uint32_t outputHeight); StaticGraphStatus updateRunKernelCropper(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelRes* downscalerResInfo, uint32_t outputWidth, uint32_t outputHeight); StaticGraphStatus updateRunKernelSmurf(SmurfKernelInfo* smurfInfo); @@ -223,7 +224,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator uint32_t _upscalerStepH = 1; StaticGraphKernelResCrop _originalCropOfDownScaler = { 0,0,0,0 }; - StaticGraphKernelResCrop _originalCropOfEspaCropper = { 0,0,0,0 }; + StaticGraphKernelResCrop _originalCropOfUpscaler = { 0,0,0,0 }; StaticGraphKernelResCrop _originalCropOfOutput = { 0,0,0,0 }; StaticGraphKernelResCrop _originaHistoryOfOutput = { 0,0,0,0 }; diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp b/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp index b8fa596..ac7e1d8 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp +++ b/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp @@ -75,7 +75,7 @@ uint32_t GraphResolutionConfiguratorHelper::getRunKernelUuidOfOutput(HwSink hwSi case 100044: // Bayer_NoPdaf_NoDvs_WithTnr_WithNntm_WithImv case 100050: // Bayer_NoPdaf_WithRemosaic_NoDvs_WithTnr case 100051: // Bayer_NoPdaf_WithB2b_WithNntm_WithTnr - return 33331; // imv + return 23692; // imv } break; case HwSink::ProcessedSecondarySink: return 19706; // sw_scaler @@ -110,7 +110,7 @@ StaticGraphStatus GraphResolutionConfiguratorHelper::getRunKernelUuidForResHisto kernelUuids.push_back(5637); // gdc7_1 kernelUuids.push_back(19706); // sw_scaler kernelUuids.push_back(46539); // nntm_1_0 - kernelUuids.push_back(33331); // imv + kernelUuids.push_back(23692); // imv return StaticGraphStatus::SG_OK; } diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp index bb7dc7b..2195b70 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp +++ b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp @@ -959,7 +959,7 @@ void SwImvOuterNode::Init(SwImvOuterNodeConfiguration** selectedGraphConfigurati { OuterNode::Init(6, NodeTypes::Sw, 2, nodeKernelConfigurationsOptionsCount, selectedGraphConfiguration[0]->tuningMode, selectedGraphConfiguration[0]->streamId, 0); - uint16_t kernelsUuids[2] = {33331 /*imv*/, 19706 /*sw_scaler*/}; + uint16_t kernelsUuids[2] = {23692 /*imv*/, 19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x3; // { imv[0], sw_scaler[1] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{imv}[0], {sw_scaler}[1] } uint8_t systemApisSizes[2] = {0 /*imv*/, 5 /*sw_scaler*/}; diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaTerminalDescriptorAutogen.cpp b/modules/ipu_desc/ipu75xa/Ipu75xaTerminalDescriptorAutogen.cpp index a4ddb33..d7786d1 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaTerminalDescriptorAutogen.cpp +++ b/modules/ipu_desc/ipu75xa/Ipu75xaTerminalDescriptorAutogen.cpp @@ -555,7 +555,7 @@ TerminalDescriptor SW_IMVTerminalDesc[] = PAC_BUFFER_TYPE_NONE, TERMINAL_BUFFER_TYPE_DATA, TERMINAL_DIR_IN, - 33331, // imv + 23692, // imv }, { SW_IMV_TERMINAL_CONNECT_OUTPUT_1, diff --git a/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp b/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp index f1a1545..0c153c9 100644 --- a/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp +++ b/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp @@ -97,7 +97,13 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments(std::vectornumberOfFragments; stripe++) { - if (_node->fragmentVanishStatus[stripe] == VanishOption::Full) + if ((_node->fragmentVanishStatus[stripe] == VanishOption::Full) || + (isTnr && _node->fragmentVanishStatus[stripe] == VanishOption::AfterTnr)) { // Not vanished leftNonVanishedStripe = stripe; @@ -541,7 +548,8 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsOutput(StaticGraphRu for (int16_t stripe = _node->numberOfFragments - 1; stripe >= 0; stripe--) { - if (_node->fragmentVanishStatus[stripe] == VanishOption::Full) + if ((_node->fragmentVanishStatus[stripe] == VanishOption::Full) || + (isTnr && _node->fragmentVanishStatus[stripe] == VanishOption::AfterTnr)) { // Not vanished rightNonVanishedStripe = stripe; @@ -807,14 +815,22 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGrap } StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, - uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels) + StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels) { if (kernelFragments == nullptr || prevKernelFragments == nullptr) { return StaticGraphStatus::SG_ERROR; } - copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); + auto resInfo = runKernel->resolution_info; + if (resInfo->input_width == 0 || resInfo->input_height == 0 || + resInfo->output_width == 0 || resInfo->output_height == 0) + { + // Smurf not in use + return StaticGraphStatus::SG_OK; + } + + _outputStartX[runKernel->kernel_uuid] = std::vector(_node->numberOfFragments, 0); // Find the device that is fed by this smurf (the second in the pair) StaticGraphRunKernel* deviceRunKernel = nullptr; @@ -851,6 +867,10 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRun return StaticGraphStatus::SG_ERROR; } + double newScaleFactorH = (double)(resInfo->output_width + resInfo->output_crop.left + resInfo->output_crop.right) / (resInfo->input_width - resInfo->input_crop.left - resInfo->input_crop.right); + double newScaleFactorV = (double)(resInfo->output_height + resInfo->output_crop.top + resInfo->output_crop.bottom) / (resInfo->input_height - resInfo->input_crop.top - resInfo->input_crop.bottom); + double newScaleFactor = std::max(newScaleFactorH, newScaleFactorV); + for (int8_t stripe = 0; stripe < _node->GetNumberOfFragments(); stripe++) { // If device is vanished, vanish the smurf too @@ -863,6 +883,16 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRun // Smurf output is the same as the device input kernelFragments[stripe].fragmentOutputWidth = deviceFragments[stripe].fragmentInputWidth; + + // Get the start X that will we actually have (since feeder can only crop even numbers) prevKernelFragments is the feeder + uint32_t requiredOutputStartX = deviceFragments[stripe].fragmentStartX + resInfo->output_crop.left; + uint32_t actualOutputStartX = static_cast(ceil(newScaleFactor * prevKernelFragments[stripe].fragmentStartX / 2)) * 2; + + if (actualOutputStartX > (uint32_t)resInfo->output_crop.left && (requiredOutputStartX > actualOutputStartX)) + { + // This is actually output crop (PAL knows :) + kernelFragments[stripe].upscalerFragDesc.fragmentInputCropLeft = static_cast(requiredOutputStartX - actualOutputStartX); + } } return StaticGraphStatus::SG_OK; @@ -879,7 +909,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurfFeeder(StaticGr for (uint8_t stripe = 0; stripe < _node->numberOfFragments; stripe++) { - _outputStartX[runKernel->kernel_uuid][stripe] = static_cast(kernelFragments[stripe].fragmentStartX - runKernel->resolution_info->input_crop.left); + _outputStartX[runKernel->kernel_uuid][stripe] = kernelFragments[stripe].fragmentStartX; } return StaticGraphStatus::SG_OK; diff --git a/modules/ipu_desc/ipu7x/FragmentsConfigurator.h b/modules/ipu_desc/ipu7x/FragmentsConfigurator.h index 0afe80d..f3b81b9 100644 --- a/modules/ipu_desc/ipu7x/FragmentsConfigurator.h +++ b/modules/ipu_desc/ipu7x/FragmentsConfigurator.h @@ -43,10 +43,10 @@ class Ipu8FragmentsConfigurator StaticGraphStatus configFragmentsDownscaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsCropper(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsUpscaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); - StaticGraphStatus configFragmentsOutput(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); + StaticGraphStatus configFragmentsOutput(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, bool isTnr); StaticGraphStatus configFragmentsTnrScaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsTnrFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, GraphResolutionConfiguratorKernelRole kernelRole); - StaticGraphStatus configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, + StaticGraphStatus configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels); StaticGraphStatus configFragmentsSmurfFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments); diff --git a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp index 10b4598..b8f5f89 100644 --- a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp +++ b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp @@ -824,21 +824,34 @@ StaticGraphStatus GraphResolutionConfigurator::updateCroppingScaler(StaticGraphR StaticGraphStatus GraphResolutionConfigurator::updateRunKernelResolutionHistory(StaticGraphRunKernel* runKernel, StaticGraphRunKernel* prevRunKernel, bool updateResolution) { - runKernel->resolution_history->input_crop.left = prevRunKernel->resolution_history->input_crop.left + - static_cast(prevRunKernel->resolution_info->input_crop.left / _sensorHorizontalScaling); - runKernel->resolution_history->input_crop.right = prevRunKernel->resolution_history->input_crop.right + - static_cast(prevRunKernel->resolution_info->input_crop.right / _sensorHorizontalScaling); - runKernel->resolution_history->input_crop.top = prevRunKernel->resolution_history->input_crop.top + - static_cast(prevRunKernel->resolution_info->input_crop.top / _sensorVerticalScaling); - runKernel->resolution_history->input_crop.bottom = prevRunKernel->resolution_history->input_crop.bottom + - static_cast(prevRunKernel->resolution_info->input_crop.bottom / _sensorVerticalScaling); - if (updateResolution == true) { runKernel->resolution_history->output_width = runKernel->resolution_info->input_width; runKernel->resolution_history->output_height = runKernel->resolution_info->input_height; } + double horScaleFactor = _sensorHorizontalScaling; + double verScaleFactor = _sensorVerticalScaling; + + if (prevRunKernel->resolution_info != nullptr) + { + // Take our crop, translate according to our history. Take into account the scaling that prev kernel performed. + horScaleFactor = (double)prevRunKernel->resolution_history->output_width / + (prevRunKernel->resolution_history->input_width - prevRunKernel->resolution_history->input_crop.left - prevRunKernel->resolution_history->input_crop.right); + + verScaleFactor = (double)prevRunKernel->resolution_history->output_height / + (prevRunKernel->resolution_history->input_height - prevRunKernel->resolution_history->input_crop.top - prevRunKernel->resolution_history->input_crop.bottom); + + runKernel->resolution_history->input_crop.left = prevRunKernel->resolution_history->input_crop.left + + static_cast(prevRunKernel->resolution_info->input_crop.left / horScaleFactor); + runKernel->resolution_history->input_crop.right = prevRunKernel->resolution_history->input_crop.right + + static_cast(prevRunKernel->resolution_info->input_crop.right / horScaleFactor); + runKernel->resolution_history->input_crop.top = prevRunKernel->resolution_history->input_crop.top + + static_cast(prevRunKernel->resolution_info->input_crop.top / verScaleFactor); + runKernel->resolution_history->input_crop.bottom = prevRunKernel->resolution_history->input_crop.bottom + + static_cast(prevRunKernel->resolution_info->input_crop.bottom / verScaleFactor); + } + return StaticGraphStatus::SG_OK; } @@ -1157,7 +1170,7 @@ Ipu8GraphResolutionConfigurator::Ipu8GraphResolutionConfigurator(IStaticGraphCon // Save original values for kernels that are being updated _originalCropOfDownScaler = _downscalerRunKernel->resolution_info->input_crop; - _originalCropOfEspaCropper = _cropperRunKernel->resolution_info->input_crop; + _originalCropOfUpscaler = _upscalerRunKernel->resolution_info->input_crop; _originaHistoryOfOutput = _outputRunKernel->resolution_history->input_crop; if (_outputRunKernel->resolution_info != nullptr) @@ -1470,8 +1483,11 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso uint32_t inputWidth = _downscalerRunKernel->resolution_info->input_width; uint32_t inputHeight = _downscalerRunKernel->resolution_info->input_height; - uint32_t outputWidth = _cropperRunKernel->resolution_info->output_width; - uint32_t outputHeight = _cropperRunKernel->resolution_info->output_height; + uint32_t outputWidthCropper = _cropperRunKernel->resolution_info->output_width; + uint32_t outputHeightCropper = _cropperRunKernel->resolution_info->output_height; + + uint32_t outputWidth = _upscalerRunKernel->resolution_info->output_width; + uint32_t outputHeight = _upscalerRunKernel->resolution_info->output_height; StaticGraphKernelResCrop downscalerCropHist = _downscalerRunKernel->resolution_history->input_crop; @@ -1487,7 +1503,7 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso ret = StaticGraphStatus::SG_ERROR; } - if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidth, outputHeight) != StaticGraphStatus::SG_OK) + if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidthCropper, outputHeightCropper) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } @@ -1499,14 +1515,14 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso updateRunKernelPassThrough(_downscalerRunKernel, inputWidth, inputHeight); // Configure ESPA crop to output resolution (TNR ROI) - if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidth, outputHeight) != StaticGraphStatus::SG_OK) + if (updateRunKernelCropper(_cropperRunKernel, roi, _downscalerRunKernel->resolution_info, outputWidthCropper, outputHeightCropper) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } // Configure upscaler to crop from output resolution to ROI if (updateRunKernelUpScaler(_upscalerRunKernel, roi, _cropperRunKernel->resolution_info->input_crop, - outputWidth, outputHeight) != StaticGraphStatus::SG_OK) + outputWidthCropper, outputHeightCropper, outputWidth, outputHeight) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } @@ -1706,18 +1722,18 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelCropper(Static } StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, - uint32_t outputWidth, uint32_t outputHeight) + uint32_t inputWidth, uint32_t inputHeight, uint32_t outputWidth, uint32_t outputHeight) { StaticGraphStatus ret = StaticGraphStatus::SG_OK; - runKernel->resolution_info->input_width = outputWidth; - runKernel->resolution_info->input_height = outputHeight; + runKernel->resolution_info->input_width = inputWidth; + runKernel->resolution_info->input_height = inputHeight; runKernel->resolution_info->output_width = outputWidth; runKernel->resolution_info->output_height = outputHeight; // How much cropping is left for the upscaler to do after the cropper? - uint32_t totalCropW = roi.left + roi.right - cropperKernelCrop.left - cropperKernelCrop.right; - uint32_t totalCropH = roi.top + roi.bottom - cropperKernelCrop.top - cropperKernelCrop.bottom; + uint32_t totalCropW = roi.left + roi.right - cropperKernelCrop.left - cropperKernelCrop.right - _originalCropOfUpscaler.left - _originalCropOfUpscaler.right; + uint32_t totalCropH = roi.top + roi.bottom - cropperKernelCrop.top - cropperKernelCrop.bottom - _originalCropOfUpscaler.top - _originalCropOfUpscaler.bottom; // Cropping must be done in units of stepW x stepH. // How many units of stepW x stepH should we crop? diff --git a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h index 3105f94..171828a 100644 --- a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h +++ b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h @@ -79,6 +79,7 @@ enum class GraphResolutionConfiguratorKernelRole : uint8_t EspaCropper, NonRcb, Output, + TnrOutput, TnrScaler, TnrFeederFull, TnrFeederSmall, @@ -212,7 +213,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphStatus updateRunKernelOfScalers(ResolutionRoi& roi); StaticGraphStatus updateRunKernelDownScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, uint32_t& outputWidth, uint32_t& outputHeight); - StaticGraphStatus updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, uint32_t outputWidth, uint32_t outputHeight); + StaticGraphStatus updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, uint32_t inputWidth, uint32_t inputHeight, uint32_t outputWidth, uint32_t outputHeight); StaticGraphStatus updateRunKernelCropper(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelRes* downscalerResInfo, uint32_t outputWidth, uint32_t outputHeight); StaticGraphStatus updateRunKernelSmurf(SmurfKernelInfo* smurfInfo); @@ -223,7 +224,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator uint32_t _upscalerStepH = 1; StaticGraphKernelResCrop _originalCropOfDownScaler = { 0,0,0,0 }; - StaticGraphKernelResCrop _originalCropOfEspaCropper = { 0,0,0,0 }; + StaticGraphKernelResCrop _originalCropOfUpscaler = { 0,0,0,0 }; StaticGraphKernelResCrop _originalCropOfOutput = { 0,0,0,0 }; StaticGraphKernelResCrop _originaHistoryOfOutput = { 0,0,0,0 }; diff --git a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h index f0731d5..7bda8e7 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h +++ b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h @@ -67,6 +67,9 @@ enum class GraphConfigurationKeyAttributes : uint32_t VaiActive = 0x00000100, StillsModeCpHdr = 0x00000200, ImvDewarpActive = 0x00000400, + BroadcastActive = 0x00000800, + PortraitActive = 0x00001000, + DocScanActive = 0x00002000, }; struct GraphConfigurationKey { diff --git a/src/3a/AiqCore.h b/src/3a/AiqCore.h index 47152ed..c07630f 100644 --- a/src/3a/AiqCore.h +++ b/src/3a/AiqCore.h @@ -25,7 +25,7 @@ #include "Intel3AParameter.h" #ifdef IPA_SANDBOXING -#include "CcaClient.h" +#include "IntelCcaWorker.h" #else #include "modules/algowrapper/IntelCca.h" #endif diff --git a/src/3a/AiqUnit.h b/src/3a/AiqUnit.h index 9dca2cf..a5caec0 100644 --- a/src/3a/AiqUnit.h +++ b/src/3a/AiqUnit.h @@ -16,7 +16,7 @@ #pragma once #ifdef IPA_SANDBOXING -#include "CcaClient.h" +#include "IntelCcaWorker.h" #else #include "modules/algowrapper/IntelCca.h" #endif diff --git a/src/3a/MakerNote.h b/src/3a/MakerNote.h index a47dcb2..53b925d 100644 --- a/src/3a/MakerNote.h +++ b/src/3a/MakerNote.h @@ -20,7 +20,7 @@ #include #ifdef IPA_SANDBOXING -#include "CcaClient.h" +#include "IntelCcaWorker.h" #else #include "modules/algowrapper/IntelCca.h" #endif diff --git a/src/3a/intel3a/Intel3AParameter.cpp b/src/3a/intel3a/Intel3AParameter.cpp index f76c01b..9aba5e4 100644 --- a/src/3a/intel3a/Intel3AParameter.cpp +++ b/src/3a/intel3a/Intel3AParameter.cpp @@ -30,7 +30,7 @@ #include "PlatformData.h" #ifdef IPA_SANDBOXING -#include "CcaClient.h" +#include "IntelCcaWorker.h" #else #include "modules/algowrapper/IntelCca.h" #endif diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index ab1dc21..538d1f0 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -18,6 +18,7 @@ set(CORE_SRCS ${CORE_DIR}/BufferQueue.cpp ${CORE_DIR}/CameraBuffer.cpp ${CORE_DIR}/CameraEvent.cpp + ${CORE_DIR}/InputEventMonitor.cpp ${CORE_DIR}/LensHw.cpp ${CORE_DIR}/SensorHwCtrl.cpp ${CORE_DIR}/SofSource.cpp diff --git a/src/core/CameraDevice.cpp b/src/core/CameraDevice.cpp index 0c97709..96bac0e 100644 --- a/src/core/CameraDevice.cpp +++ b/src/core/CameraDevice.cpp @@ -64,6 +64,10 @@ CameraDevice::CameraDevice(int cameraId) // CSI_META_E mProducer = createBufferProducer(); +#ifdef LINUX_PRIVACY_MODE + mBackupProducer = new DummyImageSource(mCameraId); + mPrivacyShutter = new InputEventMonitor(); +#endif mSofSource = new SofSource(mCameraId); @@ -85,6 +89,12 @@ CameraDevice::~CameraDevice() { LOG1("@%s", mCameraId, __func__); AutoMutex m(mDeviceLock); +#ifdef LINUX_PRIVACY_MODE + if (mPrivacyShutter->isConfigured()) { + mPrivacyShutter->stop(); + } +#endif + // Clear the media control when close the device. MediaControl* mc = MediaControl::getInstance(); MediaCtlConf* mediaCtl = PlatformData::getMediaCtlConf(mCameraId); @@ -106,6 +116,10 @@ CameraDevice::~CameraDevice() { delete m3AControl; delete mSensorCtrl; delete mSofSource; +#ifdef LINUX_PRIVACY_MODE + delete mPrivacyShutter; + delete mBackupProducer; +#endif delete mProducer; // CSI_META_S delete mCsiMetaDevice; @@ -125,6 +139,11 @@ int CameraDevice::init() { int ret = mProducer->init(); CheckAndLogError(ret < 0, ret, "%s: Init capture unit failed", __func__); +#ifdef LINUX_PRIVACY_MODE + ret = mBackupProducer->init(); + CheckAndLogError(ret < 0, ret, "%s: Init dummy image producer failed", __func__); +#endif + // CSI_META_S ret = mCsiMetaDevice->init(); CheckAndLogError(ret != OK, ret, "@%s: init csi meta device failed", __func__); @@ -174,6 +193,9 @@ void CameraDevice::deinit() { mCsiMetaDevice->deinit(); // CSI_META_E +#ifdef LINUX_PRIVACY_MODE + mBackupProducer->deinit(); +#endif mProducer->deinit(); mState = DEVICE_UNINIT; @@ -239,6 +261,9 @@ void CameraDevice::bindListeners() { } mSofSource->registerListener(EVENT_ISYS_SOF, mRequestThread); +#ifdef LINUX_PRIVACY_MODE + mPrivacyShutter->registerListener(EVENT_INPUT_EVENT, this); +#endif // FILE_SOURCE_S if (PlatformData::isFileSourceEnabled()) { // File source needs to produce SOF event as well when it's enabled. @@ -281,6 +306,9 @@ void CameraDevice::unbindListeners() { mProducer->removeListener(EVENT_ISYS_FRAME, mRequestThread); } +#ifdef LINUX_PRIVACY_MODE + mPrivacyShutter->removeListener(EVENT_INPUT_EVENT, this); +#endif mSofSource->removeListener(EVENT_ISYS_SOF, mRequestThread); // FILE_SOURCE_S if (PlatformData::isFileSourceEnabled()) { @@ -318,6 +346,9 @@ int CameraDevice::configure(stream_config_t* streamList) { delete mProcessingUnit; mProcessingUnit = nullptr; mProducer->removeAllFrameAvailableListener(); +#ifdef LINUX_PRIVACY_MODE + mBackupProducer->removeAllFrameAvailableListener(); +#endif /* * The configure flow for CameraStream @@ -418,6 +449,17 @@ int CameraDevice::configure(stream_config_t* streamList) { ret = mProducer->configure(producerConfigs); CheckAndLogError(ret < 0, BAD_VALUE, "@%s Device Configure failed", __func__); +#ifdef LINUX_PRIVACY_MODE + int eventType = PlatformData::getPrivacyShutterEventType(mCameraId); + int eventCode = PlatformData::getPrivacyShutterEventCode(mCameraId); + if (eventType < 0 || eventCode < 0) { + LOG1("@%s Privacy shutter is not configured", __func__); + } else { + ret = mPrivacyShutter->configure(eventType, eventCode); + CheckAndLogError(ret < 0, ret, "@%s Privacy shutter configure failed", __func__); + } +#endif + // CSI_META_S ret = mCsiMetaDevice->configure(); CheckAndLogError(ret != OK, ret, "@%s failed to configure CSI meta device", __func__); @@ -451,7 +493,20 @@ int CameraDevice::configure(stream_config_t* streamList) { ret = mProcessingUnit->configure(producerConfigs, outputConfigs, configModes[0]); CheckAndLogError(ret != OK, ret, "@%s failed to configure ProcessingUnit", __func__); mProcessingUnit->setBufferProducer(mProducer); +#ifdef LINUX_PRIVACY_MODE + if (mPrivacyShutter->isConfigured()) { + ret = mBackupProducer->configure(outputConfigs); + CheckAndLogError(ret < 0, BAD_VALUE, "@%s Dummy image producer Configure failed", __func__); + } +#endif } +#ifdef LINUX_PRIVACY_MODE + } else { + if (mPrivacyShutter->isConfigured()) { + ret = mBackupProducer->configure(producerConfigs); + CheckAndLogError(ret < 0, BAD_VALUE, "@%s Dummy image producer Configure failed", __func__); + } +#endif } ret = bindStreams(streamList); @@ -760,21 +815,33 @@ int CameraDevice::start() { // Not protected by mDeviceLock because it is required in qbufL() mRequestThread->wait1stRequestDone(); - AutoMutex m(mDeviceLock); - CheckAndLogError(mState != DEVICE_BUFFER_READY, BAD_VALUE, "start camera in wrong status %d", - mState); - CheckAndLogError(mStreamNum == 0, BAD_VALUE, "@%s: device doesn't add any stream yet.", - __func__); + { + AutoMutex m(mDeviceLock); + CheckAndLogError(mState != DEVICE_BUFFER_READY, BAD_VALUE, + "start camera in wrong status %d", mState); + CheckAndLogError(mStreamNum == 0, BAD_VALUE, + "@%s: device doesn't add any stream yet.", __func__); + + mScheduler->start(); + const int ret = startLocked(); + if (ret != OK) { + LOGE("Camera device starts failed."); + (void)stopLocked(); // There is error happened, stop all related units. + return INVALID_OPERATION; + } - mScheduler->start(); - const int ret = startLocked(); - if (ret != OK) { - LOGE("Camera device starts failed."); - (void)stopLocked(); // There is error happened, stop all related units. - return INVALID_OPERATION; + mState = DEVICE_START; } - mState = DEVICE_START; +#ifdef LINUX_PRIVACY_MODE + if (mPrivacyShutter->isConfigured()) { + if (mPrivacyShutter->getValue() == 0) { + switchToBackup(); + } + mPrivacyShutter->start(); + } +#endif + return OK; } @@ -1002,6 +1069,72 @@ int CameraDevice::stopLocked() { return OK; } +#ifdef LINUX_PRIVACY_MODE +void CameraDevice::switchToNormal() { + LOG2("%s", __func__); + AutoMutex m(mDeviceLock); + + (void)mBackupProducer->stop(); + + mRequestThread->resetSequence(); + + mBackupProducer->removeListener(EVENT_ISYS_FRAME, mRequestThread); + mBackupProducer->removeListener(EVENT_ISYS_SOF, mRequestThread); + + mScheduler->start(); + if (mProcessingUnit != nullptr) { + mProcessingUnit->setBufferProducer(mProducer); + } + for (const auto& item : mStreamIdToPortMap) { + if (mProcessingUnit != nullptr) { + mStreams[item.first]->setBufferProducer(mProcessingUnit); + } else { + mStreams[item.first]->setBufferProducer(mProducer); + } + } + if (mProcessingUnit != nullptr) { + (void)mProcessingUnit->start(); + } + + (void)mProducer->start(); + + // CSI_META_S + (void)mCsiMetaDevice->start(); + // CSI_META_E + + (void)mSofSource->configure(); + (void)mSofSource->start(); + m3AControl->start(); +} + +void CameraDevice::switchToBackup() { + LOG2("%s", __func__); + AutoMutex m(mDeviceLock); + m3AControl->stop(); + + (void)mSofSource->stop(); + + // CSI_META_S + (void)mCsiMetaDevice->stop(); + // CSI_META_E + + (void)mProducer->stop(); + if (mProcessingUnit != nullptr) { + mProcessingUnit->stop(); + } + mScheduler->stop(); + mRequestThread->resetSequence(); + + mBackupProducer->registerListener(EVENT_ISYS_SOF, mRequestThread); + mBackupProducer->registerListener(EVENT_ISYS_FRAME, mRequestThread); + for (const auto& item : mStreamIdToPortMap) { + mStreams[item.first]->setBufferProducer(mBackupProducer); + } + + (void)mBackupProducer->start(); +} +#endif + void CameraDevice::handleEvent(EventData eventData) { LOG2("%s, event type:%d", __func__, eventData.type); @@ -1062,6 +1195,16 @@ void CameraDevice::handleEvent(EventData eventData) { break; } +#ifdef LINUX_PRIVACY_MODE + case EVENT_INPUT_EVENT: + if (eventData.data.inputEvent.value == 0) { + switchToBackup(); + } else { + switchToNormal(); + } + break; +#endif + default: LOGE("Not supported event type:%d", eventData.type); break; diff --git a/src/core/CameraDevice.h b/src/core/CameraDevice.h index f197960..63d937e 100644 --- a/src/core/CameraDevice.h +++ b/src/core/CameraDevice.h @@ -17,6 +17,9 @@ #pragma once #include "AiqUnit.h" #include "CameraStream.h" +#ifdef LINUX_PRIVACY_MODE +#include "InputEventMonitor.h" +#endif #include "IProcessingUnitFactory.h" #include "LensHw.h" #include "RequestThread.h" @@ -209,6 +212,10 @@ class CameraDevice : public EventListener { int startLocked(); int stopLocked(); +#ifdef LINUX_PRIVACY_MODE + void switchToNormal(); + void switchToBackup(); +#endif private: enum { @@ -228,6 +235,10 @@ class CameraDevice : public EventListener { std::map mStreamIdToPortMap; std::vector mSortedStreamIds; // Used to save sorted stream ids with descending order. StreamSource* mProducer; +#ifdef LINUX_PRIVACY_MODE + StreamSource* mBackupProducer; + InputEventMonitor* mPrivacyShutter; +#endif IProcessingUnit* mProcessingUnit; diff --git a/src/core/CameraEventType.h b/src/core/CameraEventType.h index 3b79bbd..224035b 100644 --- a/src/core/CameraEventType.h +++ b/src/core/CameraEventType.h @@ -39,6 +39,7 @@ enum EventType { EVENT_STAGE_BUF_READY, EVENT_PSYS_REQUEST_BUF_READY, EVENT_REQUEST_METADATA_READY, + EVENT_INPUT_EVENT, EVENT_TYPE_MAX, }; @@ -88,6 +89,12 @@ struct EventStageBufReady { int64_t sequence; }; +struct EventInputEvent { + int32_t type; + int32_t code; + int32_t value; +}; + struct EventData { EventData() : type(EVENT_ISYS_SOF), pipeType(-1) { CLEAR(data); } @@ -104,6 +111,7 @@ struct EventData { EventFrameAvailable frameDone; EventRequestReady requestReady; // use for returning metadata and shutter event EventStageBufReady stageBufReady; + EventInputEvent inputEvent; } data; }; diff --git a/src/core/CameraStream.cpp b/src/core/CameraStream.cpp index 99e2fb4..7107ddc 100644 --- a/src/core/CameraStream.cpp +++ b/src/core/CameraStream.cpp @@ -31,8 +31,10 @@ namespace icamera { CameraStream::CameraStream(int cameraId, int streamId, const stream_t& stream) : mCameraId(cameraId), mStreamId(streamId), - mPort(USER_DEFAULT_PORT_UID), - mBufferInProcessing(0) { +#ifndef LINUX_PRIVACY_MODE + mBufferInProcessing(0), +#endif + mPort(USER_DEFAULT_PORT_UID) { LOG2("@%s: streamid:%d automation checkpoint: %dx%d, format: %s", mCameraId, __func__, streamId, stream.width, CameraUtils::getInterlaceHeight(stream.field, stream.height), CameraUtils::pixelCode2String(stream.format)); @@ -54,7 +56,11 @@ int CameraStream::stop() { } AutoMutex poolLock(mBufferPoolLock); +#ifdef LINUX_PRIVACY_MODE + mBufferInProcessing.clear(); +#else mBufferInProcessing = 0; +#endif mInputBuffersPool.clear(); return OK; @@ -138,12 +144,52 @@ int CameraStream::qbuf(camera_buffer_t* ubuffer, int64_t sequence, bool addExtra ret = mBufferProducer->qbuf(mPort, camBuffer); if (ret == OK) { AutoMutex l(mBufferPoolLock); +#ifdef LINUX_PRIVACY_MODE + // Add buffer to processing container + mBufferInProcessing.push_back(camBuffer); +#else mBufferInProcessing++; +#endif } } return ret; } +#ifdef LINUX_PRIVACY_MODE +// This function is called in stop status, no lock +void CameraStream::setBufferProducer(BufferProducer* producer) { + BufferProducer* oldProducer = mBufferProducer; + + // If we had a previous producer, remove ourselves as a listener + if (oldProducer != nullptr) { + oldProducer->removeFrameAvailableListener(this); + } + + mBufferProducer = producer; + + if (producer != nullptr) { + producer->addFrameAvailableListener(this); + + // If we had a previous producer and there are buffers being processed, + // transfer them to the new producer + if (oldProducer != nullptr) { + AutoMutex l(mBufferPoolLock); + // Queue all processing buffers to the new producer + for (auto& buffer : mBufferInProcessing) { + int ret = producer->qbuf(mPort, buffer); + if (ret == OK) { + LOG2("@%s: Transferred buffer %p to new producer", + mCameraId, __func__, buffer.get()); + } else { + LOGE("@%s: Failed to transfer buffer %p to new producer, ret=%d", + mCameraId, __func__, buffer.get(), ret); + } + } + } + } +} +#endif + int CameraStream::onBufferAvailable(uuid port, const shared_ptr& camBuffer) { // Ignore if the buffer is not for this stream. if (mPort != port) { @@ -176,10 +222,20 @@ int CameraStream::onBufferAvailable(uuid port, const shared_ptr& c camBuffer->getVirtualChannel()); AutoMutex l(mBufferPoolLock); +#ifdef LINUX_PRIVACY_MODE + // Remove buffer from processing container + auto it = std::find(mBufferInProcessing.begin(), mBufferInProcessing.end(), camBuffer); + if (it != mBufferInProcessing.end()) { + mBufferInProcessing.erase(it); + } + + LOG2("%s, buffer in processing: %zu for stream: %p", __func__, mBufferInProcessing.size(), this); +#else if (mBufferInProcessing > 0) { mBufferInProcessing--; } LOG2("%s, buffer in processing: %d for stream: %p", __func__, mBufferInProcessing, this); +#endif return OK; } diff --git a/src/core/CameraStream.h b/src/core/CameraStream.h index ac2d129..ddd3a7e 100644 --- a/src/core/CameraStream.h +++ b/src/core/CameraStream.h @@ -15,6 +15,8 @@ */ #pragma once +#include + #include "ParamDataType.h" #include "BufferQueue.h" #include "CameraBuffer.h" @@ -73,6 +75,9 @@ class CameraStream : public BufferConsumer, public EventSource { * \brief The notify when polled or processed one frame buffer */ virtual int onBufferAvailable(uuid port, const std::shared_ptr& camBuffer); +#ifdef LINUX_PRIVACY_MODE + virtual void setBufferProducer(BufferProducer* producer); +#endif private: std::shared_ptr userBufferToCameraBuffer(camera_buffer_t* ubuffer); @@ -80,13 +85,21 @@ class CameraStream : public BufferConsumer, public EventSource { protected: int mCameraId; int mStreamId; - uuid mPort; // Guard for member mInputBuffersPool and mBufferInProcessing Mutex mBufferPoolLock; CameraBufVector mInputBuffersPool; + +#ifdef LINUX_PRIVACY_MODE + // Container to track buffers currently being processed by this CameraStream + // These buffers are queued via qbuf and removed when onFrameAvailable is called + CameraBufVector mBufferInProcessing; +#else // How many user buffers are currently processing underhood. int mBufferInProcessing; +#endif + + uuid mPort; }; } // namespace icamera diff --git a/src/core/FileSource.cpp b/src/core/FileSource.cpp index 187f91d..6440dde 100644 --- a/src/core/FileSource.cpp +++ b/src/core/FileSource.cpp @@ -672,4 +672,28 @@ void FileSourceFromDir::fillFrameBuffer(void* addr, size_t bufferSize, uint32_t file.read(reinterpret_cast(addr), std::min(fileSize, bufferSize)); } +int DummyImageSource::init() { + int ret = FileSource::init(); + + mInjectedFile = mCameraConfigPath + "test.yuv"; + mInjectionWay = USING_FRAME_FILE; + + return ret; +} + +int DummyImageSource::configure(const std::map& outputFrames) { + int ret = FileSource::configure(outputFrames); + + if (!outputFrames.empty()) { + const stream_t& stream = outputFrames.begin()->second; + std::string format = CameraUtils::format2string(stream.format); + std::transform(format.begin(), format.end(), format.begin(), + [](unsigned char c) { return std::tolower(c); }); + mInjectedFile = mCameraConfigPath + "dummy_" + std::to_string(stream.width) + "x" + + std::to_string(stream.height) + "." + format; + } + + return ret; +} + } // end of namespace icamera diff --git a/src/core/FileSource.h b/src/core/FileSource.h index ece8f02..6ae9e59 100644 --- a/src/core/FileSource.h +++ b/src/core/FileSource.h @@ -18,6 +18,7 @@ #include "StreamSource.h" #include "iutils/Thread.h" +#include "PlatformData.h" namespace icamera { @@ -67,6 +68,18 @@ class FileSource : public StreamSource { void notifyFrame(std::map> buffers); void notifySofEvent(); + protected: + float mFps; + std::string mInjectedFile; // The injected file can be a actual frame or a XML config file. + enum { + USING_FRAME_FILE = + 0, // If mInjectedFile is a frame file name, it means we're using frame file. + USING_CONFIG_FILE, // If mInjectedFile ends with ".xml", it means we're using config file. + USING_INJECTION_PATH, // If mInjectedFile is a directory, it means we're using injection + // path. + UNKNOWN_INJECTED_WAY // Error way + } mInjectionWay; + private: class ProduceThread : public Thread { FileSource* mFileSrc; @@ -88,19 +101,7 @@ class FileSource : public StreamSource { ProduceThread* mProduceThread; int mCameraId; bool mExitPending; - - float mFps; int64_t mSequence; - std::string mInjectedFile; // The injected file can be a actual frame or a XML config file. - enum { - USING_FRAME_FILE = - 0, // If mInjectedFile is a frame file name, it means we're using frame file. - USING_CONFIG_FILE, // If mInjectedFile ends with ".xml", it means we're using config file. - USING_INJECTION_PATH, // If mInjectedFile is a directory, it means we're using injection - // path. - UNKNOWN_INJECTED_WAY // Error way - } mInjectionWay; - stream_t mStreamConfig; std::set mOutputPorts; @@ -182,4 +183,18 @@ class FileSourceFromDir { std::vector mInjectionFiles; }; +class DummyImageSource : public FileSource { + public: + explicit DummyImageSource(int cameraId) : + FileSource(cameraId), + mCameraConfigPath(PlatformData::getCameraCfgPath()) {} + ~DummyImageSource() {} + + virtual int init() override; + virtual int configure(const std::map& outputFrames) override; + + public: + const std::string mCameraConfigPath; +}; + } // namespace icamera diff --git a/src/core/InputEventMonitor.cpp b/src/core/InputEventMonitor.cpp new file mode 100644 index 0000000..7e51d17 --- /dev/null +++ b/src/core/InputEventMonitor.cpp @@ -0,0 +1,229 @@ +/* + * Copyright (C) 2025 Intel Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG InputEventMonitor + +#include "Errors.h" +#include "InputEventMonitor.h" +#include "iutils/CameraLog.h" + +#include +#include +#include +#include +#include +#include + +namespace icamera { + +static const struct EventIoctlMode { + uint32_t type; + uint32_t max; + uint32_t rq; +} EVENTIOCTLMODES[] = { + { EV_KEY, KEY_MAX, EVIOCGKEY(KEY_MAX) }, + { EV_LED, LED_MAX, EVIOCGLED(LED_MAX) }, + { EV_SND, SND_MAX, EVIOCGSND(SND_MAX) }, + { EV_SW, SW_MAX, EVIOCGSW(SW_MAX) }, +}; + +static const uint8_t U32_BITS = sizeof(uint32_t) * 8; + +InputEventMonitor::InputEventMonitor() : mCheckThread(nullptr), + mEventType(-1), + mEventCode(-1), + mFd(-1), + mValue(-1) { + mCheckThread = new WorkThread(this); +} + +InputEventMonitor::~InputEventMonitor() { + if (nullptr != mCheckThread) { + delete mCheckThread; + mCheckThread = nullptr; + } + if (mFd >= 0) { + ::close(mFd); + } +} + +int InputEventMonitor::configure(int eventType, int eventCode) { + AutoMutex l(mLock); + if (eventType < 0 || eventCode < 0) { + LOGE("Invalid event type %d code %d", eventType, eventCode); + return BAD_VALUE; + } + + DIR *dir = ::opendir("/dev/input/"); + if (!dir) { + LOGE("Unable to open input directory"); + return BAD_VALUE; + } + + struct dirent *entry; + while ((entry = readdir(dir)) != NULL) { + if (strncmp(entry->d_name, "event", 5) == 0) { + std::string devicePath = std::string("/dev/input/") + entry->d_name; + if (checkDeviceCapabilities(devicePath, eventType, eventCode)) { + int status = ::open(devicePath.c_str(), O_RDONLY); + if (status >= 0) { + mFd = status; + mEventType = eventType; + mEventCode = eventCode; + for (uint32_t i = 0; i < sizeof(EVENTIOCTLMODES); ++i) { + if (mEventType == EVENTIOCTLMODES[i].type) { + mEventIoctlModesIndex = i; + break; + } + } + LOG1("Use %s for event type %d code %d", devicePath.c_str(), eventType, + eventCode); + status = readRawValue(); + } else { + LOGE("open %s fail: %d", devicePath.c_str(), status); + } + ::closedir(dir); + return status; + } + } + } + + ::closedir(dir); + LOG1("No device support event type %d code %d", eventType, eventCode); + return NO_ENTRY; +} + +int InputEventMonitor::getValue() { + AutoMutex l(mLock); + return mValue; +} + +int InputEventMonitor::readRawValue() { + // Only used inside locked context so no need to get lock again + if (mFd < 0 || mEventType < 0 || mEventCode < 0) return -1; + + int status = -1; + uint32_t bits = EVENTIOCTLMODES[mEventIoctlModesIndex].max; + uint32_t req = EVENTIOCTLMODES[mEventIoctlModesIndex].rq; + uint32_t codeBits[bits / U32_BITS + 1]; + + memset(codeBits, 0, sizeof(codeBits)); + status = ioctl(mFd, req, codeBits); + if (status >= 0) { + mValue = (codeBits[mEventCode / U32_BITS] & (1UL << (mEventCode % U32_BITS)) != 0U) ? 1 : 0; + } + + return status; +} + +int InputEventMonitor::start() { + AutoMutex l(mLock); + int status = readRawValue(); + if (status < 0) { + LOGE("read initial value fail: %d", status); + return status; + } + mCheckThread->start(); + return OK; +} + +int InputEventMonitor::stop() { + { + AutoMutex l(mLock); + mCheckThread->exit(); + } + mCheckThread->wait(); + return OK; +} + +bool InputEventMonitor::check() { + if (mFd < 0 || mEventType < 0 || mEventCode < 0) { + return false; + } + + struct pollfd pfd = {mFd, POLLIN}; + int status = ::poll(&pfd, 1, 33); + if (status < 0) { + LOGE("poll fd %d error: %d", mFd, status); + return false; + } + if (status == 0) { + // timeout + return true; + } + + struct input_event ev; + CLEAR(ev); + ssize_t n = read(mFd, &ev, sizeof(struct input_event)); + if (n <= 0) { + LOGE("read event fail: %lld", n); + } else { + if (ev.type == mEventType && ev.code == mEventCode) { + LOG1("read input event value %d", ev.value); + { + AutoMutex l(mLock); + if (ev.value != mValue) { + mValue = ev.value; + EventData e; + e.type = EVENT_INPUT_EVENT; + e.buffer = nullptr; + e.data.inputEvent = {ev.type, ev.code, ev.value}; + EventSource::notifyListeners(e); + } + } + } + } + + return true; +} + +bool InputEventMonitor::checkDeviceCapabilities(const std::string &device, const int eventType, const int eventCode) { + LOG1("check if %s supports event type %d code %d", device.c_str(), eventType, eventCode); + bool ret = false; + + int status = ::open(device.c_str(), O_RDONLY); + CheckAndLogError(status < 0, status, "open device %s fail: %d", device.c_str(), status); + const int fd = status; + + // To store event type bitmap + uint32_t typeBits[EV_MAX / U32_BITS + 1]; + memset(typeBits, 0, sizeof(typeBits)); + + // To store event code bitmap + uint32_t codeBits[KEY_MAX / U32_BITS + 1]; + memset(codeBits, 0, sizeof(codeBits)); + + status = ioctl(fd, EVIOCGBIT(0, EV_MAX), typeBits); + CheckAndClean(status < 0, status, ::close(fd), "%s query event types fail: %d", device.c_str(), status); + + if ((typeBits[eventType / U32_BITS] & (1U << (eventType % U32_BITS))) != 0U) { + status = ioctl(fd, EVIOCGBIT(eventType, KEY_MAX), codeBits); + CheckAndClean(status < 0, status, ::close(fd), "%s query key event codes fail: %d", device.c_str(), status); + + if ((codeBits[eventCode / U32_BITS] & (1U << (eventCode % U32_BITS))) != 0U) { + ret = true; + } + } + + ::close(fd); + return ret; +} + +bool InputEventMonitor::isConfigured() const { + return mFd >= 0; +} + +} // namespace icamera \ No newline at end of file diff --git a/src/core/InputEventMonitor.h b/src/core/InputEventMonitor.h new file mode 100644 index 0000000..a09ea6f --- /dev/null +++ b/src/core/InputEventMonitor.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2025 Intel Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INPUT_EVENT_MONITOR_H +#define INPUT_EVENT_MONITOR_H + +#include "CameraEvent.h" +#include "iutils/Thread.h" + +#include +#include + +namespace icamera { + +class InputEventMonitor : public EventSource { + public: + InputEventMonitor(); + virtual ~InputEventMonitor(); + virtual int configure(int eventType, int eventCode); + virtual int start(); + virtual int stop(); + virtual int getValue(); + virtual bool isConfigured() const; + + private: + bool check(); + bool checkDeviceCapabilities(const std::string &device, const int eventType, const int eventCode); + int readRawValue(); + + private: + class WorkThread : public Thread { + InputEventMonitor* mInputEventMonitor; + + public: + explicit WorkThread(InputEventMonitor* _s) : mInputEventMonitor(_s) {} + + virtual void run() { + bool ret = true; + while (ret) { + ret = threadLoop(); + } + } + + private: + virtual bool threadLoop() { return mInputEventMonitor->check(); } + }; + + WorkThread* mCheckThread; + Mutex mLock; + int32_t mEventType; + int32_t mEventCode; + uint32_t mEventIoctlModesIndex; + int32_t mFd; + int32_t mValue; +}; + +} // namespace icamera + +#endif // INPUT_EVENT_MONITOR_H \ No newline at end of file diff --git a/src/core/IpuPacAdaptor.h b/src/core/IpuPacAdaptor.h index c60836f..0ece9af 100644 --- a/src/core/IpuPacAdaptor.h +++ b/src/core/IpuPacAdaptor.h @@ -30,7 +30,7 @@ #include "IspSettings.h" #ifdef IPA_SANDBOXING -#include "CcaClient.h" +#include "IntelCcaWorker.h" #else #include "modules/algowrapper/IntelCca.h" #endif diff --git a/src/core/RequestThread.cpp b/src/core/RequestThread.cpp index ebf1308..dee44ee 100644 --- a/src/core/RequestThread.cpp +++ b/src/core/RequestThread.cpp @@ -73,6 +73,23 @@ void RequestThread::requestStop() { Thread::wait(); } +#ifdef LINUX_PRIVACY_MODE +void RequestThread::resetSequence() { + AutoMutex l(mPendingReqLock); + mLastCcaId = -1; + mLastEffectSeq = -1; + mLastAppliedSeq = -1; + mLastSofSeq = -1; + mBlockRequest = false; + for (size_t i = 0; i < mPendingRequests.size(); ++i) { + auto &req = mPendingRequests[i]; + req.mBuffer[0]->sequence = i; + req.mBuffer[0]->frameNumber = i; + } + LOG2("%s: reset processing state", __func__); +} +#endif + void RequestThread::clearRequests() { LOG1("%s", __func__); diff --git a/src/core/RequestThread.h b/src/core/RequestThread.h index 8a6e028..2929f4c 100644 --- a/src/core/RequestThread.h +++ b/src/core/RequestThread.h @@ -38,6 +38,13 @@ class RequestThread : public Thread, public EventSource, public EventListener { virtual void handleEvent(EventData eventData); +#ifdef LINUX_PRIVACY_MODE + /** + * \brief Reset request processing state. + */ + void resetSequence(); +#endif + /** * \Clear pending requests. */ diff --git a/src/iutils/ModuleTags.cpp b/src/iutils/ModuleTags.cpp index baf030d..7b501e4 100644 --- a/src/iutils/ModuleTags.cpp +++ b/src/iutils/ModuleTags.cpp @@ -54,7 +54,6 @@ const char* tagNames[] = { "Camera3HAL", "Camera3HALModule", "CameraBuffer", - "CameraBufferPool", "CameraContext", "CameraDevice", "CameraDump", @@ -103,10 +102,10 @@ const char* tagNames[] = { "IFaceDetection", "IPCIntelCca", "IPC_FACE_DETECTION", - "IPipeManagerFactory", "IProcessingUnitFactory", "ImageProcessorCore", "ImageScalerCore", + "InputEventMonitor", "Intel3AParameter", "IntelAEStateMachine", "IntelAFStateMachine", @@ -118,6 +117,7 @@ const char* tagNames[] = { "IntelCca", "IntelCcaClient", "IntelCcaServer", + "IntelCcaWorker", "IntelFDServer", "IntelFaceDetection", "IntelFaceDetectionClient", diff --git a/src/iutils/ModuleTags.h b/src/iutils/ModuleTags.h index 48bdf33..c42f7bc 100644 --- a/src/iutils/ModuleTags.h +++ b/src/iutils/ModuleTags.h @@ -61,70 +61,70 @@ enum ModuleTags { GENERATED_TAGS_Camera3HAL = 32, GENERATED_TAGS_Camera3HALModule = 33, GENERATED_TAGS_CameraBuffer = 34, - GENERATED_TAGS_CameraBufferPool = 35, - GENERATED_TAGS_CameraContext = 36, - GENERATED_TAGS_CameraDevice = 37, - GENERATED_TAGS_CameraDump = 38, - GENERATED_TAGS_CameraEvent = 39, - GENERATED_TAGS_CameraHal = 40, - GENERATED_TAGS_CameraLog = 41, - GENERATED_TAGS_CameraMetadata = 42, - GENERATED_TAGS_CameraParserInvoker = 43, - GENERATED_TAGS_CameraSensorsParser = 44, - GENERATED_TAGS_CameraShm = 45, - GENERATED_TAGS_CameraStream = 46, - GENERATED_TAGS_CaptureUnit = 47, - GENERATED_TAGS_ColorConverter = 48, - GENERATED_TAGS_CsiMetaDevice = 49, - GENERATED_TAGS_Customized3A = 50, - GENERATED_TAGS_CustomizedAic = 51, - GENERATED_TAGS_DeviceBase = 52, - GENERATED_TAGS_Dvs = 53, - GENERATED_TAGS_EXIFMaker = 54, - GENERATED_TAGS_EXIFMetaData = 55, - GENERATED_TAGS_ExifCreator = 56, - GENERATED_TAGS_FaceDetection = 57, - GENERATED_TAGS_FaceDetectionPVL = 58, - GENERATED_TAGS_FaceSSD = 59, - GENERATED_TAGS_FaceStage = 60, - GENERATED_TAGS_FileSource = 61, - GENERATED_TAGS_GPUPostProcessor = 62, - GENERATED_TAGS_GPUPostStage = 63, - GENERATED_TAGS_GenGfx = 64, - GENERATED_TAGS_GraphConfig = 65, - GENERATED_TAGS_GraphConfigManager = 66, - GENERATED_TAGS_GraphUtils = 67, - GENERATED_TAGS_HAL_FACE_DETECTION_TEST = 68, - GENERATED_TAGS_HAL_basic = 69, - GENERATED_TAGS_HAL_inset_portrait = 70, - GENERATED_TAGS_HAL_jpeg = 71, - GENERATED_TAGS_HAL_multi_streams_test = 72, - GENERATED_TAGS_HAL_rotation_test = 73, - GENERATED_TAGS_HAL_supported_streams_test = 74, - GENERATED_TAGS_HAL_yuv = 75, - GENERATED_TAGS_HalAdaptor = 76, - GENERATED_TAGS_HalV3Utils = 77, - GENERATED_TAGS_I3AControlFactory = 78, - GENERATED_TAGS_ICBMThread = 79, - GENERATED_TAGS_ICamera = 80, - GENERATED_TAGS_IFaceDetection = 81, - GENERATED_TAGS_IPCIntelCca = 82, - GENERATED_TAGS_IPC_FACE_DETECTION = 83, - GENERATED_TAGS_IPipeManagerFactory = 84, - GENERATED_TAGS_IProcessingUnitFactory = 85, - GENERATED_TAGS_ImageProcessorCore = 86, - GENERATED_TAGS_ImageScalerCore = 87, - GENERATED_TAGS_Intel3AParameter = 88, - GENERATED_TAGS_IntelAEStateMachine = 89, - GENERATED_TAGS_IntelAFStateMachine = 90, - GENERATED_TAGS_IntelAWBStateMachine = 91, - GENERATED_TAGS_IntelAlgoClient = 92, - GENERATED_TAGS_IntelAlgoCommonClient = 93, - GENERATED_TAGS_IntelAlgoServer = 94, - GENERATED_TAGS_IntelCPUAlgoServer = 95, - GENERATED_TAGS_IntelCca = 96, - GENERATED_TAGS_IntelCcaClient = 97, - GENERATED_TAGS_IntelCcaServer = 98, + GENERATED_TAGS_CameraContext = 35, + GENERATED_TAGS_CameraDevice = 36, + GENERATED_TAGS_CameraDump = 37, + GENERATED_TAGS_CameraEvent = 38, + GENERATED_TAGS_CameraHal = 39, + GENERATED_TAGS_CameraLog = 40, + GENERATED_TAGS_CameraMetadata = 41, + GENERATED_TAGS_CameraParserInvoker = 42, + GENERATED_TAGS_CameraSensorsParser = 43, + GENERATED_TAGS_CameraShm = 44, + GENERATED_TAGS_CameraStream = 45, + GENERATED_TAGS_CaptureUnit = 46, + GENERATED_TAGS_ColorConverter = 47, + GENERATED_TAGS_CsiMetaDevice = 48, + GENERATED_TAGS_Customized3A = 49, + GENERATED_TAGS_CustomizedAic = 50, + GENERATED_TAGS_DeviceBase = 51, + GENERATED_TAGS_Dvs = 52, + GENERATED_TAGS_EXIFMaker = 53, + GENERATED_TAGS_EXIFMetaData = 54, + GENERATED_TAGS_ExifCreator = 55, + GENERATED_TAGS_FaceDetection = 56, + GENERATED_TAGS_FaceDetectionPVL = 57, + GENERATED_TAGS_FaceSSD = 58, + GENERATED_TAGS_FaceStage = 59, + GENERATED_TAGS_FileSource = 60, + GENERATED_TAGS_GPUPostProcessor = 61, + GENERATED_TAGS_GPUPostStage = 62, + GENERATED_TAGS_GenGfx = 63, + GENERATED_TAGS_GraphConfig = 64, + GENERATED_TAGS_GraphConfigManager = 65, + GENERATED_TAGS_GraphUtils = 66, + GENERATED_TAGS_HAL_FACE_DETECTION_TEST = 67, + GENERATED_TAGS_HAL_basic = 68, + GENERATED_TAGS_HAL_inset_portrait = 69, + GENERATED_TAGS_HAL_jpeg = 70, + GENERATED_TAGS_HAL_multi_streams_test = 71, + GENERATED_TAGS_HAL_rotation_test = 72, + GENERATED_TAGS_HAL_supported_streams_test = 73, + GENERATED_TAGS_HAL_yuv = 74, + GENERATED_TAGS_HalAdaptor = 75, + GENERATED_TAGS_HalV3Utils = 76, + GENERATED_TAGS_I3AControlFactory = 77, + GENERATED_TAGS_ICBMThread = 78, + GENERATED_TAGS_ICamera = 79, + GENERATED_TAGS_IFaceDetection = 80, + GENERATED_TAGS_IPCIntelCca = 81, + GENERATED_TAGS_IPC_FACE_DETECTION = 82, + GENERATED_TAGS_IProcessingUnitFactory = 83, + GENERATED_TAGS_ImageProcessorCore = 84, + GENERATED_TAGS_ImageScalerCore = 85, + GENERATED_TAGS_InputEventMonitor = 86, + GENERATED_TAGS_Intel3AParameter = 87, + GENERATED_TAGS_IntelAEStateMachine = 88, + GENERATED_TAGS_IntelAFStateMachine = 89, + GENERATED_TAGS_IntelAWBStateMachine = 90, + GENERATED_TAGS_IntelAlgoClient = 91, + GENERATED_TAGS_IntelAlgoCommonClient = 92, + GENERATED_TAGS_IntelAlgoServer = 93, + GENERATED_TAGS_IntelCPUAlgoServer = 94, + GENERATED_TAGS_IntelCca = 95, + GENERATED_TAGS_IntelCcaClient = 96, + GENERATED_TAGS_IntelCcaServer = 97, + GENERATED_TAGS_IntelCcaWorker = 98, GENERATED_TAGS_IntelFDServer = 99, GENERATED_TAGS_IntelFaceDetection = 100, GENERATED_TAGS_IntelFaceDetectionClient = 101, diff --git a/src/platformdata/CameraSensorsParser.cpp b/src/platformdata/CameraSensorsParser.cpp index 49f4238..4212ae4 100644 --- a/src/platformdata/CameraSensorsParser.cpp +++ b/src/platformdata/CameraSensorsParser.cpp @@ -63,6 +63,29 @@ void CameraSensorsParser::parseMediaCtlConfigSection(const Json::Value& node) { mc.format = CameraUtils::string2PixelCode(cfg["format"].asString().c_str()); } +// VIRTUAL_CHANNEL_S + if (cfg.isMember("sensorCommonConfig")) { + if (mc.mcId == -1) { + LOGW("%s, pls place sensorCommonConfig after id in MediaCtlConfig of %s!", __func__, + mCurCam->sensorName.c_str()); + } else { + for (auto it = mStaticCfg->mCameras.rbegin(); it != mStaticCfg->mCameras.rend(); + ++it) { + if (!it->sensorName.compare(cfg["sensorCommonConfig"].asString())) { + for (auto& mc_ : it->mMediaCtlConfs) { + if (mc_.mcId == mc.mcId) { + mc.formats.insert(mc.formats.end(), mc_.formats.begin(), + mc_.formats.end()); + mc.links.insert(mc.links.end(), mc_.links.begin(), mc_.links.end()); + mc.routings.insert(mc_.routings.begin(), mc_.routings.end()); + } + } + } + } + } + } + +// VIRTUAL_CHANNEL_E if (cfg.isMember("formats")) { parseMediaCtlConfigFormatsObject(cfg["formats"], &mc); } @@ -898,6 +921,14 @@ void CameraSensorsParser::parseSensorSection(const Json::Value& node) { if (node.isMember("usePSysProcessor")) { mCurCam->mUsePSysProcessor = node["usePSysProcessor"].asBool(); } +#ifdef LINUX_PRIVACY_MODE + if (node.isMember("privacyShutterEventType")) { + mCurCam->mPrivacyShutterEventType = node["privacyShutterEventType"].asInt(); + } + if (node.isMember("privacyShutterEventCode")) { + mCurCam->mPrivacyShutterEventCode = node["privacyShutterEventCode"].asInt(); + } +#endif } void CameraSensorsParser::resolveCsiPortAndI2CBus() { diff --git a/src/platformdata/PlatformData.cpp b/src/platformdata/PlatformData.cpp index 32d79c4..7e25e61 100644 --- a/src/platformdata/PlatformData.cpp +++ b/src/platformdata/PlatformData.cpp @@ -1447,4 +1447,13 @@ bool PlatformData::isUsePSysProcessor(int cameraId) { return getInstance()->mStaticCfg.mCameras[cameraId].mUsePSysProcessor; } +#ifdef LINUX_PRIVACY_MODE +int PlatformData::getPrivacyShutterEventCode(int cameraId) { + return getInstance()->mStaticCfg.mCameras[cameraId].mPrivacyShutterEventCode; +} + +int PlatformData::getPrivacyShutterEventType(int cameraId) { + return getInstance()->mStaticCfg.mCameras[cameraId].mPrivacyShutterEventType; +} +#endif } // namespace icamera diff --git a/src/platformdata/PlatformData.h b/src/platformdata/PlatformData.h index 5850fc8..8f1f84d 100644 --- a/src/platformdata/PlatformData.h +++ b/src/platformdata/PlatformData.h @@ -246,6 +246,10 @@ class PlatformData { mRemoveCacheFlushOutputBuffer(false), mPLCEnable(false), mStillOnlyPipe(false), +#ifdef LINUX_PRIVACY_MODE + mPrivacyShutterEventType(-1), + mPrivacyShutterEventCode(-1), +#endif mUsePSysProcessor(true) { } @@ -355,6 +359,10 @@ class PlatformData { bool mRemoveCacheFlushOutputBuffer; bool mPLCEnable; bool mStillOnlyPipe; +#ifdef LINUX_PRIVACY_MODE + int mPrivacyShutterEventType; + int mPrivacyShutterEventCode; +#endif bool mUsePSysProcessor; StaticMetadata mStaticMetadata; @@ -1503,5 +1511,10 @@ class PlatformData { */ static bool isUsePSysProcessor(int cameraId); +#ifdef LINUX_PRIVACY_MODE + static int getPrivacyShutterEventType(int cameraId); + static int getPrivacyShutterEventCode(int cameraId); +#endif + }; } /* namespace icamera */ diff --git a/src/v4l2/MediaControl.cpp b/src/v4l2/MediaControl.cpp index 10b6453..c81b19e 100644 --- a/src/v4l2/MediaControl.cpp +++ b/src/v4l2/MediaControl.cpp @@ -128,6 +128,10 @@ void MediaControl::releaseInstance() { MediaControl::MediaControl(const char* devName) : mDevName(devName) { LOG1("@%s device: %s", __func__, devName); +// VIRTUAL_CHANNEL_S + + mIsMediaCtlSetup = false; +// VIRTUAL_CHANNEL_E int ret = initEntities(); CheckAndLogError(ret, VOID_VALUE, "Failed to init entities"); @@ -687,14 +691,16 @@ void MediaControl::setMediaMcCtl(int cameraId, vector ctls) { int MediaControl::setMediaMcLink(vector links) { for (auto& link : links) { - LOG1("setup Link %s [%d:%d] ==> %s [%dx%d] enable %d.", link.srcEntityName.c_str(), - link.srcEntity, link.srcPad, link.sinkEntityName.c_str(), link.sinkEntity, - link.sinkPad, link.enable); int ret = setupLink(link.srcEntity, link.srcPad, link.sinkEntity, link.sinkPad, link.enable); - CheckAndLogError(ret < 0, ret, "setup Link %s [%d:%d] ==> %s [%dx%d] enable %d failed.", - link.srcEntityName.c_str(), link.srcEntity, link.srcPad, - link.sinkEntityName.c_str(), link.sinkEntity, link.sinkPad, link.enable); + if (ret < 0) + LOGW("failed to setup Link %s [%d:%d] ==> %s [%d:%d] %s.", link.srcEntityName.c_str(), + link.srcEntity, link.srcPad, link.sinkEntityName.c_str(), link.sinkEntity, + link.sinkPad, link.enable ? "enable" : "disable"); + else + LOG1("succeed to setup Link %s [%d:%d] ==> %s [%d:%d] %s.", link.srcEntityName.c_str(), + link.srcEntity, link.srcPad, link.sinkEntityName.c_str(), link.sinkEntity, + link.sinkPad, link.enable ? "enable" : "disable"); } return OK; } @@ -827,6 +833,12 @@ int MediaControl::setRouting(int cameraId, MediaCtlConf* mc, bool enableRouting) for (auto& routing : mc->routings) { LOG1(" route entity:%s:", cameraId, routing.first.c_str()); + + string subDeviceNodeName; + CameraUtils::getSubDeviceName(routing.first.c_str(), subDeviceNodeName); + if (subDeviceNodeName.empty()) continue; + V4L2Subdevice* subDev = V4l2DeviceFactory::getSubDev(cameraId, subDeviceNodeName); + int num = routing.second.size(); v4l2_subdev_route* routes = new v4l2_subdev_route[num]; CheckAndLogError(!routes, NO_MEMORY, "Failed to alloc routes"); @@ -841,9 +853,6 @@ int MediaControl::setRouting(int cameraId, MediaCtlConf* mc, bool enableRouting) routes[i] = r; } - string subDeviceNodeName; - CameraUtils::getSubDeviceName(routing.first.c_str(), subDeviceNodeName); - V4L2Subdevice* subDev = V4l2DeviceFactory::getSubDev(cameraId, subDeviceNodeName); int ret = subDev->SetRouting(routes, num); delete[] routes; CheckAndLogError(ret != 0, ret, "setRouting fail, ret:%d", ret); @@ -852,11 +861,75 @@ int MediaControl::setRouting(int cameraId, MediaCtlConf* mc, bool enableRouting) return OK; } +// VIRTUAL_CHANNEL_S +int MediaControl::setVideoNodeFormat(struct V4L2VideoNode* device, const stream_t* config) { + PERF_CAMERA_ATRACE(); + + struct v4l2_format v4l2fmt; + v4l2fmt.fmt.pix_mp.field = config->field; + + v4l2fmt.fmt.pix.width = config->width; + v4l2fmt.fmt.pix.height = config->height; + v4l2fmt.fmt.pix.pixelformat = config->format; + v4l2fmt.fmt.pix.bytesperline = config->width; + v4l2fmt.fmt.pix.sizeimage = 0; + + v4l2fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + V4L2Format tmpbuf{v4l2fmt}; + int ret = device->SetFormat(tmpbuf); + CheckAndLogError(ret != OK, ret, "set v4l2 format failed ret=%d", ret); + return ret; +} + +int MediaControl::setVideoNodesFormat(MediaCtlConf* mc, int field) { + int ret = OK; + + for (auto& link : mc->links) { + if (link.sinkEntity < 0) continue; + MediaEntity* entity = getEntityById(link.sinkEntity); + CheckAndLogError(!entity, -EINVAL, "@%s, failed to get video entity!", __func__); + + if (entity->info.type == MEDIA_ENT_T_V4L2_VIDEO) { + stream_t config; + + config.field = field; + config.width = mc->outputWidth; + config.height = mc->outputHeight; + config.format = mc->format; + V4L2VideoNode* device = new V4L2VideoNode(entity->devname); + CheckAndLogError(!device, -EINVAL, "@%s %s: failed to create video device!", __func__, + entity->devname); + ret = device->Open(O_RDWR); + CheckAndLogError(ret != OK, ret, "@%s %s: failed to open video device!", __func__, + entity->devname); + ret = setVideoNodeFormat(device, &config); + delete device; + CheckAndLogError(ret != OK, ret, "@%s %s: set video node format failed ret=%d", + __func__, entity->devname, ret); + } + } + + return ret; +} + +// VIRTUAL_CHANNEL_E int MediaControl::mediaCtlSetup(int cameraId, MediaCtlConf* mc, int width, int height, int field) { LOG1(" %s", cameraId, __func__); /* Setup controls in format Configuration */ setMediaMcCtl(cameraId, mc->ctls); +// VIRTUAL_CHANNEL_S + AutoMutex lock(sLock); + + if (!mc->routings.empty()) { + if (mIsMediaCtlSetup) { + return OK; + } else { + mIsMediaCtlSetup = true; + } + } + +// VIRTUAL_CHANNEL_E int ret = OK; // VIRTUAL_CHANNEL_S ret = setRouting(cameraId, mc, true); @@ -876,6 +949,11 @@ int MediaControl::mediaCtlSetup(int cameraId, MediaCtlConf* mc, int width, int h ret = setMediaMcLink(mc->links); CheckAndLogError(ret != OK, ret, "set MediaCtlConf McLink failed: ret = %d", ret); +// VIRTUAL_CHANNEL_S + ret = setVideoNodesFormat(mc, field); + CheckAndLogError(ret != OK, ret, "set video nodes format failed: ret = %d", ret); + +// VIRTUAL_CHANNEL_E // DUMP_ENTITY_TOPOLOGY_S dumpEntityTopology(); // DUMP_ENTITY_TOPOLOGY_E diff --git a/src/v4l2/MediaControl.h b/src/v4l2/MediaControl.h index c2dd29f..8d1a958 100644 --- a/src/v4l2/MediaControl.h +++ b/src/v4l2/MediaControl.h @@ -301,6 +301,10 @@ class MediaControl { int setMediaMcLink(std::vector links); int setFormat(int cameraId, const McFormat* format, int targetWidth, int targetHeight, int field); +// VIRTUAL_CHANNEL_S + int setVideoNodeFormat(struct V4L2VideoNode *device, const stream_t* format); + int setVideoNodesFormat(MediaCtlConf* mc, int field); +// VIRTUAL_CHANNEL_E int setSelection(int cameraId, const McFormat* format, int targetWidth, int targetHeight); int setRouting(int cameraId, MediaCtlConf* mc, bool enableRouting); /* Dump functions */ @@ -322,6 +326,10 @@ class MediaControl { static MediaControl* sInstance; static Mutex sLock; +// VIRTUAL_CHANNEL_S + + bool mIsMediaCtlSetup; +// VIRTUAL_CHANNEL_E }; } // namespace icamera