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

    文章

    1143

    浏览量

    40774
  • 封装
    +关注

    关注

    126

    文章

    7933

    浏览量

    143054
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2636

    浏览量

    66403
  • OpenHarmony
    +关注

    关注

    25

    文章

    3725

    浏览量

    16372

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

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

收藏 人收藏

    评论

    相关推荐

    【书籍评测活动NO.53】鸿蒙操作系统设计原理与架构

    , 分门别类地阐述鸿蒙操作系统关键子系统的技术架构和主要设计思路,包括内核、方舟运行时、图形、媒体、驱动框架、各种分布式技术,以及安全、DFX 等方面的相关架构设计思路 。 围绕Har
    发表于 12-16 15:10

    PRU子系统特性比较

    电子发烧友网站提供《PRU子系统特性比较.pdf》资料免费下载
    发表于 09-03 11:13 0次下载
    PRU<b class='flag-5'>子系统</b>特性比较

    鸿蒙开发接口媒体:【@ohos.multimedia.media (媒体服务)】

    媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统媒体资源。
    的头像 发表于 06-06 11:03 877次阅读
    <b class='flag-5'>鸿蒙</b>开发接口<b class='flag-5'>媒体</b>:【@ohos.multimedia.media (<b class='flag-5'>媒体</b>服务)】

    鸿蒙OpenHarmony开发板:【子系统配置规则】

    通过build仓下的subsystem_config.json可以查看所有子系统的配置规则。
    的头像 发表于 05-08 22:07 289次阅读
    <b class='flag-5'>鸿蒙</b>OpenHarmony开发板:【<b class='flag-5'>子系统</b>配置规则】

    鸿蒙系统三防平板怎么样

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

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

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

    鸿蒙开发学习:【驱动子系统

    OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
    的头像 发表于 03-17 22:05 610次阅读
    <b class='flag-5'>鸿蒙</b>开发学习:【驱动<b class='flag-5'>子系统</b>】

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

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

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

    包管理子系统负责应用安装包的管理,提供安装包的信息查询、安装、更新、卸载和包信息存储等能力
    的头像 发表于 03-14 15:23 705次阅读
    <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 1761次阅读

    如何在鸿蒙系统上安装Google Play

    随着鸿蒙(HarmonyOS)系统的逐渐普及和用户基数的增加,一些用户希望能在鸿蒙系统上使用Google Play商店以获取更多应用。然而,由于鸿蒙
    的头像 发表于 01-31 17:13 1.6w次阅读

    简述智能制造系统的组成 智能制造系统子系统包括哪些

    智能制造系统是一种基于先进技术和智能化的制造方式,它包括多个子系统,每个子系统都扮演着重要的角色。下面详细介绍智能制造系统的组成和各个子系统
    的头像 发表于 01-19 10:36 2912次阅读

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

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