AOSP/AAOS Camera相关的HAL就我所知的就包括标准的Camera HAL,用于USB 摄像头的external camera hal,车载领域的EVS HAL。本章承接上一部分主要讲的就是External Camera Hal的定制来满足模拟器的需求,evs内部camera采集用的也是v4l2,知识点是互相通用的。
自定义
首先来一张官方对于这个模块自定义的说明:
如果是作为一个完整的项目,上面说的编码是一个非常重要的点,目前该模块用的还是libyuv软编解码这样会占用大量的CPU,实际情况必须采用硬解码。
除上面说的这些点外,目前External Camera HAL只支持两种视频的输入格式,分别是:V4L2_PIX_FMT_MJPEG和V4L2_PIX_FMT_Z16。分析HAL的源码发现它会把对应的MPJEG数据转换成I420:
所以我想新增YUV420和H264(TODO)的格式数据。代码片段如下:
此时就是要修改对应的HAL代码支持YUV420的数据输入,然后v4l2loopback