138、MTK Camera HAL 架构:Scenario、Feature、Pipeline 的配置与实际移植
138、MTK Camera HAL 架构:Scenario、Feature、Pipeline 的配置与实际移植
一、从一次“黑屏”调试说起
去年Q2,我接手一个MTK Dimensity 9000平台的客制化项目,客户要求在原生Camera App中增加一个“夜景人像”模式。按照常规思路,我直接在MTK Camera HAL的配置文件中加了一个新的Scenario ID,然后信心满满地编译、烧录、开机——结果打开相机,预览界面直接黑屏,log里疯狂刷“Pipeline not found for scenario XXXX”。
当时第一反应是“配置没写对”,但反复检查了三次,Scenario ID、Feature Mask、Pipeline Name都一一对应,为什么还是找不到?后来翻遍MTK内部文档,才发现问题出在Pipeline的绑定时机上——MTK HAL在初始化阶段会预加载所有Scenario的Pipeline配置,但如果你新增的Scenario没有在某个关键配置表中注册,它根本不会进入Pipeline的构建流程。这个坑让我意识到,Scenario、Feature、Pipeline这三者的关系,远不是“配置一个字符串”那么简单。
二、Scenario:不只是“模式编号”
MTK Camera HAL里,Scenario通常对应一个具体的拍照场景,比如“普通拍照”“人像”“夜景”“专业模式”。每个
