Android Camera2 Hal3(一)初始化

本文详细介绍了在Android 5.0系统中,CameraService如何根据CAMERA_DEVICE_API_VERSION_3_0和CAMERA_MODULE_API_VERSION_2_3初始化Camera2Client和Camera3Device。内容包括Camera2Client的构造过程,Camera3Device如何调用hal层初始化CameraMetadata,以及CameraMetadata在上层的解析。CameraMetadata用于存储摄像头的参数,如分辨率、图像格式等。
摘要由CSDN通过智能技术生成

前段时间在4412的开发板上面调通了camera 5.0 hardware,现在来梳理下camera框架。
我这里的camera device api版本使用的是3.0;camera module api版本使用的是2.3;CameraService会根据这个api版本初始化不同的client,例如这里将初始化Camera2Client。

mDevice.common.version = CAMERA_DEVICE_API_VERSION_3_0;
camera_module_t HAL_MODULE_INFO_SYM = {
   
    .common = {
   
        .tag                = HARDWARE_MODULE_TAG,
        .module_api_version = CAMERA_MODULE_API_VERSION_2_3,
        .hal_api_version    = HARDWARE_HAL_API_VERSION,
        .id                 = CAMERA_HARDWARE_MODULE_ID,
        .name               = "V4l2 Camera",
    },
    .get_number_of_cameras  = android::HalModule::getNumberOfCameras,
    .get_camera_info        = android::HalModule::getCameraInfo,
    .set_callbacks          = android::HalModule::setCallbacks,
};

类说明:
CameraDeviceFactory:工具类,根据hal中选择的device版本来选择初始化Camera2Device或者Camera3Device;我这里是
CAMERA_DEVICE_API_VERSION_3_0,所以会初始化Camera3Device
CameraDeviceBase:Camera3Device和Camera2Device的基类。Camera2Client通过它来访问hardware

CameraService初始化

void CameraService::onFirstRef()
{
   
    LOG1("CameraService::onFirstRef");
    	hw_get_module(CAMERA_HARDWARE_MODULE_ID, (const hw_module_t **)&mModule) < 0
        mNumberOfCameras = mModule->get_number_of_cameras();	   //调用的是hal层的android::HalModule::getNumberOfCameras
        if (mModule->common.module_api_version >=
                CAMERA_MODULE_API_VERSION_2_1) {
   
            mModule->set_callbacks(this);		//api版本大于等于2.1设置回调,我这里没有具体实现这个接口,直接在hal层中return OK
        }
        if (mModule->common.module_api_version >= CAMERA_MODULE_API_VERSION_2_2) {
   
            setUpVendorTags();		//这里会调用camera_module_t的get_vendor_tag_ops,这个可以不实现
        }
        CameraDeviceFactory::registerService(this
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值