freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的openmax框架研究與開發(fā)碩士學位論文(編輯修改稿)

2025-07-20 22:47 本頁面
 

【文章內(nèi)容簡介】 layer 傳給WMADecoder 再傳給WMAExtractor,WMAExtractor 根據(jù)上層傳來的SeekTime 判斷出要播放的原始數(shù)據(jù)的起始位置,然后從該位置讀取一個數(shù)據(jù)包傳給WMADecoder 解碼[16]。 本章小結(jié)本章為全文的第二章,介紹了Android操作系統(tǒng)構(gòu)成,重點介紹了Android多媒體框架的組成,最后介紹了目前的編解碼。9浙江大學碩士學位論文 第3章OpenMAX介紹第3章 OpenMAX介紹本章主要分析了OpenMAX框架的主要運行的模式,介紹了幾個重要功能模塊和接口函數(shù)。和Android中的情況。 OpenMAX的簡介OpenMAX是無授權費的,實現(xiàn)跨平臺的應用程序接口API,目的是使媒體加速組件能夠在開發(fā)、集成和編程各個環(huán)節(jié)中能夠屏蔽硬件的差別同時實現(xiàn)接口統(tǒng)一,方便調(diào)用。也為設備提供比較全面的編解碼器和應用程序來屏蔽硬件。OpenMAX API將會和處理器一起提供,以使庫和編解碼器的開發(fā)者能夠高速有效地利用硬件芯片的完整加速潛能,并且無需擔心底層硬件結(jié)構(gòu)[8]。 OpenMAX的概述 OpenMAX標準化接口[17]OpenMAX是Khronos公司制定的針對手持設備和嵌入式移動設備的行業(yè)標準。它是無授權費的,跨平臺的API 接口。OpenMAX標準主要是針對嵌入式移動設備和手機移動設備的多媒體架構(gòu) 。并且在架構(gòu)底層上可以為多媒體文件進行的codec或數(shù)據(jù)處理定義了一套完整統(tǒng)一的編程接口(OpenMAX API),同時對多媒體數(shù)據(jù)處理的時候進行了系統(tǒng)的封裝抽象,屏蔽了底層的結(jié)構(gòu),更加快速開發(fā)程序。因此,大多數(shù)的多媒體軟件和多媒體框架都是通過OpenMAX來實現(xiàn)一套非常完整統(tǒng)一的接口,讓codec和其他多媒體的數(shù)據(jù)處理功能變的更加方便,同時實現(xiàn)了跨越軟硬件平臺的可移植性[18]。OpenMAX共分為3層:OpenMAX IL(Integration Layer), OpenMAX DL (Development Layer), OpenMAX AL (Appliction Layer)。 OpenMAX IL(Integration Layer) OpenMAX IL 是由Khronos 組織發(fā)起并起草的一個公開的技術標準,2005 年12 月發(fā)布第一個版本,目前的最新版本是version 。OpenMAX IL 作為實現(xiàn)音頻,視頻和圖像編解碼器與多媒體編解碼器的交互,并且統(tǒng)一的行為來支持組件。這些編解碼器或者是軟件解碼器,或者是硬件解碼器,或許是軟硬件的混合體。OpenMAX IL提供了透明的媒體框架,為編解碼器提供一個系統(tǒng)抽象,它解決了不同媒體系統(tǒng)之間編解碼移植的問題。OpenMAX API會和處理器一起提供的,為庫和編解碼器開發(fā)者可以高速有效地利用新器件的完整加速潛能,不需擔心其底層的硬件結(jié)構(gòu)。在架構(gòu)底層上為多媒體的編解碼和數(shù)據(jù)處理提供了統(tǒng)一的編程接口,對多媒體數(shù)據(jù)的處理功能進行系統(tǒng)級抽象,為用戶屏蔽了底層的細節(jié)。因此,多媒體應用程序和多媒體框架通過OpenMAX IL可以以一種統(tǒng)一的方式來使用編解碼和其他多媒體數(shù)據(jù)處理功能,具有了跨越軟硬件平臺的移植性。OpenMAX IL目前已經(jīng)成為了事實上的多媒體框架標準。嵌入式處理器或者多媒體編解碼模塊的硬件生產(chǎn)者,常常提供標準的OpenMAX IL層的軟件接口,這樣軟件的開發(fā)者就可以基于這個層次的標準化接口進行多媒體程序的開發(fā)。在Android中,OpenMAX IL層,通??梢杂糜诙嗝襟w框架的插件,Android的多媒體框架OpenCore和StageFright都可以使用OpenMAX作為插件,主要用于編解碼(Codec)處理。OpenMAX 。圖 OpenMAX IL 層次結(jié)構(gòu)OpenMAX IL以組件的形式封裝了應用程序所需的功能,每個組件對應一個功能模塊, 組件可以分類為輸入(sources),輸出(sinks),過濾器(filters),分離器(splitters),混合器(mixers)等。組件端口主要用于組件數(shù)據(jù)的輸入輸出。用于發(fā)送數(shù)據(jù)到端口和從端口獲取數(shù)據(jù)的函數(shù)分別是EmptyThisBuffer 和FillThisBuffer,這兩個調(diào)用均是異步的。每個OpenMAX IL 組件都要經(jīng)歷一系列的狀態(tài)轉(zhuǎn)換。組件通過OpenMAX IL 內(nèi)核的調(diào)用加載并轉(zhuǎn)換為加載(Loaded)狀態(tài),其他的狀態(tài)轉(zhuǎn)換通過IL client 與組件的直接通信完成。IL client 通過OMX_SendCommand 函數(shù)使用OMX_CommandStateSet 命令控制組件改變狀態(tài)[19]。其中,OpenMAX IL層主要實現(xiàn)了OpenMAX IL中的各個組(Component)。對下層來說,OpenMAX IL可以直接調(diào)用各種Codec實現(xiàn)。對上層來說,OpenMAX IL可以向應用程序提供接口供應用程序調(diào)用。OpenMAX IL主要內(nèi)容如下所示:l 客戶端(Client):OpenMAX IL的調(diào)用者。l 組件(Component):OpenMAX IL的單元,每一個組件實現(xiàn)一種功能。l 端口(Port):組件的輸入輸出接口。l 隧道化(Tunneled):讓兩個組件直接連接的方式。OpenMAX 圖 OpenMAX IL 組件工作流程 OpenMAX IL客戶端調(diào)用了四個OpenMAX IL組件實現(xiàn)的編解碼器功能。四個組成分別是Source組件、Host組件、Accelerator組件和Sink組件。其中,Source組件只有一個輸出端口,Host組件有一個輸入端口和輸出端口。 Accelerator組件有一個輸入端口,使用了硬件編解碼器,以加快整個環(huán)節(jié)。Accelerator組件和Sink組件,通過私人通信,組件端口一直沒有明確的組成部分。OpenMAX IL在使用的時候,處理數(shù)據(jù)流也會有自己的不同的處理方式:既有經(jīng)過客戶端的,也有不經(jīng)過客戶端的。Source組件到Host組件的數(shù)據(jù)流就是需要客戶端的。而Host組件到Accelerator組件的數(shù)據(jù)流就沒有經(jīng)過客戶端,使用了隧道化(Tunneled)的方式。Accelerator組件和Sink組件甚至可以使用私有的通訊方式。OpenMAX IL的組件是OpenMAX IL實現(xiàn)的核心內(nèi)容,一個組件以輸入、輸出端口為接口,端口可以被連接到另一個組件上。外部對組件可以發(fā)送命令,還進行設置和獲取參數(shù)、獲取配置等操作。組件的端口可以包含緩沖區(qū)(Buffer)的隊列。OpenMAX IL的組件的處理的核心內(nèi)容就是:把Buffer放在輸入端口,如何進行解碼或者編碼操作處理;再把Buffer從輸出端口拿出,即是將解碼或者編碼后的數(shù)據(jù)進行輸出,由此多組件相聯(lián)接可以構(gòu)成流式的處理。OpenMAX 圖 OpenMAX IL 組件結(jié)構(gòu) OpenMAX IL的組件功能和它定義的端口類型密切相關,通常情況下:只有一個輸出端口的,為Source組件。只有一個輸入端口的,為Sink組件。有多個輸入端口,一個輸出端口的為Mux組件。有一個輸入端口,多個輸出端口的為DeMux組件。輸入輸出端口各一個組件的為中間處理環(huán)節(jié),這是最常見的組件。 不同的OpenMAX IL組件它的端口支持的數(shù)據(jù)類型也不同。例如,對于一個輸入、輸出端口各一個的組件,它的輸入端口可以是WMA格式的數(shù)據(jù),輸出端口可以是PCM格式的數(shù)據(jù),那么這就是一個WMA的解碼組件。隧道化(Tunneled)是關于組件連接方式的一個概念。通過隧道化可以將不同的組件的一個輸入端口和一個輸出端口連接到一起,在這種情況下,兩個組件的處理過程合并,兩個組件共同處理數(shù)據(jù)。特別的,對于一個輸入端口和一個輸出端口的組件,兩個組件可以作為類似一個組件來使用。但是這種方式在Android Opencore里沒有用到。 OpenMAX DL(Development Layer) OpenMAX DL定義了一套API ,它是音頻,視頻和圖像功能模塊的集合。它包括了音頻信號的處理功能,如 FFT 和 Filter ,圖像原始處理,如顏色空間的轉(zhuǎn)換,和視頻的原始處理,以實現(xiàn)例如 MPEG4 , ,MP3,AAC和JPEG 等編解碼器的優(yōu)化。OpenMAX 通過iDL和aDL來加速,iDL 使用 OpenMAX IL 結(jié)構(gòu),aDL向OpenMAX DL API增加了異步接口。 OpenMAX AL (Appliction Layer) OpenMAX AL 定義了一下多媒體應用程序的框架標準。 Android中OpenMAX的使用情況OpenMAX就是一個為多媒體應用程序準備的API標準。其中,OpenMAXIL(集成層)技術規(guī)格定義了媒體組件接口,以便在嵌入式器件的流媒體框架中快速集成加速編解碼器。在Android中,OpenMAX層,通常可以用于多媒體引擎的插件,Android的多媒體引擎OpenCore和StageFright都是使用OpenMAX作為插件,主要用于的編解碼(Codec)處理。在Android的框架層,在Android里面定義了一套OpenMAX接口,和標準的接口概念基本相同,但是使用C++類型的接口,并且使用了Android的BinderIPC機制。Android封裝OpenMAX的接口被StageFright使用,OpenCore沒有使用這個接口,而是使用其他形式對OpenMAXIL層接口進行封裝。Android系統(tǒng)Opencore的編解碼部分采用對OpenMAX IL層進行封裝來使用,使用的是標準OpenMAX IL層的接口,但是這些接口Google又進行了簡單的封裝,并沒有直接使用OpenMAX IL層提供的純C接口。封裝后的OpenMAX IL組件很容易被嵌入到StageFright中。 Android 中OpenMAX的實現(xiàn)的內(nèi)容Android中Opencore使用的主要是OpenMAX的編解碼功能。雖然OpenMAX也可以生成輸入、輸出、文件解析和構(gòu)建等組件,但是在各個系統(tǒng) (Android等)中使用的最多的還是編解碼組件。原因是媒體的輸入、輸出環(huán)節(jié)和系統(tǒng)的關系很大導致引入OpenMAX標準比較麻煩;文件解析和構(gòu)建環(huán)節(jié)一般也不需要使用硬件加速。編解碼組件也是最能體現(xiàn)硬件加速的環(huán)節(jié),因此最常使用。在Android Opencore中實現(xiàn)OpenMAX IL層和標準的OpenMAX IL層的方式基本相同,一般需要實現(xiàn)以下兩個環(huán)節(jié)。216。 編解碼驅(qū)動程序:位于Linux內(nèi)核空間,需要通過Linux內(nèi)核調(diào)用驅(qū)動程序,通常使用非標準的驅(qū)動程序。216。 OpenMAX IL層:根據(jù)OpenMAX IL層的標準頭文件實現(xiàn)不同功能的組件。Android中還提供了OpenMAX的適配層接口(對OpenMAX IL的標準組件進行封裝適配),它作為Android本地層接口,可以被Android的多媒體框架Opencore調(diào)用。OpenMAX IL在使用的時候,其數(shù)據(jù)流也有不同的處理方式:既可以經(jīng)由客戶端,也可以不經(jīng)由客戶端。Source組件到Host組件的數(shù)據(jù)流就是經(jīng)過客戶端的。而Host組件到Accelerator組件的數(shù)據(jù)流就沒有經(jīng)過客戶端,使用了隧道化的方式。Accelerator組件和Sink組件甚至可以使用私有的通訊方式。OpenMAX Core是輔助各個組件運行的部分,它通常需要完成各個組件的初始化等工作,在真正運行過程中,重點的是各個OpenMAX IL的組件,OpenMAX Core不是重點,也不是標準。OpenMAX IL的組件是OpenMAX IL實現(xiàn)的核心內(nèi)容,一個組件以輸入、輸出端口為接口,端口可以被連接到另一個組件上。外部對組件可以發(fā)送命令,還進行設置/獲取參數(shù)、配置等內(nèi)容。組件的端口可以包含緩沖區(qū)(Buffer)的隊列。組件的處理的核心內(nèi)容是:通過輸入端口消耗Buffer,通過輸出端口填充Buffer,由此多組件相聯(lián)接可以構(gòu)成流式的處理。組件的功能和其定義的端口類型密切相關,通常情況下:只有一個輸出端口的,為Source組件。只有一個輸入端口的,為Sink組件。有多個輸入端口,一個輸出端口的為Mux組件。有一個輸入端口,多個輸出端口的為DeMux組件。輸入輸出端口各一個組件的為中間處理環(huán)節(jié),這是最常見的組件。端口具體支持的數(shù)據(jù)也有不同的類型。例如,對于一個輸入、輸出端口各一個組件,其輸入端口使用MP3格式的數(shù)據(jù),輸出端口使用PCM格式的數(shù)據(jù),那么這個組件就是一個MP3解碼組件。隧道化(Tunneled)是一個關于組件連接方式的概念。通過隧道化可以將不同的組件的一個輸入端口和一個輸出端口連接到一起,在這種情況下,兩個組件的處理過程合并,共同處理。尤其對于單輸入和單輸出的組件,兩個組件將作為類似一個使用。 Android中的OpenMAX接口函數(shù)Android中的OMXCodec在AwesomePlayer中是充當著codec的角色。Stagefright 通過OpenMAX 框架實現(xiàn)了解碼的功能。StageFright的核心播放器AwesomePlayer中包含了spMediaSource型的mVideoSource指針,初始化時指向OMXCodec的實際對象。OMXCodec使用了Binder機制,實現(xiàn)了遠程函數(shù)調(diào)用,且函數(shù)調(diào)用模式于本地函數(shù)無異,其中IOMX作為接口類定義了OMX的大部分接口函數(shù)。OMX的具體實現(xiàn)時,OMXMaster用于管理OMX的插件,OMXNodeInstance類代表OMX的具體實例,完成和Component的調(diào)用和交互,內(nèi)部類CallbackDispatcher是一個主動類,它用于調(diào)度處理回調(diào)函數(shù)傳回的消息。OMXNodeInstance和CallbackDispatcher一一對應,協(xié)同工作,完成不同實例的消息處理。OMXNodeInstance類中最重要的幾個函數(shù)為:1. allocateBuffer: Client通過調(diào)用此函數(shù)讓Component分配Buffer。2. useBuffer: Client通過此函數(shù)將已分配好的Buffer傳給Compone
點擊復制文檔內(nèi)容
化學相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1