122、Android Camera HAL3 框架:Request、Result、Metadata 的异步管道模型从一次“黑屏闪退”说起去年Q2,我接手一个MTK平台的项目,第三方算法集成后,预览偶尔黑屏,log里反复出现“HAL process_capture_result timeout”。当时团队新人多,大家第一反应是“HAL层死锁了”,加锁、加超时、加重试,折腾两周没解决。最后我拉出CameraMetadata的dump,发现一个诡异现象:每次黑屏前,HAL返回的Result里,ANDROID_SENSOR_TIMESTAMP比Request里的时间戳还早200ms。这不是死锁,是HAL把上一帧的Result错配给了当前Request——异步管道模型里最经典的“帧序错乱”。这个坑,让我重新审视HAL3的核心设计:Request、Result、Metadata三者如何通过异步管道协同工作。今天这篇笔记,就从这个角度切入,把HAL3的异步模型拆开揉碎。异步管道的三个角色HAL3抛弃了HAL1的同步阻塞模型,改用生产者-消费者模式。三个核心数据结构:Request:App或Framework发起的“拍照指令”,包含输出流配置、控制参数(AE/AWB/AF等),每个Request有唯一ID(frame_number)。Result/