FAQ05047:在进入camera或者在camera中切换场景时,出现“很抱歉,相机已停止运行”

描述:进入camera或者切换场景时,出现"很抱歉,相机已停止运行",LOG中出现:

11-15 09:37:57.222: E/MtkCam/MCamHw(102): Error count of area!(parseCamAreas){#1952:mediatek/source/external/camera/mt6575/CamAdapter/mHal/mHalCamParameters.cpp}

11-15 09:37:57.222: E/MtkCam/MCamHw(102): setParametersERROR: metering areas = (0,0,0,0,0) (setParameters){#1402:mediatek/source/external/camera/mt6575/CamAdapter/mHal/mHalCamParameters.cpp}

分析:YUV sensor在进入camera或者在camera中切换场景模式时,会从底层driver中query支持touch AE/AF区域的个数(1表示支持touch AE/AF,0表示不支持),若在sensor driver中没有返回该值的时候,则默认返回一个随机值,当该随机值为1时,认为支持touch AE/AF,当随机值不为1时,认为不支持touch AE/AF。而当连续两次query回来的值不一样时,就会报出上述错误,进而导致相机停止运行,因此该问题会概率性复现,且复现概率并不高。

解决:根据如上分析,只需在sensor driver里面固定返回是否支持touch AE/AF,该问题就得到解决。

具体方法:

在sensor driver的XXXXXFeatureControl 加入以下两个case:

case SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS:

XXXXXGetAFMaxNumFocusAreas(pFeatureReturnPara32);

*pFeatureParaLen=4;

break;

case SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS:

XXXXXGetAFMaxNumMeteringAreas(pFeatureReturnPara32);

*pFeatureParaLen=4;

break;

并实现这两个函数:

void XXXXXGetAFMaxNumFocusAreas(UINT32 *pFeatureReturnPara32)

{

*pFeatureReturnPara32=0; //若支持,则填1

}

Void XXXXXGetAFMaxNumMeteringAreas(UINT32 *pFeatureReturnPara32)

{

*pFeatureReturnPara32=0; //若支持,则填1

}

相关推荐
杉氧2 小时前
状态管理变迁史:为什么我们放弃了 Redux 选择 Zustand?
android·前端·react native
三少爷的鞋5 小时前
别再靠 Code Review 守底线:我做了一个静态分析项目 RedLine
android
y = xⁿ13 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
2601_9620664916 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
用户693717500138421 小时前
曾经安卓开发人手一个的 EventBus,为什么现在没人爱用了?
android·android studio
九皇叔叔1 天前
MySQL ORDER BY 性能优化详解:Using filesort、联合索引、ASC/DESC 与覆盖索引
android·adb
OriginCoding1 天前
用 AI Agent 协作完成一个 Android TOTP 应用:从需求边界到 v1.0.0
android·ai编程
杉氧1 天前
React 灵魂:深入剖析 Hooks 与副作用(Side Effects)陷阱
android·前端·react native
又见情义1 天前
RK3568 + RTL8211F 网络唤醒(WOL)功能适配全记录
android·网络·驱动开发
用户0934077735141 天前
HarmonyOS WPS Open SDK 实践:registerApp 鉴权与就绪门禁
android·typescript·harmonyos