欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種多媒體引擎的實(shí)現(xiàn)方法

文檔序號:7924731閱讀:261來源:國知局
專利名稱:一種多媒體引擎的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及多媒體技術(shù)領(lǐng)域,尤其涉及一種多^^體引擎的實(shí)現(xiàn)方法。
技術(shù)背景近年來,多媒體技術(shù)發(fā)展迅速,并廣泛地應(yīng)用到生產(chǎn)生活的各個(gè)領(lǐng)域中, 如,通訊、電腦游戲、教育、檔案管理、圖書、娛樂、藝術(shù)、股票債券、金 融交易和建筑設(shè)計(jì)等。同時(shí),隨著移動終端日益成為人們?nèi)粘I钪胁豢扇?少的一種工具,多媒體技術(shù)在移動終端上的應(yīng)用也得到了進(jìn)一步的發(fā)展。目前,移動終端上的多媒體解碼器普遍采用硬件解碼器,人們通常認(rèn)為 硬解碼方式的解碼效果優(yōu)于軟解碼方式,該結(jié)論主要是根據(jù)兩種解碼方案音 質(zhì)的區(qū)別得出的,但音質(zhì)的好壞并不僅僅取決于解碼方式,影響音質(zhì)的主要 因素是移動終端的硬件性能。目前如手機(jī)等移動終端正逐漸向智能型發(fā)展,智能手機(jī)最大的特點(diǎn)就是與PC (個(gè)人電腦)有著相似的架構(gòu)和工作原理。顯然,在PC上播》文MP3 文件時(shí),100%是釆用軟解碼方式的,而且并不會感覺到音質(zhì)差,那么如同 PC —樣,在手機(jī)等移動終端上采用軟解碼方式也可以達(dá)到4艮好的音質(zhì)效果, 也就是說,采用軟解碼的音質(zhì)并不一定就比采用硬解碼的音質(zhì)差,即使采用 硬解碼方式,如果移動終端的硬件性能比較低,解碼后的音質(zhì)也是比較差的。并且,硬件解碼器會增加移動終端的體積和重量,而采用軟解碼方式的 移動終端的體積和重量均會有所減小,價(jià)格也會下降一個(gè)檔次。對于移動終 端越來越追求小巧、超薄,輕盈的趨勢,采用軟解碼方式的移動終端將會具 有更大的市場竟?fàn)幜?。中國?shí)用新型公開說明書CN200420112398公開了一種便攜式媒體播放 器,此便攜式媒體播放器雖然是采用軟解碼方式進(jìn)行解碼,但其只設(shè)置有音頻處理模塊和播放模塊,僅能處理音頻數(shù)據(jù),而無法播放視頻數(shù)據(jù)、音視頻 混合數(shù)據(jù)、錄音、錄像、可視電話和流媒體等。
因此,如杲能找到一個(gè)通用的方法,能夠?qū)崿F(xiàn)對音頻文件、視頻文件、 音視頻混合文件、數(shù)據(jù)文件、流媒體和可視電話等進(jìn)行播放,對多^某體開發(fā) 人員來說,無疑將減少很多工作量,同時(shí)效率也會大幅度提高
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種多媒體引擎的實(shí)現(xiàn)方法,能夠?qū)崿F(xiàn) 對包括音、視頻文件、音視頻混合文件、流媒體和可視電話等的播放以及對 語言、圖像進(jìn)行編碼。為解決上述技術(shù)問題,本發(fā)明的一種多々某體引擎的實(shí)現(xiàn)方法,用戶在人機(jī)交互接口 MM上選擇開始,總控模塊接收到MM發(fā)送的開始通知后,向 源元件、編解碼通用元件和接受元件發(fā)送開始命令,啟動源元件、編解碼通 用元件和接受元件;源元件接收到開始命令后,讀取數(shù)據(jù),將所讀取的數(shù)據(jù)發(fā)送給編解碼通 用元件;編解碼通用元件接收到源元件發(fā)送的數(shù)椐后,對數(shù)據(jù)進(jìn)行編碼或解碼, 并發(fā)送給接受元件;接受元件將接收到的完成解碼的數(shù)據(jù)發(fā)送給相應(yīng)播放設(shè)備進(jìn)行播放;將 完成編碼的數(shù)據(jù)發(fā)送給存儲設(shè)備進(jìn)行保存。進(jìn)一步地,源元件、編解碼通用元件和接受元件通過襯墊進(jìn)行鏈接,實(shí) 現(xiàn)數(shù)據(jù)的傳輸。進(jìn)一步地,總控才莫塊通過將相互鏈接的源元件、編解碼通用元件和接受 元件加入到一管道中對源元件、編解碼通用元件和接受元件進(jìn)行控制,總控 模塊將開始命令發(fā)送給管道,通過管道向源元件、編解碼通用元件和接受元 件下發(fā)開始命令。進(jìn)一步地,總控模塊中開辟有多媒體管理數(shù)據(jù)區(qū)MMC,總控模塊通過 在MMC中創(chuàng)建任務(wù),將任務(wù)對應(yīng)的管道的標(biāo)識加入到MMC的管道鏈表中,
對管道進(jìn)行控制。
進(jìn)一步地,用戶在選擇開始之前,還在MMI上選擇編解碼類型,MMI
將用盧選擇的編解碼類型通知總控模塊,總控模塊根據(jù)編解碼類型從一編解 碼庫中查找對應(yīng)的編解碼插件,將所查找到的編解碼插件加栽到編解碼通用 元件中,使編解碼通用元件能夠?qū)?shù)據(jù)進(jìn)行編碼或解碼。
進(jìn)一步地,用戶在選擇開始之前,還在MMI上選擇數(shù)據(jù),MMI將用戶 選擇的數(shù)據(jù)的讀取路徑通知總控模塊,總控模塊將數(shù)據(jù)的讀取路徑通知源元 件,源元件根據(jù)數(shù)據(jù)的讀取路徑讀取數(shù)據(jù)。
進(jìn)一步地,總控才莫塊還根據(jù)數(shù)據(jù)的數(shù)據(jù)類型,從一編解碼庫中查找該數(shù) 據(jù)類型對應(yīng)的編解碼插件,并將查找到的編解碼插件加栽到編解碼通用元件 中,使編解碼通用元件能夠?qū)?shù)據(jù)進(jìn)行編碼或解碼。
進(jìn)一步地,當(dāng)播放數(shù)據(jù)時(shí),用戶在選擇數(shù)據(jù)的同時(shí)還設(shè)置播放參數(shù),MMI 將播放參數(shù)通知總控模塊,總控模塊根據(jù)播放參數(shù)設(shè)置接收元件的參數(shù),接 受元件將接收到的完成解碼的數(shù)據(jù)發(fā)送給相應(yīng)播放設(shè)備的同時(shí),發(fā)送其播放 參數(shù),控制播放設(shè)備對完成解碼的數(shù)據(jù)的播放。
進(jìn)一步地,總控才莫塊向源元件、編解碼通用元件和^l奏受元件發(fā)送開始命 令后,為源元件、編解碼通用元件和接受元件創(chuàng)建線程,在該線程中實(shí)現(xiàn)源 元件讀取數(shù)據(jù),編解碼通用元件對數(shù)據(jù)進(jìn)行編碼或解碼,接受元件將完成解 碼的數(shù)據(jù)發(fā)送給相應(yīng)播放設(shè)備進(jìn)行播放;將完成編碼的數(shù)據(jù)發(fā)送給存儲設(shè)備 進(jìn)行保存。
進(jìn)一步地,當(dāng)數(shù)據(jù)為音頻文件時(shí),源元件為文件源元件,編解碼通用元 件為音頻解碼元件,接受元件為音頻"l妻受元件。
綜上所述,本發(fā)明通過文件源元件讀取數(shù)據(jù),編解碼通用元件進(jìn)行編解 碼,接受元件輸出編解碼后的數(shù)據(jù)流,實(shí)現(xiàn)了對音頻文件、視頻文件、音視 頻混合文件、流媒體和可視電話等的播放以及對語言、圖像進(jìn)行編碼,本發(fā) 明可以達(dá)到和硬解碼一樣的解碼效杲,大大提高了開發(fā)效率,且成本更低, 并減小了硬件設(shè)備的體積和重量。
附圍說明


圖1為多媒體管理系統(tǒng)的框架圖2為本發(fā)明所采用的源元件的示意圖3為本發(fā)明所采用的編解碼通用元件的示意圖4為本發(fā)明所采用的"^妻受元件的示意圖5為源元件、編解碼通用元件和接受元件的鏈接示意圖6為將鏈接后的源元件、編解碼通用元件和接受元件加入到管道中的 示意圖7為本發(fā)明播放音頻文件的信號流程圖。
具體實(shí)施例方式
本發(fā)明的播放多媒體文件的方法通過上層應(yīng)用調(diào)用多媒體管理系統(tǒng)的初 始化函數(shù),總控模塊接收到初始化函數(shù)發(fā)送的初始化消息后,創(chuàng)建管道、源 元件、接受元件和編解碼通用元件,將源元件、接受元件和編解碼通用元件 加入到管道中??偪啬K根椐用戶設(shè)置或文件類型,在編解碼庫管理模塊中 查找相應(yīng)插件,并加栽到編解碼通用元件中。上層應(yīng)用調(diào)用多々某體管理系統(tǒng) 提供的播放函數(shù),總控模塊接收到播放函數(shù)發(fā)送的播放消息后,向管道下發(fā) 播放命令,管道接收到播放命令后,向其所包含的元件發(fā)送播放命令,接收 到播放命令后,源元件從外部讀入數(shù)據(jù),發(fā)送給編解碼通用元件,編解碼通 用元件對數(shù)據(jù)進(jìn)行編碼或解碼,把編碼或解碼后的數(shù)據(jù)發(fā)送給接受元件,接 受元件將編碼或解碼后的數(shù)據(jù)輸出給相應(yīng)設(shè)備,進(jìn)行播放或保存。
下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
進(jìn)行說明,
如圖1所示,多々某體管理系統(tǒng)包括源元件、接受元件、編解碼通用元 件、編解碼庫管理模塊和總控模塊,源元件讀取外部數(shù)據(jù),發(fā)送給編解碼通 用元件;編解碼通用元件將源元件輸入的數(shù)據(jù)進(jìn)行編碼或者解碼;接受元件 將編碼或解碼后的數(shù)據(jù)輸出到相應(yīng)設(shè)備;總控才莫塊負(fù)責(zé)響應(yīng)上層應(yīng)用的各種 命令,按照不同的命令執(zhí)行不同的操作,并向源元件、接受元件和編解碼通
用元件下發(fā)控制命令,同時(shí)響應(yīng)源元件、接受元件、編解碼通用元件上凈艮的
各種消息,針對不同的消息執(zhí)行不同的操作;編解碼庫管理模塊用于存儲編 解碼插件。
源元件可以通過文件形式(File)、流媒體形式(Stream)讀入數(shù)據(jù),也 可以從麥克風(fēng)(MIC)和攝像頭(Sensor)等讀入數(shù)據(jù)。
接受元件可以通過文件形式(File )輸出數(shù)據(jù),也可以從揚(yáng)聲器(Speaker )、 液晶顯示屏(Liquid Crystal Display , LCD)輸出數(shù)據(jù)。
在系統(tǒng)中還設(shè)置有解碼芯片,通過該解碼芯片實(shí)現(xiàn)硬解碼。
總控模塊向MMI (Man-Machine Interface,人才幾交互4委口,統(tǒng)稱為上層 應(yīng)用)提供各種應(yīng)用接口 API (應(yīng)用接口 )函數(shù),用戶可以非常方便的以這 套API函數(shù)構(gòu)建自己的媒體播放器。用戶只需要實(shí)現(xiàn)界面,并按照要求調(diào)用 總控模塊提供的API函數(shù)就可以實(shí)現(xiàn)多媒體引擎的全部功能。
下面對上述系統(tǒng)的各組成部分進(jìn)行詳細(xì)說明
元件依椐面向?qū)ο蟮乃枷耄且粋€(gè)具有特殊功能的對象,可以通 過構(gòu)建對象,來創(chuàng)建元件,元件是組成多々某體管道的基本單元。元件的功能 為(1)元件可以作為一個(gè)獨(dú)立的功能個(gè)體存在,例如,實(shí)現(xiàn)讀取數(shù)據(jù),對 數(shù)據(jù)進(jìn)行處理,再輸出處理后的數(shù)據(jù)等;(2)元件還可以作為一個(gè)基類,派 生出其他具有特定功能的元件,如源元件、類過濾元件和接受元件等。
每個(gè)元件都具有一些函數(shù)接口 ,用戶通過調(diào)用函數(shù)接口實(shí)現(xiàn)元件的功能。 例如創(chuàng)建了一個(gè)讀取文件的元件,那么該元件就具有一個(gè)讀取文件的函數(shù)接 口,用戶通過調(diào)用該函數(shù)接口,就可以實(shí)現(xiàn)讀取文件的操作。元件的數(shù)據(jù)結(jié) 構(gòu)中包含元件名、襯墊數(shù)目、襯墊鏈表以及該元件的處理函數(shù)等。
源元件是由元件派生出的功能元件。源元件負(fù)責(zé)為多4某體管道讀取數(shù) 據(jù),作為多媒體管道的數(shù)據(jù)產(chǎn)生源,為多媒體管道產(chǎn)生數(shù)據(jù)。源元件具有其
自身的函數(shù)接口,包括讀文件函數(shù)等,用戶可通過調(diào)用其函數(shù)接口來使用源 元件。源元件的數(shù)據(jù)結(jié)構(gòu)中包含源元件名、襯墊數(shù)目(源元件僅有一個(gè)輸
出襯墊,用于向管道中傳送數(shù)據(jù))和源元件的函數(shù)接口等。
類過濾元件也是由元件派生出的功能元件,類過濾元件的功能類似于過濾器,類過濾元件具有輸入和輸出襯墊,對從輸入襯墊獲取的數(shù)據(jù)進(jìn)行處 理,然后將處理后的數(shù)據(jù)發(fā)送給輸出襯墊。類過濾元件也具有自身的函數(shù)接 口 ,包括類過濾元件的初始化函數(shù)、類過濾元件的處理函數(shù)和類過濾元件的 卸栽函數(shù)等,用戶通過調(diào)用其函數(shù)接口來使用該元件。類過濾元件的數(shù)據(jù)結(jié)
構(gòu)中包含類過濾元件名、襯墊數(shù)目(類過濾元件可以具有任意多個(gè)的輸入 襯墊和輸出襯墊)、襯墊鏈表和類過濾元件的處理函數(shù)等。
編解碼通用元件屬于類過濾元件,是類過濾元件中的一個(gè)具有編解碼 功能的元件。編解碼通用元件具有輸入和輸出襯墊,其對從輸入襯墊獲取的 數(shù)據(jù)進(jìn)行編碼或解碼,然后將編碼或解碼后的數(shù)據(jù)通過輸出襯墊輸出。編解 碼通用元件也有自己的函數(shù)接口,包括編解碼通用元件的初始化函數(shù)、編解 碼通用元件的指針獲取函數(shù)、編解碼通用元件的總控消息處理函數(shù)和編解碼 通用元件的卸載函數(shù)等,用戶通過調(diào)用它的函數(shù)接口來使用該元件。編解碼 通用元件的數(shù)據(jù)結(jié)構(gòu)中包含編解碼通用元件名、襯墊數(shù)目、襯墊鏈表和編 解碼通用元件的總控消息處理函數(shù)。
接受元件是由元件派生出的功能元件,接受元件在々某體管道末端,負(fù) 責(zé)接收數(shù)據(jù),并將接收到的數(shù)據(jù)輸出給播放設(shè)備的驅(qū)動程序。接受元件的數(shù) 據(jù)結(jié)構(gòu)中包含接受元件名、襯墊數(shù)目(接受元件僅有一個(gè)輸入襯墊)、襯 墊鏈表和接受元件的總控消息處理函數(shù)等。
管道也是由元件派生出來的一個(gè)功能元件,管道可以包含多個(gè)元件, 類似于一個(gè)裝載元件的容器。管道中有一個(gè)作為元件鏈表的成員變量,將管 道包含的元件用鏈表的形式鏈接起來,通過鏈表頭就可以方便地找到每一個(gè) 元件,以便管理。管道可以統(tǒng)一操作其所包含的所有元件,因此可以通過操 作管道達(dá)到對多個(gè)元件的操作,從而降低應(yīng)用程序的復(fù)雜度,可以通過改變 一個(gè)管道的狀態(tài)來改變管道內(nèi)部所有元件的狀態(tài),例如,在將管道設(shè)置為播 放狀態(tài)時(shí),數(shù)據(jù)流開始流動,啟動對多i某體數(shù)據(jù)的處理。一旦被啟動,管道 將在一個(gè)單獨(dú)的線程中運(yùn)行,直到被停止或者數(shù)據(jù)流播放完畢。管道具有其 自身的函數(shù)接口,包括創(chuàng)建管道函數(shù)、銷毀管道函數(shù)、向管道中元件下發(fā)消 息函數(shù)、管道線程入口函數(shù)等,用戶可通過調(diào)用其函數(shù)接口來使用管道。管 道的數(shù)據(jù)結(jié)構(gòu)中包含管道名、管道中元件數(shù)目、管道中元件鏈表、管道線
程狀態(tài)和管道線程入口函數(shù)等。
襯墊襯墊亦為一對象,可通過構(gòu)建對象來創(chuàng)建襯墊。襯墊用于鏈接元 件,使數(shù)據(jù)流能在元件之間流動,襯墊能夠限制所通過的數(shù)據(jù)流的類型,鏈 接成功的條件是兩個(gè)襯墊允許通過的數(shù)據(jù)類型一致。所有的數(shù)據(jù)流都是在鏈 接好的元件之間流動。元件通過一個(gè)或者多個(gè)襯墊接受數(shù)據(jù)流,數(shù)據(jù)流通過 一個(gè)或者多個(gè)襯墊流出元件。襯墊包含輸入村墊和輸出襯墊,輸入村墊用于 接收數(shù)據(jù),輸出襯墊用于輸出數(shù)據(jù),襯墊包含襯墊名、襯墊類型和襯墊接 口函數(shù)等。
如圖7所示,為本發(fā)明的方法播放音頻文件的流程圖,包括如下步驟
系統(tǒng)啟動時(shí),多4某體模塊初始化函數(shù)對多々某體管理系統(tǒng)進(jìn)行初始化。
初始化時(shí),首先調(diào)用總控模塊的初始化函數(shù)初始化總控模塊,再調(diào)用編 解碼插件管理才莫塊的初始化函數(shù),初始化編解碼插件管理才莫塊中的配置文件信息。
701:用戶在MMI上選擇啟動多媒體管理系統(tǒng)并選擇媒體源后,MMI 向總控模塊發(fā)送EV—ZMMF—TASK—OPEN—REQ消息(初始化消息),將媒 體源作為該消息的參數(shù)通知總控模塊;
702:總控模塊接收到EV—ZMMF—TASK—OPEN—REQ消息后,根據(jù)媒體 源調(diào)用其自身的相應(yīng)初始化函數(shù);
本實(shí)施例中,々某體源為音頻文件,總控模塊判定要播放音頻文件時(shí),調(diào) 用音頻初始化函數(shù)。
703:音頻初始化函數(shù)創(chuàng)建文件源元件、音頻解碼元件和音頻接受元件;
文件源元件用于讀取以文件形式存儲的數(shù)據(jù);音頻解碼元件用于對音頻 文件進(jìn)行解碼;音頻接受元件用于將音頻解碼完成的數(shù)據(jù)發(fā)送給音頻播放設(shè) 備的驅(qū)動程序,以對音頻文件進(jìn)行播放。
704:音頻初始化函數(shù)創(chuàng)建音頻管道,在創(chuàng)建音頻管道的同時(shí)創(chuàng)建對音頻 管道進(jìn)行控制的音頻線程;
705:音頻初始化函數(shù)對文件源元件、音頻解碼元件和音頻接受元件進(jìn)行 鏈接,并將該三個(gè)元件加入到音頻管道中;
在對上述三個(gè)元件進(jìn)行鏈接時(shí),需要分別查找到文件源元件的輸出襯墊, 音頻解碼元件的輸入襯墊和輸出襯墊以及音頻接受元件的輸入襯墊,并建立 文件源元件的輸出襯墊與音頻解碼元件的輸入村墊之間的鏈接,建立音頻解 碼元件的輸出襯墊與音頻接受元件的輸入襯墊之間的連接。
706:音頻初始化函數(shù)對音頻線程的入口函數(shù)進(jìn)行初始化;
初始化音頻線程的入口函數(shù)時(shí),將音頻線程的入口函數(shù)賦值為文件源元 件的讀文件函數(shù)(即音頻線程啟動后需要首先執(zhí)行的函數(shù)),并把音頻線程 的入口函數(shù)的參數(shù)賦值為文件源元件的讀文件函數(shù)的參數(shù)。
707:音頻初始化函數(shù)在總控模塊的某一MMC (MultiMedia Management circumscription,多媒體管理數(shù)據(jù)區(qū))中添加音頻播放任務(wù),并獲取添加該音 頻播放任務(wù)的MMC數(shù)據(jù)區(qū)的ID號,初始化MMC中成員變量信息,將音頻 管道的管道標(biāo)識加入到上述MMC數(shù)據(jù)區(qū)的管道鏈表中;
MMC數(shù)據(jù)區(qū)為一數(shù)據(jù)結(jié)構(gòu),包含ID號、是否被占用、當(dāng)前任務(wù)ID號、 當(dāng)前業(yè)務(wù)類型、MMC的當(dāng)前管道鏈表和媒體來源等成員變量。 一個(gè)MMC 數(shù)據(jù)區(qū)對應(yīng)一個(gè)任務(wù),每個(gè)任務(wù)可能對應(yīng)一個(gè)管道,也可能對應(yīng)多個(gè)管道, 使用MMC數(shù)據(jù)區(qū)能夠更好地管理任務(wù)和管道??赡艽嬖诙鄠€(gè)任務(wù)同時(shí)來調(diào) 用多4某體,每新建一個(gè)任務(wù),就將該任務(wù)加入到一個(gè)MMC數(shù)據(jù)區(qū)中,一個(gè) MMC數(shù)據(jù)區(qū)對應(yīng)一個(gè)唯一的ID號,通過該ID號就可以找到相應(yīng)的任務(wù)。 不管同時(shí)存在多少任務(wù),利用MMC數(shù)據(jù)區(qū)的ID號就可以找到相應(yīng)的任務(wù)和 管道,不會造成混亂。
初始化MMC中成員變量信息是指,在MMC數(shù)據(jù)區(qū)中新增一個(gè)任務(wù)后, 按照新增任務(wù)的參數(shù)為MMC數(shù)據(jù)區(qū)的成員變量賦初始值,如設(shè)置MMC當(dāng) 前的業(yè)務(wù)類型、當(dāng)前任務(wù)的媒體來源、當(dāng)前任務(wù)是否循環(huán)播放、當(dāng)前任務(wù)的 音量大小和MMC數(shù)據(jù)區(qū)已經(jīng)被占用等信息。
管道鏈表是指,將一個(gè)任務(wù)用到的 一個(gè)或多個(gè)管道用鏈表的形式鏈接起 來,通過鏈表頭就可以方便地找到每一個(gè)管道,使用管道鏈表更易于對管道 進(jìn)行管理, 一個(gè)任務(wù)對應(yīng)一個(gè)管道鏈表。
708:用戶在MM上選擇解碼類型,MMI通過向總控模塊發(fā)送
EV一ZMMF—TASK—SET—CODEC一REQ消息(設(shè)置編解碼消息),將用戶逸 擇的解碼類型作為該消息的參數(shù)通知總控模塊;
709:總控模塊接收到EV一ZMMF—TASK一SET—CODEC—REQ消息后,根 據(jù)解碼類型從編解碼庫的配置文件中查詢對應(yīng)的編解碼插件,并從編解碼庫 中查找到對應(yīng)的編解碼插件;
710:總控模塊根據(jù)MMC數(shù)據(jù)區(qū)的ID號,查找到音頻播放任務(wù)所在的 MMC數(shù)據(jù)區(qū),根據(jù)音頻管道的管道標(biāo)識從MMC數(shù)據(jù)區(qū)的管道鏈表中查找的 音頻管道,將編解碼插件加載到該音頻管道的音頻解碼元件中,同時(shí),從配 置文件中加栽該編解碼插件對應(yīng)的初始化函數(shù),Element (元素)對象和析構(gòu) 函數(shù),并將其操作指針連接到本地指針,以對其進(jìn)行操作;
711:用戶在MMI中選擇要播放的音頻文件并設(shè)置播放參數(shù),MMI通過 向總控模塊發(fā)送EV—ZMMF—TASK—SET—OPT一REQ消息(設(shè)置參數(shù)消息), 將該音頻文件的存儲路徑、文件名和播放參數(shù)作為該消息的參數(shù)通知總控模
塊;
播放參數(shù)包括播放音量、播放通道、釆樣率和播放設(shè)備(如揚(yáng)聲器或 耳機(jī))等
712:總控模塊接收到EV—ZMMF—TASK—SET—OPT—REQ消息后,將接 收到該要播放的音頻文件的存儲路徑、文件名和播放參數(shù)進(jìn)行保存,并根據(jù) 播放參數(shù)設(shè)置音頻接受元件的參數(shù);
對于文件源元件需設(shè)置其每次讀取數(shù)據(jù)的數(shù)據(jù)量,可設(shè)置為每次讀取32 個(gè)字節(jié),同時(shí),總控才莫塊將音頻文件的存儲路徑和文件名發(fā)送給文件源元件。
對于音頻接受元件,需要根據(jù)播放參數(shù)設(shè)置音頻接受元件的播放音量、 播放通道和采樣率等。
如杲用戶并未在MMI上選擇編解碼類型,即未執(zhí)行步驟708和709,則 總控模塊在接收到EV—ZMMF_TASK—SET—OPT—REQ消息后,還需要根據(jù)音 頻文件的擴(kuò)展名判斷音頻文件的文件類型,根據(jù)文件類型從編解碼庫的配置 文件中查詢該文件類型對應(yīng)的編解碼插件,并從編解碼庫中查找到該對應(yīng)的 編解碼插件,并將其加載到音頻解碼元件中,同時(shí),從配置文件中加載該編
解碼插件對應(yīng)的初始化函數(shù),Element對象和析構(gòu)函數(shù),并將其操作指針連接 到本地指針,以對其進(jìn)行操作;
713:用戶在MMI中選擇開始播放音頻文件,MMI向總控模塊發(fā)送 EV—ZMMF一TASK—PLAY—REQ消息(開始播放消息),總控模塊接收到該消 息后,向音頻管道發(fā)送開始播放命令,音頻管道接收到開始播放命令后,向 其下的文件源元件、音頻解碼元件和音頻接受元件下發(fā)開始播放命令;
總控模塊在向音頻管道發(fā)送開始播放命令時(shí),同樣根據(jù)MMC數(shù)據(jù)區(qū)的 ID號,查找到音頻播放任務(wù)所在的MMC數(shù)據(jù)區(qū),根據(jù)音頻管道的管道標(biāo)識 從MMC數(shù)據(jù)區(qū)的管道鏈表中查找到音頻管道。
714:總控才莫塊為文件源元件、音頻解碼元件和音頻4妻受元件創(chuàng)建解碼線 程,音頻線程啟動該解碼線程;
715:總控模塊等待結(jié)束消息;
716:在解碼線程中,文件源元件根據(jù)音頻文件的存儲路徑讀取出音頻文 件,并將其從輸出襯墊發(fā)送到音頻解碼元件的輸入襯墊;
77:音頻解碼元件的輸入襯墊接收到音頻文件后,音頻解碼元件通過編 解碼插件對音頻文件進(jìn)行解碼,并將解碼完成的數(shù)據(jù)流從其輸出襯墊發(fā)送到 音頻接受元件的輸入襯墊;
718:音頻接受元件的輸入襯墊接收到數(shù)據(jù)流后,音頻接受元件將數(shù)據(jù)流 發(fā)送給音頻播放器的驅(qū)動程序,同時(shí),將其上設(shè)置的播放音量、播;故通道和 采樣率等播放參數(shù)通知驅(qū)動程序,驅(qū)動程序控制音頻播放器對音頻文件進(jìn)行 播放;
文件源元件在讀取音頻文件時(shí),也可以申請分配一塊緩沖區(qū),將讀取出 的音頻文件從輸出襯墊緩存到緩沖區(qū)中,音頻解碼元件從緩沖區(qū)中讀取音頻 文件進(jìn)行解碼,將解碼后的數(shù)據(jù)流輸出到緩沖區(qū)中,音頻接受元件從緩沖區(qū) 中讀取數(shù)據(jù)流,發(fā)送給音頻播放器的驅(qū)動程序。
719:如果用戶選擇暫停播放時(shí),MMI向總控模塊發(fā)送 EV—ZMMF—TASK—PAUSE—REQ (暫停消息),總控模塊接收到該消息后, 向MMC數(shù)據(jù)區(qū)中的音頻管道發(fā)送暫停命令,并通知音頻線程暫停播放;
720:音頻管道接收到暫停命令后,向文件源元件、音頻解碼元件和音頻 接受元件發(fā)送暫停命令;
721:音頻線程掛起,暫停播放;
722:在對音頻文件進(jìn)行解碼播放的過程中,如果發(fā)生錯(cuò)誤或異常,則解 碼線程桂起,暫停播放,并向總控模塊發(fā)送通知消息,進(jìn)行上報(bào);
723:總控模塊接收到通知消息后,對錯(cuò)誤或異常進(jìn)行處理或上報(bào)給用戶;
724:當(dāng)音頻文件解碼結(jié)束時(shí),解碼線程向總控模塊發(fā)送結(jié)束消息;
725:總控模塊接收到結(jié)束消息后,向MMI發(fā)送結(jié)束消息,MMI接收到 結(jié)束消息后,提示用戶播放結(jié)束;
726 : 如果用戶選擇結(jié)束播放,則MMI向總控模塊發(fā)送 EV—ZMMF—TASK—CLOSE—REQ消息(關(guān)閉消息),總控模塊接收到該消息 后,調(diào)用停止線程函數(shù)停止解碼線程,并喚醒處于桂起狀態(tài)的優(yōu)先級低于解 碼線程的其它線程進(jìn)行任務(wù);
如果用戶未選擇結(jié)束播放,而是選擇重復(fù)播放則執(zhí)行步驟713;如果用 戶選擇其它音頻文件進(jìn)行播放則執(zhí)行步驟711或713。
727:總控模塊向音頻管道中的文件源元件、音頻解碼元件和音頻接受元 件下發(fā)停止命令,刪除音頻管道中的上述三個(gè)元件及音頻管道,清空MMC 數(shù)據(jù)區(qū);
728:解碼線程切換到停止?fàn)顟B(tài),結(jié)束線程、釋放資源;
729 :總控模塊獲知解碼線程結(jié)束后,向MMI發(fā)送 EV—ZMMF—INFO—CLOSE—RSP消息(已關(guān)閉消息),通知用戶已結(jié)束。
播放視頻文件與播放音頻文件的區(qū)別在于接受元件的類型不同,播放 音頻文件時(shí),接受元件是音頻接受元件,音頻接受元件將接受到音頻解碼元 件傳送的數(shù)據(jù)輸出到音頻設(shè)備上,如揚(yáng)聲器等。播放視頻文件時(shí),接受元件 是視頻接受元件,視頻接受元件將接受到視頻解碼元件傳送的數(shù)據(jù)輸出到視 頻設(shè)備上,如液晶顯示屏上。
錄音與播放音頻文件的區(qū)別在于播放音頻文件時(shí),源元件是文件源元 件,編解碼通用元件是音頻解碼元件,接受元件是音頻接受元件,而錄音時(shí), 管道中的源元件是音頻源元件,用于從MC接收語音;編解碼通用元件是音 頻編碼元件,用于對語言進(jìn)行編碼;接受元件是文件接受元件,用于將編碼 后的文件輸出到存儲設(shè)備。
錄像與播放音頻文件的區(qū)別在于錄像時(shí),源元件是視頻源元件,用于 從攝像頭讀取圖像;編解碼通用元件是視頻編碼元件,用于對圖像進(jìn)行編碼; 接受元件是文件接受元件,用于將編碼后的文件輸出到存儲設(shè)備。
播;故音視頻混合文件時(shí)需創(chuàng)建三個(gè)管道,分別為解復(fù)用管道、音頻解 碼管道和視頻解碼管道,解復(fù)用管道中包含一個(gè)解復(fù)用元件,解復(fù)用元件也 是由元件派生出來的功能元件,用于將音視頻文件解復(fù)用成音頻和視頻兩路; 音頻解碼管道包含音頻解碼元件和音頻接受元件;視頻解碼管道包含視頻解 碼元件和視頻接受元件。
音枧頻混合文件經(jīng)過解復(fù)用管道完成解復(fù)用后分為同步的音頻數(shù)據(jù)和視 頻數(shù)據(jù),將要解碼的一段音頻數(shù)據(jù)和一段視頻數(shù)據(jù)在解碼前記錄上時(shí)間,使 用音頻解碼元件和^l頻解碼元件分別進(jìn)行解碼,解碼完成后,將音頻數(shù)據(jù)和 視頻數(shù)據(jù)的時(shí)間進(jìn)行比較,通常音頻數(shù)據(jù)解碼較快,解碼完成后需要緩存, 在與音頻數(shù)據(jù)時(shí)間相同的視頻數(shù)據(jù)解碼完成后,同時(shí)輸出給播放設(shè)備的驅(qū)動 程序進(jìn)行播放。
權(quán)利要求
1、一種多媒體引擎的實(shí)現(xiàn)方法,其特征在于,用戶在人機(jī)交互接口MMI上選擇開始,總控模塊接收到MMI發(fā)送的開始通知后,向源元件、編解碼通用元件和接受元件發(fā)送開始命令,啟動所述源元件、編解碼通用元件和接受元件;源元件接收到開始命令后,讀取數(shù)據(jù),將所讀取的數(shù)據(jù)發(fā)送給編解碼通用元件;編解碼通用元件接收到源元件發(fā)送的數(shù)據(jù)后,對所述數(shù)據(jù)進(jìn)行編碼或解碼,并發(fā)送給接受元件;接受元件將接收到的完成解碼的數(shù)據(jù)發(fā)送給相應(yīng)播放設(shè)備進(jìn)行播放;將完成編碼的數(shù)據(jù)發(fā)送給存儲設(shè)備進(jìn)行保存。
2、 如權(quán)利要求l所述的方法,其特征在于,所述源元件、編解碼通用元 件和"^妄受元件通過襯墊進(jìn)行鏈接,實(shí)現(xiàn)數(shù)據(jù)的傳輸。
3、 如權(quán)利要求2所述的方法,其特征在于,所述總控模塊通過將相互鏈 接的所述源元件、編解碼通用元件和接受元件加入到一管道中對所述源元件、 編解碼通用元件和"^受元件進(jìn)行控制,所述總控;f莫塊將所述開始命令發(fā)送給 管道,通過管道向所述源元件、編解碼通用元件和接受元件下發(fā)開始命令。
4、 如權(quán)利要求3所述的方法,其特征在于,所述總控模塊中開辟有多媒 體管理數(shù)據(jù)區(qū)MMC,所述總控才莫塊通過在所述MMC中創(chuàng)建任務(wù),將所述任 務(wù)對應(yīng)的管道的標(biāo)識加入到所述MMC的管道鏈表中,對管道進(jìn)行控制。
5、 如權(quán)利要求l所述的方法,其特征在于,所述用戶在選擇開始之前, 還在MMI上選擇編解碼類型,MMI將用戶選擇的所述編解碼類型通知總控 模塊,所述總控模塊根據(jù)編解碼類型從一編解碼庫中查找對應(yīng)的編解碼插件, 將所查找到的編解碼插件加栽到所述編解碼通用元件中,使編解碼通用元件 能夠?qū)?shù)據(jù)進(jìn)行編碼或解碼。
6、 如權(quán)利要求l所述的方法,其特征在于,所述用戶在選擇開始之前, 還在MM1上選擇所述數(shù)據(jù),MMI將用戶選擇的所述數(shù)據(jù)的讀取路徑通知總 控模塊,所述總控模塊將所述數(shù)據(jù)的讀取路徑通知所述源元件,所述源元件 根據(jù)所述數(shù)據(jù)的讀取路徑讀取數(shù)據(jù)。
7、 如權(quán)利要求6所述的方法,其特征在于,所述總控模塊還根據(jù)所述數(shù) 據(jù)的數(shù)據(jù)類型,從一編解碼庫中查找該數(shù)據(jù)類型對應(yīng)的編解碼插件,并將查 找到的編解碼插件加栽到所述編解碼通用元件中,使編解碼通用元件能夠?qū)?數(shù)據(jù)進(jìn)行編碼或解碼。
8、 如權(quán)利要求6所述的方法,其特征在于,當(dāng)播放數(shù)據(jù)時(shí),所述用戶在 選擇所述數(shù)據(jù)的同時(shí)還設(shè)置播放參數(shù),MMI將所述播放參數(shù)通知總控模塊, 所述總控模塊根據(jù)所述播放參數(shù)設(shè)置所述接收元件的參數(shù),所述接受元件將 接收到的完成解碼的數(shù)據(jù)發(fā)送給相應(yīng)播放設(shè)備的同時(shí),發(fā)送其播放參數(shù),控 制播放設(shè)備對完成解碼的數(shù)據(jù)的播放。
9、 如權(quán)利要求l所述的方法,其特征在于,所述總控模塊向源元件、編 解碼通用元件和接受元件發(fā)送開始命令后,為所述源元件、編解碼通用元件 和接受元件創(chuàng)建線程,在該線程中實(shí)現(xiàn)所述源元件讀取數(shù)據(jù),所述編解碼通 用元件對所述數(shù)據(jù)進(jìn)行編碼或解碼,所述接受元件將完成解碼的數(shù)據(jù)發(fā)送給 相應(yīng)播放設(shè)備進(jìn)行播放;將完成編碼的數(shù)據(jù)發(fā)送給存儲設(shè)備進(jìn)行保存。
10、 如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述數(shù)據(jù)為音頻文件時(shí), 所述源元件為文件源元件,所述編解碼通用元件為音頻解碼元件,所述4婁受 元件為音頻接受元件。
全文摘要
本發(fā)明公開了一種多媒體引擎的實(shí)現(xiàn)方法,用戶在人機(jī)交互接口MMI上選擇開始,總控模塊接收到MMI發(fā)送的開始通知后,向源元件、編解碼通用元件和接受元件發(fā)送開始命令,啟動源元件、編解碼通用元件和接受元件;源元件接收到開始命令后,讀取數(shù)據(jù),將所讀取的數(shù)據(jù)發(fā)送給編解碼通用元件;編解碼通用元件接收到源元件發(fā)送的數(shù)據(jù)后,對數(shù)據(jù)進(jìn)行編碼或解碼,并發(fā)送給接受元件;接受元件將接收到的完成解碼的數(shù)據(jù)發(fā)送給相應(yīng)播放設(shè)備進(jìn)行播放;將完成編碼的數(shù)據(jù)發(fā)送給存儲設(shè)備進(jìn)行保存。本發(fā)明可以達(dá)到和硬解碼一樣的解碼效果,大大提高了開發(fā)效率,且成本更低,并減小了硬件設(shè)備的體積和重量。
文檔編號H04N7/14GK101339789SQ20081021050
公開日2009年1月7日 申請日期2008年8月13日 優(yōu)先權(quán)日2008年8月13日
發(fā)明者彭海勇, 李興華, 浩 楊, 臧成松, 芳 趙, 明 陳 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
泸定县| 栾城县| 额尔古纳市| 安龙县| 遂宁市| 安仁县| 金坛市| 纳雍县| 平舆县| 汽车| 浠水县| 会宁县| 开封市| 阳西县| 突泉县| 正蓝旗| 荃湾区| 沙田区| 淮阳县| 同心县| 云和县| 彭山县| 满城县| 阜宁县| 阳信县| 易门县| 搜索| 普洱| 绥江县| 衡阳县| 诸城市| 偃师市| 三河市| 黔南| 桃源县| 都江堰市| 宝鸡市| 扶绥县| 当阳市| 财经| 河北省|