日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCore 的代码结构

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCore 的代码结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OpenCore的代碼結(jié)構(gòu)

?

以開源Android 的代碼為例,Open Core 的代碼在Android 代碼的External/Opencore 目錄

中。這個目錄是OpenCore 的根目錄,其中包含的子目錄如下所示:

android:這里面是一個上層的庫,它基于PVPlayer 和PVAuthor 的SDK 實(shí)現(xiàn)了一個為

Android 使用的Player 和Author。

baselibs:包含數(shù)據(jù)結(jié)構(gòu)和線程安全等內(nèi)容的底層庫。

codecs_v2:這是一個內(nèi)容較多的庫,主要包含編解碼的實(shí)現(xiàn),以及一個OpenMAX的實(shí)現(xiàn)。

engines:包含PVPlayer 和PVAuthor 引擎的實(shí)現(xiàn)。

extern_libs_v2:包含了khronos的OpenMAX 的頭文件。

fileformats:文件格式的解析(parser)工具。

nodes:提供一些PVMF 的NODE,主要是編解碼和文件解析方面的。

oscl:操作系統(tǒng)兼容庫。

pvmi:輸入輸出控制的抽象接口。

protocols:主要是與網(wǎng)絡(luò)相關(guān)的RTSP、RTP、HTTP 等協(xié)議的相關(guān)內(nèi)容。

pvcommon:pvcommon 庫文件的Android.mk 文件,沒有源文件。

pvplayer:pvplayer 庫文件的Android.mk 文件,沒有源文件。

pvauthor:pvauthor 庫文件的Android.mk 文件,沒有源文件。

tools_v2:編譯工具以及一些可注冊的模塊。

?

在external/opencore/目錄中還有2 個文件,如下所示:

Android.mk:全局的編譯文件

pvplayer.conf:配置文件

在external/opencore/的各個子文件夾中包含了眾多的Android.mk 文件,它們之間還存在

著“遞歸”的關(guān)系。例如根目錄下的Android.mk,就包含了如下的內(nèi)容片斷:

include $(PV_TOP)/pvcommon/Android.mk

include $(PV_TOP)/pvplayer/Android.mk

include $(PV_TOP)/pvauthor/Android.mk

這表示了要引用pvcommon,pvplayer 和pvauthor等文件夾下面的Android.mk 文件。

external/opencore/的各個Android.mk 文件可以按照排列組合進(jìn)行使用,將幾個Android.mk

內(nèi)容合并在一個庫當(dāng)中。

?

OpenCore 的編譯結(jié)構(gòu)

1、庫的層次關(guān)系:在Android 的開源版本中編譯出來的內(nèi)容,OpenCore 編譯出來的各個庫如

下所示:

libopencoreauthor.so:OpenCore 的Author 庫

libopencorecommon.so:OpenCore 底層的公共庫

libopencoredownloadreg.so:下載注冊庫

libopencoredownload.so:下載功能實(shí)現(xiàn)庫

libopencoremp4reg.so:MP4 注冊庫

libopencoremp4.so:MP4 功能實(shí)現(xiàn)庫

libopencorenet_support.so:網(wǎng)絡(luò)支持庫

libopencoreplayer.so:OpenCore 的Player 庫

libopencorertspreg.so:RTSP 注冊庫

libopencorertsp.so:RTSP 功能實(shí)現(xiàn)庫

這些庫的層次關(guān)系如下圖所示:

?

OpenCore 的各個庫之間具有如下的關(guān)系:

1)libopencorecommon.so 是所有的庫的依賴庫,提供了公共的功能;

2)libopencoreplayer.so 和libopencoreauthor.so是兩個并立的庫,分別用于回放和

記錄,而且這兩個庫是OpenCore 對外的接口庫;

3)libopencorenet_support.so 提供網(wǎng)絡(luò)支持的功能;

一些功能以插件(Plug-In)的方式放入Player 中使用,每個功能使用兩個庫,一個實(shí)現(xiàn)具體

功能,一個用于注冊。

2、libopencorecommon.so 庫的結(jié)構(gòu)

libopencorecommon.so 是整個OpenCore的核心庫, 它的編譯控制的文件的路徑為

pvcommon/Android.mk,這個文件使用遞歸的方式尋找子文件:include $(BUILD_SHARED_LIBRARY)

include$(PV_TOP)//oscl/oscl/osclbase/Android.mk

include$(PV_TOP)//oscl/oscl/osclerror/Android.mk

include $(PV_TOP)//oscl/oscl/osclmemory/Android.mk

include$(PV_TOP)//oscl/oscl/osclutil/Android.mk

include $(PV_TOP)//oscl/pvlogger/Android.mk

include$(PV_TOP)//oscl/oscl/osclproc/Android.mk

include$(PV_TOP)//oscl/oscl/osclio/Android.mk

include $(PV_TOP)//oscl/oscl/osclregcli/Android.mk

include$(PV_TOP)//oscl/oscl/osclregserv/Android.mk

include$(PV_TOP)//oscl/unit_test/Android.mk

include$(PV_TOP)//oscl/oscl/oscllib/Android.mk

include $(PV_TOP)//pvmi/pvmf/Android.mk

include$(PV_TOP)//baselibs/pv_mime_utils/Android.mk

include$(PV_TOP)//nodes/pvfileoutputnode/Android.mk

include$(PV_TOP)//baselibs/media_data_structures/Android.mk

include$(PV_TOP)//baselibs/threadsafe_callback_ao/Android.mk

include$(PV_TOP)//codecs_v2/utilities/colorconvert/Android.mk

include $(PV_TOP)//codecs_v2/audio/gsm_amr/amr_nb/common/Android.mk

include$(PV_TOP)//codecs_v2/video/avc_h264/common/Android.mk

這些被包含的Android.mk 文件真正指定需要編譯的文件,這些文件在Android.mk 的目錄及

其子目錄中。事實(shí)上,在libopencorecommon.so 庫中包含了以下內(nèi)容:

1)OSCL 的所有內(nèi)容

2)Pvmf 框架部分的內(nèi)容(pvmi/pvmf/Android.mk)

3)基礎(chǔ)庫中的一些內(nèi)容(baselibs)

4)編解碼的一些內(nèi)容

5)文件輸出的node(nodes/pvfileoutputnode/Android.mk)

從庫的結(jié)構(gòu)中可以看出, 最終生成庫的結(jié)構(gòu)與OpenCore 的層次關(guān)系并非完全重合。

libopencorecommon.so 庫中就包含了底層的OSCL的內(nèi)容、PVMF 的框架以及Node 和編解碼的工具。

3、libopencoreplayer.so 庫的結(jié)構(gòu)

libopencoreplayer.so 是用于播放的功能庫, 它的編譯控制的文件的路徑為

pvplayer/Android.mk,它包含了以下的內(nèi)容:

include $(BUILD_SHARED_LIBRARY)

include$(PV_TOP)//engines/player/Android.mk

include$(PV_TOP)//codecs_v2/audio/aac/dec/util/getactualaacconfig/Android.mk

include$(PV_TOP)//codecs_v2/video/avc_h264/dec/Android.mk

include $(PV_TOP)//codecs_v2/audio/aac/dec/Android.mk

include$(PV_TOP)//codecs_v2/audio/gsm_amr/amr_nb/dec/Android.mk

include$(PV_TOP)//codecs_v2/audio/gsm_amr/amr_wb/dec/Android.mk

include$(PV_TOP)//codecs_v2/audio/gsm_amr/common/dec/Android.mk

include $(PV_TOP)//codecs_v2/audio/mp3/dec/Android.mk

include$(PV_TOP)//codecs_v2/utilities/m4v_config_parser/Android.mk

include$(PV_TOP)//codecs_v2/utilities/pv_video_config_parser/Android.mk

include$(PV_TOP)//codecs_v2/omx/omx_common/Android.mk

include $(PV_TOP)//codecs_v2/omx/omx_queue/Android.mk

include$(PV_TOP)//codecs_v2/omx/omx_h264/Android.mk

include$(PV_TOP)//codecs_v2/omx/omx_aac/Android.mk

include$(PV_TOP)//codecs_v2/omx/omx_amr/Android.mk

include$(PV_TOP)//codecs_v2/omx/omx_mp3/Android.mk

include $(PV_TOP)//codecs_v2/omx/factories/omx_m4v_factory/Android.mk

include$(PV_TOP)//codecs_v2/omx/omx_proxy/Android.mk

include $(PV_TOP)//nodes/common/Android.mk

include$(PV_TOP)//pvmi/content_policy_manager/Android.mk

include$(PV_TOP)//pvmi/content_policy_manager/plugins/oma1/passthru/Android.mk

include$(PV_TOP)//pvmi/content_policy_manager/plugins/common/Android.mk

include$(PV_TOP)//pvmi/media_io/pvmiofileoutput/Android.mk

include$(PV_TOP)//fileformats/common/parser/Android.mk

include $(PV_TOP)//fileformats/id3parcom/Android.mk

include$(PV_TOP)//fileformats/rawgsmamr/parser/Android.mk

include$(PV_TOP)//fileformats/mp3/parser/Android.mk

include$(PV_TOP)//fileformats/mp4/parser/Android.mk

include$(PV_TOP)//fileformats/rawaac/parser/Android.mk

include $(PV_TOP)//fileformats/wav/parser/Android.mk

include$(PV_TOP)//nodes/pvaacffparsernode/Android.mk

include$(PV_TOP)//nodes/pvmp3ffparsernode/Android.mk

include$(PV_TOP)//nodes/pvamrffparsernode/Android.mk

include$(PV_TOP)//nodes/pvmediaoutputnode/Android.mk

include$(PV_TOP)//nodes/pvomxvideodecnode/Android.mk

include$(PV_TOP)//nodes/pvomxaudiodecnode/Android.mk

include$(PV_TOP)//nodes/pvwavffparsernode/Android.mk

include$(PV_TOP)//pvmi/recognizer/Android.mk

include$(PV_TOP)//pvmi/recognizer/plugins/pvamrffrecognizer/Android.mk

include$(PV_TOP)//pvmi/recognizer/plugins/pvmp3ffrecognizer/Android.mk

include$(PV_TOP)//pvmi/recognizer/plugins/pvwavffrecognizer/Android.mk

include$(PV_TOP)//engines/common/Android.mk

include$(PV_TOP)//engines/adapters/player/framemetadatautility/Android.mk

include$(PV_TOP)//protocols/rtp_payload_parser/util/Android.mk

include $(PV_TOP)//android/Android.mk

include$(PV_TOP)//android/drm/oma1/Android.mk

include$(PV_TOP)//tools_v2/build/modules/linux_rtsp/core/Android.mk

include $(PV_TOP)//tools_v2/build/modules/linux_rtsp/node_registry/Android.mk

include$(PV_TOP)//tools_v2/build/modules/linux_net_support/core/Android.mk

include$(PV_TOP)//tools_v2/build/modules/linux_download/core/Android.mk

include $(PV_TOP)//tools_v2/build/modules/linux_download/node_registry/Android.mk

include$(PV_TOP)//tools_v2/build/modules/linux_mp4/core/Android.mk

include$(PV_TOP)//tools_v2/build/modules/linux_mp4/node_registry/Android.mk

libopencoreplayer.so 中包含了以下內(nèi)容:

1)一些解碼工具

2)文件的解析器(mp4)

3)解碼工具對應(yīng)的Node

4)player 的引擎部分(engines/player/Android.mk)

5)為Android 的player 適配器(android/Android.mk)

6)識別工具(pvmi/recognizer)

7)編解碼工具中的OpenMax 部分(codecs_v2/omx)

8)對應(yīng)幾個插件Node 的注冊

libopencoreplayer.so 中的內(nèi)容較多,其中主要為各個文件解析器和解碼器,PVPlayer 的核心功能在engines/player/Android.mk 當(dāng)中,而android/Android.mk 的內(nèi)容比較特殊,它是在PVPlayer 之上構(gòu)建的一個為Android 使用的播放器。

4、libopencoreauthor.so 庫的結(jié)構(gòu)

libopencoreauthor.so 是用于媒體流記錄的功能庫, 它的編譯控制的文件的路徑為

pvauthor/Android.mk,它包含了以下的內(nèi)容:

include $(BUILD_SHARED_LIBRARY)

include$(PV_TOP)//engines/author/Android.mk

include $(PV_TOP)//codecs_v2/video/m4v_h263/enc/Android.mk

include$(PV_TOP)//codecs_v2/audio/gsm_amr/amr_nb/enc/Android.mk

include$(PV_TOP)//codecs_v2/video/avc_h264/enc/Android.mk

include$(PV_TOP)//fileformats/mp4/composer/Android.mk

include $(PV_TOP)//nodes/pvamrencnode/Android.mk

include$(PV_TOP)//nodes/pvmp4ffcomposernode/Android.mk

include$(PV_TOP)//nodes/pvvideoencnode/Android.mk

include$(PV_TOP)//nodes/pvavcencnode/Android.mk

include$(PV_TOP)//nodes/pvmediainputnode/Android.mk

include $(PV_TOP)//android/author/Android.mk

libopencoreauthor.so 中包含了以下內(nèi)容:

1)一些編碼工具(視頻流H263、H264,音頻流Amr)

2)文件的組成器(mp4)

3)編碼工具對應(yīng)的Node

4)表示媒體輸入的Node(nodes/pvmediainputnode/Android.m)

5)author 的引擎部分(engines/author/Android.mk)

6)為Android 的author 適配器(android/author/Android.mk)

libopencoreauthor.so 中主要為各個文件編碼器和文件組成器,PVAuthor 的核心功能在

engines/author/Android.mk 當(dāng)中,而android/author/Android.mk 是在PVAuthor 之上構(gòu)建的一個為Android 使用的媒體記錄器。

5、其他庫

另外的幾個庫的Android.mk 文件的路徑如下所示:

網(wǎng)絡(luò)支持庫libopencorenet_support.so:

tools_v2/build/modules/linux_net_support/core/Android.mk

MP4 功能實(shí)現(xiàn)庫libopencoremp4.so 和注冊庫libopencoremp4reg.so:

tools_v2/build/modules/linux_mp4/core/Android.mk

tools_v2/build/modules/linux_mp4/node_registry/Android.mk

RTSP 功能實(shí)現(xiàn)庫libopencorertsp.so 和注冊庫libopencorertspreg.so:

tools_v2/build/modules/linux_rtsp/core/Android.mk

tools_v2/build/modules/linux_rtsp/node_registry/Android.mk

下載功能實(shí)現(xiàn)庫libopencoredownload.so 和注冊庫libopencoredownloadreg.so:

tools_v2/build/modules/linux_download/core/Android.mk

tools_v2/build/modules/linux_download/node_registry/Android.mk

?


總結(jié)

以上是生活随笔為你收集整理的OpenCore 的代码结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。