0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙系统的媒体子系统,从何说起呢?

电子工程师 来源:HarmonyOS社区 作者:HarmonyOS社区 2021-01-13 09:51 次阅读

要探究鸿蒙系统的媒体子系统,从何说起呢?我是从源码目录下 applications 下的应用开始的,不过既然在这里记录下来,就从更清晰的角度来切入。

首先,看权威介绍:

https://gitee.com/openharmony/docs/blob/master/readme/媒体子系统README.md

由该readme可知,子系统虽然底层庞大且盘根错节,但是,面向应用层,其宗旨(原文)是:

旨在为多媒体应用开发者开发者提供统一的开发接口,使得开发者可以专注于应用业务的开发,轻松使用多媒体的资源。

也就是说,封装之后的耦合程度大大降低了。实际上,应用层仅需实现少量回调函数并按流程操作,即可轻松实现诸如拍照、录像、预览等功能。

我们首先来一下浏览框架及流程图,有助于接下来的底层分析。

26a9d634-5146-11eb-8b86-12bb97331649.png

26cc4c78-5146-11eb-8b86-12bb97331649.png

回看源码。源码如下applications/sample/camera/media/camera_sample.cpp

中实现的拍照、录像功能,以此为起点,探究一下系统的多媒体框架,并介绍关键组件。

根据对代码的阅读,我先将类图大体上整理出来(水平有限,且时间仓促,错误之处望各位不吝赐教):

26f5fcf8-5146-11eb-8b86-12bb97331649.png

在 camera_sample.cpp 的 main() 中,首先调用 CameraKit::GetInstance() 获取一个 CameraKit 实例 camKit;得到实例后继而调用 camKit-》GetCameraIds() 获取 camera ID 列表,遍历列表,获取每个ID的对应的camera的ability,找到其中支持指定目标大小的camera ID。

通过CameraKit 实例调用camKit-》CreateCamera(camId, CamStateMng, eventHdlr) 来构造 camera,以下是涉及的相关类及其关系。

由关系图可知,CameraKit 中聚合了 CameraManager,实际上是由 CameraManagerImpl 继承并拓展了该类,CameraManager 内部持有CameraManagerImpl类的实例,即cameraManagerImpl,后续的相关操作由该成员来完成。

紧接着来看CameraManagerImpl类,其成员中有:

CameraService *cameraService_;

该成员是一个关键,它内部聚合了:

CameraDevice *device_ = nullptr;

CameraAbility *ability_ = nullptr;

CameraServiceCallback *cameraServiceCb_ = nullptr;

其中:CameraAbility 类型的 ability_ 用来描述CameraService的能力;CameraServiceCallback 类型的 cameraServiceCb_ 用来在构造CameraManagerImpl实例时候对CameraService做一些初始化工作及camera状态改变的处理;CameraDevice 类型的 device_ 成员是类 CameraService的核心;

下面详细分析CameraDevice类;

CameraDevice类涉及到了HAL层及硬件编解码器的操作,由于底层被封装为库文件的形式,给理解带来的一定的障碍,不过可以暂时先忽略细节,把焦点放到框架上,接下来对其涉及的各个模块做深入分析。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 解码器
    +关注

    关注

    9

    文章

    1073

    浏览量

    40157
  • 封装
    +关注

    关注

    123

    文章

    7278

    浏览量

    141095
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2603

    浏览量

    65268
  • OpenHarmony
    +关注

    关注

    23

    文章

    3280

    浏览量

    15159

原文标题:OpenHarmopny的媒体子系统_1

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙系统三防平板怎么样

    鸿蒙系统三防平板是一款功能强大、性能卓越的平板电脑,其独特的三防设计使其成为各种恶劣环境下的理想选择。无论是户外探险、工地作业还是军事应用,鸿蒙系统三防平板都能为用户提供稳定、可靠的性
    发表于 04-12 14:26

    鸿蒙开发图形图像:【图形子系统

    图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS应用框架满足硬件资源较小的物联网设备或者构建基于标准OS的应用框架满足富设备的OpenHarmony系统应用开发。
    的头像 发表于 03-23 16:50 341次阅读
    <b class='flag-5'>鸿蒙</b>开发图形图像:【图形<b class='flag-5'>子系统</b>】

    鸿蒙开发实战:【电话服务子系统

    电话服务子系统,提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息。
    的头像 发表于 03-14 21:49 95次阅读
    <b class='flag-5'>鸿蒙</b>开发实战:【电话服务<b class='flag-5'>子系统</b>】

    鸿蒙开发实战:【包管理子系统

    包管理子系统负责应用安装包的管理,提供安装包的信息查询、安装、更新、卸载和包信息存储等能力
    的头像 发表于 03-14 15:23 140次阅读
    <b class='flag-5'>鸿蒙</b>开发实战:【包管理<b class='flag-5'>子系统</b>】

    纯血鸿蒙系统,拿什么与安卓、iOS比?

    减少了40%的冗余代码后,HarmonyOS NEXT 的系统流畅度、能效、纯净安全特性等提升显著。 所以鸿蒙是作为开发者近10年的最具有潜力的发展道路,那么鸿蒙的底层技术到底是什么
    发表于 02-21 21:04

    鸿蒙系统优缺点,能否作为开发者选择

    凡是都有对立面,就直接说说鸿蒙的优缺点吧。 鸿蒙的缺点: 鸿蒙是从2019年开始做出来的,那时候是套壳Android大家都知晓。从而导致大家不看鸿蒙
    发表于 02-16 21:00

    华为鸿蒙系统怎么样 华为鸿蒙系统和安卓系统的区别

    华为鸿蒙系统是华为公司自主研发的全场景分布式操作系统,于2019年8月首次发布。鸿蒙系统不同于传统的操作
    的头像 发表于 02-02 14:54 610次阅读

    鸿蒙系统和安卓的区别 鸿蒙系统有什么特别之处

    鸿蒙系统是华为公司自主研发的一款全新操作系统,旨在替代安卓系统鸿蒙系统与安卓
    的头像 发表于 01-18 11:45 2913次阅读

    鸿蒙系统和安卓的区别哪个好用

    鸿蒙系统和安卓系统是目前市场上两个比较流行的手机操作系统,它们在很多方面都有所不同。本文将从多个方面比较鸿蒙
    的头像 发表于 01-11 11:15 749次阅读

    华为鸿蒙系统

    华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的操作系统。 华为鸿蒙
    发表于 11-02 19:39

    鸿蒙操作系统的前世今生

    01、 鸿蒙操作系统发展沿革 鸿蒙这个名字意为“万物起源”,同时也寓意国产操作系统的开端。鸿蒙操作系统
    发表于 10-08 19:55

    Linux内核之LED子系统(二)

    这里说一说LED子系统的一些核心源代码文件,是如何实现LED子系统
    发表于 10-02 16:55 273次阅读
    Linux内核之LED<b class='flag-5'>子系统</b>(二)

    Linux内核之LED子系统(一)

    Linux内核的LED子系统是一种重要的框架,用于管理和控制设备上的LED指示灯。在嵌入式系统和物联网设备中,LED子系统发挥着关键作用,为开发者提供了一种统一的方式来控制和定制LED的行为和效果。
    发表于 10-02 16:53 282次阅读
    Linux内核之LED<b class='flag-5'>子系统</b>(一)

    Arm Corstone™ SSE‑123子系统技术概述

    SSE‑123示例子系统集成了一个由关键Arm组件组成的子系统,这些组件实现了针对物联网(IoT)片上系统(SoC)设计的系统的核心功能。
    发表于 08-10 07:40

    Linux LED子系统详解

    Linux LED子系统详解
    的头像 发表于 06-10 10:37 983次阅读
    Linux LED<b class='flag-5'>子系统</b>详解