国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

全方位解讀Android多媒體框架源碼

移動開發 Android
Android多媒體框架的源代碼存放在external/opencore/這個根目錄中。我們將會在文章中對這目錄相關內容進行全方位的分析。

Android中對于圖形界面以及多媒體的相關操作比較容易實現。而且對于大多數手機用戶來說,他們主要也就是根據這些方面的功能來對系統那個進行修改。我們可以通過本文介紹的Android多媒體框架的源碼解讀,來具體分析一下這方面的基本知識。#t#

Android多媒體框架的代碼在以下目錄中:external/opencore/。這個目錄是Android多媒體框架的根目錄,其中包含的子目錄如下所示:

* android:這里面是一個上層的庫,它基于PVPlayer和PVAuthor的SDK實現了一個為Android使用的Player和Author。

* baselibs:包含數據結構和線程安全等內容的底層庫

* codecs_v2:這是一個內容較多的庫,主要包含編解碼的實現,以及一個OpenMAX的實現

* engines:包含PVPlayer和PVAuthor引擎的實現

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

* fileformats:文件格式的據具體解析(parser)類

* nodes:編解碼和文件解析的各個node類。

* oscl:操作系統兼容庫

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

* protocols:主要是與網絡相關的RTSP、RTP、HTTP等協議的相關內容

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

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

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

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

Splitter的定義與初始化

以wav的splitter為例,在fileformats目錄下有解析wav文件格式的pvwavfileparser.cpp文件,在nodes目錄下有pvmf_wavffparser_factory.cpp,pvmf_wavffparser_node.h, pvmf_wavffparser_port.h等文件。

我們由底往上看,vwavfileparser.cpp中的PV_Wav_Parser類有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的成員函數,此類應該就是最終的解析類。我們搜索PV_Wav_Parser類被用到的地方可知,在PVMFWAVFFParserNode類中有PV_Wav_Parser的一個指針成員變量。

再搜索可知,PVMFWAVFFParserNode類是通過PVMFWAVFFParserNodeFactory的CreatePVMFWAVFFParserNode()成員函數生成的。而CreatePVMFWAVFFParserNode()函數是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()類構造函數中通過PVPlayerNodeInfo類被注冊到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> 的vector中,在這個構造函數中,AMR,mp3等node也是同樣被注冊的。

由上可知,Android多媒體框架中對splitter的管理也是與ffmpeg等類似,都是在框架的初始化時注冊的,只不過Opencore注冊的是每個splitter的factory函數。

綜述一下splitter的定義與初始化過程:

每個splitter都在fileformats目錄下有個對應的子目錄,其下有各自的解析類。

每個splitter都在nodes目錄下有關對應的子目錄,其下有各自的統一接口的node類和node factory類。

播放引擎PVPlayerEngine類中有PVPlayerNodeRegistry iPlayerNodeRegistry成員變量。

在PVPlayerNodeRegistry的構造函數中,將 AMR, AAC, MP3等splitter的輸入與輸出類型標示和node factory類中的create node與release delete接口通過PVPlayerNodeInfo類push到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> iType成員變量中。

當前Splitter的匹配過程

PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector<PVUuid, OsclMemAllocator>& aUuids)函數的功能是根據輸入類型和輸出類型,在已注冊的node vector中尋找是否有匹配的node,有的話傳回其唯一識別標識PVUuid。

從QueryRegistry這個函數至底向上搜索可得到,在android中splitter的匹配過程如下:

android_media_MediaPlayer.cpp之中定義了一個JNINativeMethod(JAVA本地調用方法)類型的數組gMethods,供java代碼中調用MultiPlayer類的setDataSource成員函數時找到對應的c++函數

 

  1. {"setDataSource", "(Ljava/lang/String;)V", (void *)
    android_media_MediaPlayer_setDataSource},  
  2. static void android_media_MediaPlayer_setDataSource
    (JNIEnv *env, jobject thiz, jstring path) 

 

此函數中先得到當前的MediaPlayer實例,然后調用其setDataSource函數,傳入路徑

 

  1. status_t MediaPlayer::setDataSource(const char *url)  

此函數通過調getMediaPlayerService()先得到當前的MediaPlayerService, const sp<IMediaPlayerService>& service(getMediaPlayerService());

然后新建一個IMediaPlayer變量, sp<IMediaPlayer> player(service->create(getpid(), this, fd, offset, length));

在sp<IMediaPlayer> MediaPlayerService::create(pid_t pid, const sp<IMediaPlayerClient>& client, const char* url)中

調status_t MediaPlayerService::Client::setDataSource(const char *url)函數,Client是MediaPlayerService的一個內部類。

在MediaPlayerService::Client::setDataSource中,調sp<MediaPlayerBase> MediaPlayerService::Client::createPlayer(player_type playerType)

生成一個繼承自MediaPlayerBase的PVPlayer實例。

以上就是對Android多媒體框架的源代碼的解讀。

責任編輯:曹凱 來源: CSDN
相關推薦

2009-12-15 10:10:42

Ruby過程對象

2010-01-04 14:06:35

Silverlight

2009-12-16 17:07:27

Ruby on Rai

2009-12-21 13:06:05

WCF Address

2014-06-26 17:25:22

車聯網 ECU

2011-10-26 09:28:28

紅帽大數據Gluster

2009-12-15 10:48:54

Ruby局部變量

2009-12-14 17:04:13

Ruby讀寫UNIX命

2011-06-09 10:07:28

Qt phonon

2024-05-10 14:35:56

人工智能大型語言模型

2010-01-05 09:57:34

.NET Framew

2016-02-16 14:42:58

戴爾云計算

2013-03-01 09:56:57

2016-12-14 14:43:11

ButterknifeAndroid

2009-12-15 17:28:11

Ruby自動化腳本框架

2017-08-09 09:19:30

2010-01-11 13:42:20

VB.NET字符串加密

2011-04-22 09:05:26

2024-04-08 11:52:08

PromQL技術監控

2010-08-04 14:15:44

nfs服務
點贊
收藏

51CTO技術棧公眾號

国产欧美亚洲日本| 91淫黄看大片| 国产国产精品| 九九热在线精品视频| 福利小视频在线| 色域天天综合网| 蜜桃臀av在线| 一区二区三区高清| a优女a优女片| 亚洲免费看黄网站| 美女黄色片视频| 国产99久久久国产精品免费看| 久久久久久久有限公司| 99热国内精品| 51成人做爰www免费看网站| 无码国模国产在线观看| 久久久精品网站| 亚洲精品伊人| 中文字幕成人精品久久不卡| 户外露出一区二区三区| 精品中文字幕久久久久久| 人人草在线视频| 亚洲国内精品视频| 性欧美hd调教| 中文在线不卡视频| 国产精品麻豆| 欧美亚洲一级片| 欧美电影在线观看完整版| 日本欧美一级片| 91综合网人人| 超碰97在线人人| 日日摸夜夜添夜夜添国产精品| 欧美日韩高清免费| 国产在线精品不卡| 男人添女荫道口喷水视频| 国产精品综合一区二区三区| 韩国无码av片在线观看网站| 国产传媒欧美日韩成人| 成人小视频在线观看免费| 99精品在线观看视频| 久久精品xxx| 久久亚洲一区二区三区明星换脸| 能看的毛片网站| 一个色妞综合视频在线观看| 国产亚洲依依| 日韩精品一区二区三区四区视频| 色偷偷色偷偷色偷偷在线视频| 日韩精品中文字幕在线| 欧美一级在线| 国产97色在线|日韩| 天天精品视频| 久久精品一二三区| 国精品**一区二区三区在线蜜桃 | 麻豆中文一区二区| 国产亚洲精品久久久久久久| 国产亚洲精品超碰| 视频免费裸体网站| 91精品国产综合久久久久久 | 在线观看成人一级片| av不卡一区二区三区| 97福利电影| 欧美精品黑人性xxxx| 丁香六月综合| 日韩美女在线看| 国产亚洲高清视频| 国产男女无遮挡| 香蕉乱码成人久久天堂爱免费| 老司机精品视频在线观看6| 色综久久综合桃花网| 成人女性视频| 国产精品无码乱伦| 国产精品视频在线免费观看| 国产一区二区成人久久免费影院 | 国产91色在线免费| 亚洲深夜影院| av蜜臀在线| 91久久久久久久久久久| 99九九热只有国产精品| 手机在线免费观看毛片| 国产亚洲在线播放| 亚洲综合男人的天堂| 日韩欧美高清一区二区三区| 色一情一区二区三区四区 | 国产乱真实合集| 台湾成人av| 国产91av视频在线观看| 91影视免费在线观看| 日韩一二三四区| 亚洲激情专区| 人妖欧美1区| 你懂的网址一区二区三区| 亚洲午夜久久久久| 天堂电影一区| 国产欧美日韩亚洲| 亚洲精品aⅴ中文字幕乱码| 亚洲免费二区| 免费高清在线观看| 视频一区国产精品| 岛国精品视频在线播放| 精品一区二区三区中文字幕在线 | 国产一区在线观看麻豆| 99热热99| 欧美精品一区二区三区蜜桃视频| 欧美成人免费在线| 国产成人短视频| 色悠悠久久久久| 天天综合色天天综合| 亚洲综合网站| 4438x成人网全国最大| 2022亚洲天堂| 欧美成人在线网站| 97久久精品人人做人人爽| 日韩在线免费| 久久国产精品免费观看| 欧美精品一区在线| 日韩av片免费在线观看| 欧洲亚洲国产日韩| 粉嫩绯色av一区二区在线观看| 日韩一区电影| 老司机在线免费视频| 日韩成人av网站| 午夜伦理精品一区| 欧美一区二区三区爱爱| 国产精品久久久久一区二区国产 | 成人avav影音| 污污网站在线看| 亚洲free嫩bbb| 一区二区三区精品| 亚洲专区**| 三上悠亚久久精品| 亚洲男人天堂2023| 日本视频免费一区| bestiality新另类大全| 国产一区二区免费电影| 在线亚洲精品福利网址导航| 婷婷色综合网| 三级在线播放| 97超碰最新| 在线观看不卡视频| 欧美视频四区| 高清毛片在线看| 国产一区免费在线| 在线不卡a资源高清| 国产精品毛片| 国产色婷婷在线| 久久久久久久久影视| 亚洲新声在线观看| 成人午夜av在线| 999精品嫩草久久久久久99| 国产h视频在线播放| 欧美成年人网站| 亚洲人成在线播放网站岛国| 精品国产a一区二区三区v免费| 久草在线资源视频在线观看| 成人激情免费在线| 欧美日韩免费一区二区三区视频| 中文亚洲免费| 麻豆国产在线| 亚洲熟妇av一区二区三区漫画| 欧美人与物videos| 亚洲综合图片区| 综合av在线| 1区2区3区在线视频| 影音先锋男人的网站| 久久久精品网站| 一区二区三区欧美日韩| 欧美视频福利| 欧美理论影院| 成人三级av| 成人动漫在线视频| 亚洲精品有码在线| 日本一区二区三区dvd视频在线| 亚洲视频分类| 狠狠狠综合7777久夜色撩人| 亚洲春色综合另类校园电影| 久久久91精品| 亚洲电影第三页| 免费高清成人在线| 欧美久久一区二区三区| 日本护士...精品国| 亚洲av综合色区| 久久久久久一区二区三区| 色综合一个色综合| 国产精品一二三四| av一区二区高清| 在线中文字幕电影| 免费黄色特级片| 91免费视频网站| 亚洲色图18p| 樱花草国产18久久久久| 久久久久久久高潮| swag国产精品一区二区| wwwxxx在线观看| 欧美日韩二三区| 97久久天天综合色天天综合色hd| 国产一级揄自揄精品视频| 午夜国产精品一区| 成人综合婷婷国产精品久久| 色琪琪久久se色| 欧美在线一级|