【鸿蒙南向开发】CameraService服务启动流程解析

1. 相机组件简介

相机组件支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照和录像等

CameraService服务作为相机组件的重要一环,对上为app层提供IPC接口,对下完成CameraDevice设备创建以及会话管理等。

1.1 相机组件的代码在openharmony中的位置

相机组件的代码位于【foundation/multimedia/camera_standard】目录下

代码结构如下

├── bundle.json
├── figures
├── frameworks							camera frameworks部分,支持js和native转换
│   ├── js
│   └── native
├── hisysevent.yaml
├── interfaces							CameraService接口
│   ├── inner_api
│   └── kits
├── LICENSE
├── OAT.xml
├── README.md
├── README_zh.md
├── sa_profile							CameraService进程加载配置文件
│   ├── 3008.xml
│   └── BUILD.gn
└── services							CameraService启动相关
    ├── camera_service
    └── etc

1.2 CameraService在系统中的位置

相机服务整体架构如下:

image.png

可以看到在整个相机组件中,把相机功能抽象为CaptureSession(管理生命周期、参数配置、输入管理、输出管理)、CameraInput(设备查询、设备控制、设备监听)和CameraOutput(元数据输出、流输出和状态控制)。

而CameraService就是将这些功能如何由camera app传达给camera host服务的中间人,以及Camera Host服务反馈的消息转发给Camera app。

所以下面的文章主要来看看CameraService实现了哪些接口,以及CameraService的启动流程

2. CameraService Native实现IPC通信需要实现的主要重要接口

2.1 icamera_service接口

实现ICameraService接口,继承于IRemoteBroker,定义描述符、业务函数和消息码

接口函数代码如下

【foundation\multimedia\camera_standard\services\camera_service\binder\base\include\icamera_service.h】

class ICameraService : public IRemoteBroker {
public:
    virtual int32
    virtual int32_t CreatePhotoOutput(const sptr<OHOS::IBufferProducer> &producer, int32_t format,
                                      sptr<IStreamCapture> &photoOutput) = 0;

    virtual int32_t CreatePreviewOutput(const sptr<OHOS::IBufferProducer> &producer, int32_t format,
                                        sptr<IStreamRepeat> &previewOutput) = 0;

    virtual int32_t CreateCustomPreviewOutput(const sptr<OHOS::IBufferProducer> &producer, int32_t format,
                                              int32_t width, int32_t he_t CreateCameraDevice(std::
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值