在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采用Android多媒體框架實現重力感應

電子設計 ? 作者:電子設計 ? 2018-10-23 10:26 ? 次閱讀

Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統的名稱,該平臺由操作系統、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。目前,最新版本為Android 2.4 Gingerbread和Android 3.0 Honeycomb.Android是基于Linux內核的操作系統,是Google公司在2007年11月5日公布的手機操作系統。它采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分。底層Linux內核只提供基本功能,其他的應用軟件則由各公司自行開發,部分程序以Java編寫。我們可以通過本文介紹的Android多媒體框架的源碼解讀,來具體分析一下這方面的基本知識。

重力感應裝置包括感應器、處理器控制器三個部分。感應器負責偵測存儲器的狀態,計算存儲器的重力加速度值;處理器則對加速度值是否超出安全范圍進行判斷;而控制器則負責控制將磁頭鎖定或者釋放出安全停泊區。一旦感應器偵測并經處理器判斷當前的重力加速度超過安全值之后,控制器就會通過硬件控制磁頭停止讀寫工作,并快速歸位,鎖定在專有的磁頭停泊區。這一系列動作會在200毫秒內完成。當感應裝置探測到加速度值恢復到正常值范圍之后,產品才會恢復工作。

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 的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 iType成員變量中。

當前Splitter的匹配過程

PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector& 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函數,傳入路徑

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

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

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

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

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

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

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

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


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19485

    瀏覽量

    231516
  • 控制器
    +關注

    關注

    113

    文章

    16508

    瀏覽量

    179968
  • Android
    +關注

    關注

    12

    文章

    3946

    瀏覽量

    128181
收藏 人收藏

    評論

    相關推薦

    CEVA推出用于高能效多內核系統的AMF - Android多媒體框架

    全球領先的硅產品知識產權(SIP)平臺解決方案和數字信號處理器(DSP)內核授權廠商CEVA公司針對基于Android系統推出全新低能耗軟件框架,它使用異構CPU和DSP系統架構,能夠有效地降低復雜多媒體應用所需的功耗。
    發表于 05-06 10:24 ?1694次閱讀

    多媒體應用開發

    主要內容多媒體框架(MMF)客戶端API音頻程序開發視頻程序開發攝像頭使用
    發表于 03-08 22:50

    基于ARM Linux QT的掌上多媒體系統的設計和實現 (1)

    跟著人們糊口水平的進步,消費結構發生了巨大變化,消費者用于娛樂方面的支出在總支出中所占的比例正在不斷擴大。掌上多媒體系統可以知足人們對于試聽以及便攜的需求,另外還可以實現一些其他功能,如圖片瀏覽
    發表于 08-04 10:15

    多媒體空中鼠標

    項目說明:多媒體空中鼠標是一個集無線傳輸、多媒體控制、教學激光筆和傳統鼠標功能于一身的創新生活作品。它擺脫了傳統鼠標有數據線和必須放在平臺上的命運,只要在空中擺動就可以實現指針的偏移,達到控制的目的
    發表于 10-31 18:07

    多媒體空中鼠標

    `作品進展:目前已處于調試狀態,空中鼠標是利用靜態重力感應來控制電腦的鼠標指針,多媒體的功能主要體現在對電腦的各個軟件的控制和對家庭不同電器的控制,例如:控制PPT,控制音樂軟件,控制視頻播放軟件
    發表于 12-15 18:15

    多媒體的FPGA實現PDF

    多媒體的FPGA實現PDF
    發表于 10-26 21:14

    采用Au1200實現多媒體播放終端設計

    終端的設計方案。 2 硬件設計 2.1 功能分析 表1對新一代網絡播放終端與獨立播放機進行了比較。為了實現網絡遠程控制播放,多媒體播放終端必須具備以下功能:1)連接服務器:啟動后,自動連接遠程服務器;2
    發表于 04-25 07:00

    怎么實現在嵌入式環境下使用QT多媒體框架

    要在嵌入式環境下使用QT多媒體框架,必須包含第3方多媒體庫QT本身以插件的方式使用第3方多媒體庫:1 插件是動態庫方式,可以動態更新2 靜態插件的方式,只是靜態編譯QT時集成插件,不可
    發表于 10-27 09:34

    ART-PI重力感應無線智能小車設計實現

    實現無線重力感應遙控小車。終極目標:發射板采用MPU6050采集陀螺儀數據,通過wifi+MQTT協議發布主題至Onenet服務器,控制板通過wifi+MQTT訂閱主題,
    發表于 02-10 06:39

    HarmonyOS多媒體框架介紹

    可以通過該接口調用實現對音頻數據的采集。Audio Manager提供了音頻流類型、音量、音頻設備管理等接口,開發者可以通過調用該接口實現對相關音頻對象的管理。 以上是多媒體框架的相
    發表于 01-03 16:36

    凌陽多媒體獲授權采用CEVA MM2000多媒體解決方案開發

    凌陽多媒體獲授權采用CEVA MM2000多媒體解決方案開發便攜式多媒體處理器 硅產品知識產權 (SIP) 平臺解決方案和數字信號處理器 (DSP) 內核授權廠商CEVA公司宣布,凌
    發表于 09-16 09:59 ?922次閱讀

    Viosoft推出針對MIPS-Based數字多媒體設計的A

    Viosoft推出針對MIPS-Based數字多媒體設計的Android采用套件 日前,Viosoft公司宣布針對MIPS-Based數字多媒體設計推出
    發表于 12-08 08:42 ?1236次閱讀

    基于JMF的多媒體遠程監控系統的設計

    首先簡單介紹了多媒體遠程監控系統的概念和Java多媒體框架(JMF)的優點;然后給出了多媒體遠程監控系統的系統結構設計;并重點論述了實現
    發表于 09-20 16:05 ?15次下載
    基于JMF的<b class='flag-5'>多媒體</b>遠程監控系統的設計

    軟方電子:android車載多媒體終端

    Android車載多媒體終端,“硬件+軟件”全套解決方案,具備很強的擴展性,豐富的免費應用,可以實現對汽車導航、信息、娛樂綜合系統的深度定制。
    的頭像 發表于 10-10 10:24 ?2025次閱讀

    HarmonyOS多媒體框架介紹

    作為一款全新的面向全場景的分布式操作系統,不斷創新,致力于為開發者提供更好、更高效的使用體驗。接下來讓我們一起學習了解下HarmonyOS中的多媒體框架的相關知識吧! 多媒體框架介紹結
    的頭像 發表于 12-30 19:15 ?826次閱讀
    主站蜘蛛池模板: 久久青草国产免费观看 | 成人欧美另类人妖 | 色香影院 | 久久久久久久久久久9精品视频 | 91免费视 | 一级特黄高清完整大片 | 天天操天天摸天天爽 | 日韩精品午夜 | 国产午夜精品一区二区理论影院 | 黄色特级毛片 | 91大神在线精品网址 | 一级不卡毛片免费 | 天天干天天干天天色 | 色爱综合网欧美 | 欧美hhh | 日韩一级一欧美一级国产 | 天天澡天天干 | 四虎免费看黄 | 鲁丝一区二区三区 | 狠狠干欧美 | 中文字幕亚洲天堂 | 国产农村三片免费网站 | 欧美一级在线免费观看 | 中文在线天堂网www 中文在线资源链接天堂 | 黄色视屏在线免费观看 | 高清xxx| 免费人成在线观看网站品爱网 | 国产成人经典三级在线观看 | 亚洲欧美婷婷 | 欧美深夜| 狠狠干网| 色伊人久久 | 四虎影院永久在线 | 无内丝袜透明在线播放 | 亚洲专区一路线二 | 黄视频网站在线看 | 亚洲午夜精品久久久久 | 国产精品视频一区二区三区 | 67xxxxxx日本| 久久网综合 | 午夜噜噜噜私人影院在线播放 |