要探究鴻蒙系統(tǒng)的媒體子系統(tǒng),從何說起呢?我是從源碼目錄下 applications 下的應用開始的,不過既然在這里記錄下來,就從更清晰的角度來切入。
首先,看權威介紹:
https://gitee.com/openharmony/docs/blob/master/readme/媒體子系統(tǒng)README.md
由該readme可知,子系統(tǒng)雖然底層龐大且盤根錯節(jié),但是,面向應用層,其宗旨(原文)是:
旨在為多媒體應用開發(fā)者開發(fā)者提供統(tǒng)一的開發(fā)接口,使得開發(fā)者可以專注于應用業(yè)務的開發(fā),輕松使用多媒體的資源。
也就是說,封裝之后的耦合程度大大降低了。實際上,應用層僅需實現(xiàn)少量回調函數并按流程操作,即可輕松實現(xiàn)諸如拍照、錄像、預覽等功能。
我們首先來一下瀏覽框架及流程圖,有助于接下來的底層分析。
回看源碼。源碼如下applications/sample/camera/media/camera_sample.cpp
中實現(xiàn)的拍照、錄像功能,以此為起點,探究一下系統(tǒng)的多媒體框架,并介紹關鍵組件。
根據對代碼的閱讀,我先將類圖大體上整理出來(水平有限,且時間倉促,錯誤之處望各位不吝賜教):
在 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,后續(xù)的相關操作由該成員來完成。
緊接著來看CameraManagerImpl類,其成員中有:
CameraService *cameraService_;
該成員是一個關鍵,它內部聚合了:
CameraDevice *device_ = nullptr;
CameraAbility *ability_ = nullptr;
CameraServiceCallback *cameraServiceCb_ = nullptr;
其中:CameraAbility 類型的 ability_ 用來描述CameraService的能力;CameraServiceCallback 類型的 cameraServiceCb_ 用來在構造CameraManagerImpl實例時候對CameraService做一些初始化工作及camera狀態(tài)改變的處理;CameraDevice 類型的 device_ 成員是類 CameraService的核心;
下面詳細分析CameraDevice類;
CameraDevice類涉及到了HAL層及硬件編解碼器的操作,由于底層被封裝為庫文件的形式,給理解帶來的一定的障礙,不過可以暫時先忽略細節(jié),把焦點放到框架上,接下來對其涉及的各個模塊做深入分析。
責任編輯:lq
-
解碼器
+關注
關注
9文章
1152瀏覽量
40960 -
封裝
+關注
關注
127文章
8018瀏覽量
143474 -
鴻蒙系統(tǒng)
+關注
關注
183文章
2638瀏覽量
66772 -
OpenHarmony
+關注
關注
25文章
3753瀏覽量
16672
原文標題:OpenHarmopny的媒體子系統(tǒng)_1
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
云天勵飛DeepEdge10芯片與國產鴻蒙操作系統(tǒng)完成適配
名單公布!【書籍評測活動NO.53】鴻蒙操作系統(tǒng)設計原理與架構
鴻蒙系統(tǒng)專用版微信內測即將啟動
華為原生鴻蒙操作系統(tǒng)正式發(fā)布
鴻蒙開發(fā)接口媒體:【@ohos.multimedia.media (媒體服務)】
![<b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>媒體</b>:【@ohos.multimedia.media (<b class='flag-5'>媒體</b>服務)】](https://file1.elecfans.com//web2/M00/EA/B6/wKgZomZZyXWAMD_xAAAO4mErQko408.jpg)
鴻蒙系統(tǒng)三防平板怎么樣
鴻蒙開發(fā)圖形圖像:【圖形子系統(tǒng)】
![<b class='flag-5'>鴻蒙</b>開發(fā)圖形圖像:【圖形<b class='flag-5'>子系統(tǒng)</b>】](https://file1.elecfans.com/web2/M00/C5/7C/wKgZomX9jIGAX4FUAACDeZpTTy8202.jpg)
鴻蒙開發(fā)學習:【驅動子系統(tǒng)】
![<b class='flag-5'>鴻蒙</b>開發(fā)學習:【驅動<b class='flag-5'>子系統(tǒng)</b>】](https://file1.elecfans.com/web2/M00/C5/96/wKgaomX253mAUzenAAEabKQxcJs525.jpg)
鴻蒙開發(fā)實戰(zhàn):【電話服務子系統(tǒng)】
![<b class='flag-5'>鴻蒙</b>開發(fā)實戰(zhàn):【電話服務<b class='flag-5'>子系統(tǒng)</b>】](https://file1.elecfans.com/web2/M00/C4/6A/wKgZomXy7muANmxUAANPfe5Ll0U928.jpg)
評論