OpenHarmony相机用户态驱动框架

本文详细介绍了OpenHarmony相机用户态驱动框架,包括HDI实现层、框架层和适配层的职责。该框架实现了相机的预览和拍照功能,通过HDF对接HDI接口,管理相机硬件设备。预览流程通过获取stream operator实例、创建流、CommitStream和Capture来完成。文章还展示了预览流的具体创建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:润和软件 郭新星
相机作为智能手机上少有的成长空间不错的,能够做出差异化的功能,每年都能成为各大Android手机厂商争相宣传的亮点。众所周知Android采用Linux 作为其内核,而Linux采用的开源协议具有传染性[1],导致Android HAL[2]成为了手机厂商们竞争的重要战场。随着OpenHarmony 3.1[3]的发布,相机模块也逐渐完善起来,目前提供了基础预览和拍照的能力。OpenHarmony中,相机用户态驱动框架承担了和Android Camera HAL一样的角色,这部分位于OpenHarmony的HDF[4]中,对上实现相机HDI[5]接口,对下实现相机Pipeline模型,管理相机各个硬件设备。


相机用户态驱动框架(下图的CameraHost 部分)总体可以分为三层,HDI实现层,实现相机标准南向接口;框架层,对接HDI实现层的控制、流的转发,实现数据通路的搭建、管理相机各个硬件设备等功能;适配层,屏蔽底层芯片和OS差异,支持多平台适配。


模块介绍
HDI Implementation:对上实现HDI接口,向下调用框架层的接口,完成HDI接口任务的转发。
Buffer Manager : 屏蔽不同内存管理的差异,为子系统提供统一的操作接口,同时提供buffer轮转的功能。
Pipeline Core :解析HCS配置完成pipeline的搭建,调度pipeline中的各个node完成流的处理
Device Manager:通过调用底层硬件适配层接口,实现查询控制底层设备、枚举监听底层设备的功能
Platform Adaption :屏蔽硬件差异,为Device Manager提供统一的操作底层硬件的能力
•目录结构

Shell
drivers/peripheral/camera

|-- README_zh.md

|-- bundle.json

|-- figures

|   `-- logic-view-of-modules-related-to-this-repository_zh.png

|-- hal

|   |-- BUILD.gn

|   |-- adapter

|   |-- buffer_manager

|   |-- camera.gni

|   |-- device_manager

|   |-- hdi_impl

|   |-- include

|   |-- init

|   |-- pipeline_core

|   |-- test

|   `-- utils

|-- hal_c

|   |-- BUILD.gn

|   |-- camera.gni

|   |-- hdi_cif

|   `-- include

`-- interfaces

    |-- hdi_ipc

    |-- hdi_passthrough

    `-- include

•HDI Implementation中的预览流程

接下来我们通过已经发布的OpenHarmony 3.1开源代码,来看看预览是怎么完成的吧

drivers/peripheral/camera/hal/test/v4l2/src /preview_test.cpp存放了针对v4l2的预览测试代码,入口如下

C++
TEST_F(UtestPreviewTest, camera_preview_0001)

{

    std::cout << "==========[test log] Preview stream, expected success." << std::endl;

    // Get the stream manager

    display_->AchieveStreamOperator(); // 获取stream operator

    // start stream

    display_->intents = {Camera::PREVIEW}; // 预览流

    display_->StartStream(display_->intents); // 起流

    // Get preview

    display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);

    // release stream

    di
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值