光电的一只菜鸡 2025-08-20 11:06 采纳率: 0%
浏览 6

qcs6490的4k->8K的SWRemosaic

麻烦看一下日志,第一次接触高通,不知道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

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-08-20 11:07
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    从你提供的日志来看,这是一个高通QCS6490平台中关于SWRemosaic功能的日志输出。主要关注点是CHIUSECASE模块在选择传感器模式(Sensor Mode)时的行为。


    🔍 问题分析

    1. 日志关键信息

    • FindBestSensorMode() 是用于选择最适合当前UseCase的传感器模式。
    • 日志显示系统尝试了两个传感器模式:
      • Mode 0: 分辨率 8192x6144(8K)
      • Mode 1: 分辨率 4096x3072(4K)
    • 最终选择了 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.xmlusecase.cfg 文件中,或者在代码中通过 API 设置。

    2. Sensor Mode Caps 不匹配

    • caps: 00000010(Mode 0) vs caps: 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 配置文件或相关代码片段,我可以进一步帮助你定位问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 8月20日