Tegra平台back camera 驱动实现五

camera HAL的实现流程

我们接着来介绍camera HAL的实现流程,为了实现一个具体功能的Camera,在HAL层需要一个硬件相关的Camera库(例如通过调用video for linux驱动程序和Jpeg编码程序实现或者直接用各个chip厂商实现的私有库来实现(本例使用后者),比如Qualcomm实现的libcamera.so和libqcamera.so),实现CameraHardwareInterface规定的接口,来调用相关的库,驱动相关的driver,实现对camera硬件的操作。这个库将被Camera的服务库libcameraservice.so调用。

camera具体实现files图表

        具体实现文档如下图表所示:

Android Tegra平台back camera 驱动实现五 camera HAL的实现流程

        HAL代码:

vendor/nvidia/tegra/hal/libnvomxcamera:

custcamerasettingsdefinition.cpp

nvomxcameracallbacks.h

nvomxcamera.cpp

nvomxcamera.h

nvomxcamerasettingsdefinition.h

nvomxcamerasettingsparser.cpp

nvomxcamerasettingsparser.h

HAL实现的Interface

        在tegra2平台中特有的:nvomxcamera.cpp,libcamera.so,实现CameraHardwareInterface接口,openCameraHardware()在该库中实现。

C/C++代码
  1. extern "C" sp<CameraHardwareInterface> HAL_openCameraHardware(int cameraId)  
  2. {  
  3.     LOGVV("HAL_openCameraHardware ++\n");  
  4.   
  5.     return NvOmxCamera::createInstance(cameraId);  
  6. }  
camera HAL主要的库

        vendor/nvidia/tegra/core/drivers/openmax/il,libnvomx.so:OMX core 库,libnvodm_imager.so:odm image 的hal库,这部分默认情况下NV只提供了binary,在full build时会将此库copy到system目录下,继而集成到system.img中去。libnvodm_query.so:odm 的查询库,对GPIO,供电,i2c等其他相关硬件配置在本库完成。

        对于pad的前后camera的问题,个人看法是上层告诉底层使用哪一个camera,然后每次OMX会重新构建OMX Graph,并在最后enable port的时候使用不同的camera硬件。上层处理基本保持一致。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值