麻烦看一下日志,第一次接触高通,不知道usecase在哪里更改
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:535 FindBestSensorMode() ModeInfo[ 1/2]: modeIndex: 0 arraySizeInMPix: 0 frameDimension: TL:( 0, 0) width: 8192 height: 6144 cropInfo(Coordinates): TL:( 0, 0) width: 8191 height: 6143 aspectRatio: 0 / 0 bpp: 10 framerate: 15batchedFrames: 0 caps: 00000010 streamType: 00000001
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:535 FindBestSensorMode() ModeInfo[ 2/2]: modeIndex: 1 arraySizeInMPix: 0 frameDimension: TL:( 0, 0) width: 4096 height: 3072 cropInfo(Coordinates): TL:( 0, 0) width: 4095 height: 3071 aspectRatio: 0 / 0 bpp: 10 framerate: 30batchedFrames: 1 caps: 00000001 streamType: 00000001
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 1 condition = 0
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:615 FindBestSensorMode() Sensor mode 1 Condition 0 doesn't match
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 0 condition = 0
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 0 condition = 2
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:121 IsMatchingAspectRatio() aspectRatioDiff 0.000000 returnValue 1
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 0 condition = 3
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:52 IsMatchingWidth() FrameDimension.width 8192 optimal width 8192 maxWidth 8192 minWidth 8192
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 0 condition = 4
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:80 IsMatchingHeight() FrameDimension.height 6144 optimal height 6144 maxHeight 6144 minHeight 6144
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 0 condition = 8
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:211 IsMatchingMaxResolution() selectResolution 50331648 returnValue 1
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:551 FindBestSensorMode() Select sensor mode 0 condition = 10
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:165 IsMatchingCapability() Desired sensor mode caps:1, pModeInfo sensor mode caps:16, isFound:0
06-18 04:32:11.139 3216 3425 D CHIUSECASE: [FULL ] chxsensorselectmode.cpp:615 FindBestSensorMode() Sensor mode 0 Condition 10 doesn't match
qcs6490的4k->8K的SWRemosaic
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
檀越@新空间 2025-08-20 11:07关注上午好☀️☀️☀️️
本答案参考通义千问从你提供的日志来看,这是一个高通QCS6490平台中关于SWRemosaic功能的日志输出。主要关注点是CHIUSECASE模块在选择传感器模式(Sensor Mode)时的行为。
🔍 问题分析
1. 日志关键信息
FindBestSensorMode()是用于选择最适合当前UseCase的传感器模式。- 日志显示系统尝试了两个传感器模式:
- Mode 0: 分辨率
8192x6144(8K) - Mode 1: 分辨率
4096x3072(4K)
- Mode 0: 分辨率
- 最终选择了 Mode 0 (8K),但某些条件不满足,导致最终未成功。
2. 关键错误信息
CHIUSECASE: [FULL ] chxsensorselectmode.cpp:615 FindBestSensorMode() Sensor mode 0 Condition 10 doesn't match这表明 Sensor Mode 0 的某些条件(Condition 10)未匹配成功,可能是由于以下原因:
- Caps 不匹配:
Desired sensor mode caps:1, pModeInfo sensor mode caps:16 - Capability 不匹配:
IsMatchingCapability()函数返回失败。
🧠 原因推测
1. UseCase 配置问题
- UseCase 可能没有正确配置支持 8K分辨率(8192x6144)。
- 在高通平台中,UseCase 配置通常位于
usecase.xml或usecase.cfg文件中,或者在代码中通过 API 设置。
2. Sensor Mode Caps 不匹配
caps: 00000010(Mode 0) vscaps: 00000001(Mode 1)- 这表示 Mode 0 的 capabilities 不符合当前 UseCase 的需求。
3. SWRemosaic 支持问题
- SWRemosaic 是一种软件拼接算法,通常用于将多个低分辨率图像拼接成高分辨率图像。
- 如果平台或驱动不支持 8K 的 SWRemosaic 模式,就会导致此问题。
✅ 解决方案
以下是解决该问题的详细步骤:
1. 确认 UseCase 配置是否支持 8K
-
检查 UseCase XML 文件(例如:
usecase.xml):<usecase name="swremosaic_8k"> <resolution>8192x6144</resolution> <fps>15</fps> <streamType>VIDEO</streamType> <caps>0x10</caps> <!-- 0x10 对应 16进制的 16 --> </usecase> -
确保 UseCase 中包含 8K 分辨率和对应的 capability(caps)。
2. 修改 UseCase 配置文件(示例)
如果你发现 UseCase 配置中没有 8K 模式,可以添加如下内容:
<usecase name="swremosaic_8k"> <resolution>8192x6144</resolution> <fps>15</fps> <streamType>VIDEO</streamType> <caps>0x10</caps> <!-- 0x10 表示 16 --> </usecase>注意:
caps字段需要与传感器模式中的caps匹配,否则会报错。3. 检查 Sensor Mode 是否支持 8K
-
查看传感器驱动中定义的 Sensor Modes:
- 通常在
sensor_mode_table.h或类似的文件中。 - 确保有类似以下内容:
{ .modeIndex = 0, .frameDimension = {8192, 6144}, .cropInfo = {0, 0, 8191, 6143}, .caps = 0x10, // 16 .streamType = 0x01, .fps = 15, }, - 通常在
4. 修改代码逻辑(如果需要)
如果你发现代码中对
caps的判断过于严格,可以适当放宽条件。示例代码片段(原始):
if ((pModeInfo->caps & desiredCaps) != desiredCaps) { return false; }修改后(更宽松):
if ((pModeInfo->caps & desiredCaps) == 0) { return false; // 仅当完全不匹配时才拒绝 }注意: 此修改可能影响其他 UseCase 的稳定性,需谨慎测试。
5. 验证日志输出
修改后重新运行程序,并观察日志是否不再出现以下错误:
Sensor mode 0 Condition 10 doesn't match
📌 总结
| 问题 | 解决方案 | |------|----------| | UseCase 不支持 8K | 添加或修改
usecase.xml中的 8K 配置 | | Sensor Mode Caps 不匹配 | 确保 Sensor Mode 的caps与 UseCase 一致 | | SWRemosaic 不支持 8K | 检查驱动和硬件是否支持 8K SWRemosaic | | 代码逻辑太严格 | 适当放宽caps判断条件 |
🧩 额外建议
- 如果你是第一次接触高通平台,建议参考 QCS6490 开发文档 和 CHI (Camera Hardware Interface) 文档。
- 使用工具如 Qti Camera Framework 来调试和查看 UseCase 配置。
如果你能提供具体的 UseCase 配置文件或相关代码片段,我可以进一步帮助你定位问题!
解决评论 打赏 举报无用 1