Android Camera从上至下(五)------CameraProvider(服务启动和初始化)待完善

简介

  本文主要介绍CameraProvider的启动过程中需要着重了解的流程步骤。特别是于CameraService交互的部分流程。
  其实不论是研究CameraService还是CameraProvider,我们要清楚,这两个进程实际上都是
中间层,我们在研究这两个服务时,我们主要要关注的就是这两者以及与这两者交互的层次相关的流程。对于CameraService,就是与framework的交互;对于CameraProvider就是与HAL层so的交互。
Camera Provider进程由两部分组成:
  一是运行在系统中的主程序通过提供了标准的HIDL接口保持了与Camera Service的跨进程通讯;
  二是为了进一步扩展其功能,通过dlopen方式加载了一系列So库,而其中就包括了实现了
Camera HAL3接口的So库,而HAL3接口主要定义了用于实现图像控制的功能,其实现主要
交由平台厂商或者开发者来完成,所以Camera HAL3 So库的实现各式各样;

HIDL文件解析

  常规来说android定义的hidl接口往往都在“hardware/interfaces”目录下。这里呢我们就以 Android CameraProvider为例进行解析。
  我们先来看一下Android CameraProvider目录结构:

在这里插入图片描述

CameraProvider启动流程

  首先会在.rc文件中启动CameraProvider 服务。然后调用service.cpp 中的main函数,该函数就是CameraProvider启动的入口。

Service::main()

int main(){
    ALOGI("Camera provider Service is starting.");
    // The camera HAL may communicate to other vendor components via
    // /dev/vndbinder
    android::ProcessState::initWithDriver("/dev/vndbinder");
    // 主要工做都在此函数中
    return defaultPassthroughServiceImplementation<ICameraProvider>("legacy/0", /*maxThreads*/ 6);
}

三级目录

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值