專利名稱:一種多媒體數(shù)據(jù)源讀取模型的架構(gòu)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到多媒體音視頻播放領(lǐng)域,更具體的是,涉及一種用于播放高碼率、高清視頻時(shí),其數(shù)據(jù)源讀取方式的架構(gòu)方法。
背景技術(shù):
當(dāng)用戶點(diǎn)擊播放視頻文件時(shí),多媒體播放系統(tǒng)首先從視頻文件中讀取音視頻數(shù)據(jù),然后將其送交解碼模塊解碼,解碼輸出的音頻內(nèi)容和視頻內(nèi)容經(jīng)過同步措施將經(jīng)過輸出模塊分別送交音頻設(shè)備輸出,視頻設(shè)備顯示,最終完成了整個(gè)播放流程。在讀取音視頻數(shù)據(jù)這一環(huán)節(jié)中,以何種方式讀取數(shù)據(jù)源非常重要,無論解碼器解碼如何迅速,數(shù)據(jù)不能及時(shí)送達(dá)解碼器,視頻播放效率依然無法提高。因此如何架構(gòu)數(shù)據(jù)源讀取模型來快速響應(yīng)解碼器的數(shù)據(jù)請(qǐng)求至關(guān)重要。常規(guī)讀取音視頻數(shù)據(jù)的辦法為,當(dāng)解碼器請(qǐng)求數(shù)據(jù)時(shí),再?gòu)囊曨l文件中讀取數(shù)據(jù)。 對(duì)于低碼率,非高清視頻,每次讀取的數(shù)據(jù)量非常小,解碼器等待數(shù)據(jù)到達(dá)的時(shí)間也比較短,可以滿足解碼器的需求。但是在播放高碼率,高清視頻時(shí),解碼器每次都要等待系統(tǒng)讀取大量的數(shù)據(jù),而這個(gè)時(shí)間則不容被忽視,這使得高清視頻在此方式下很難做到流暢播放。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種合理分布數(shù)據(jù)源讀取時(shí)間,提高高碼率、高清視頻數(shù)據(jù)源讀取效率的模型架構(gòu)方法。本模型包括數(shù)據(jù)流入和流出。數(shù)據(jù)流入是指從數(shù)據(jù)源中讀取音視頻數(shù)據(jù);數(shù)據(jù)流出則是指用戶從該模型中讀取數(shù)據(jù)。首先架構(gòu)多線程模型,將數(shù)據(jù)流入和流出分離。創(chuàng)建音視頻FIFO,建立獨(dú)立的線程用于數(shù)據(jù)流入操作,并將讀取到的音視頻數(shù)據(jù)放入FIFO中進(jìn)行管理。而用戶所居的線程僅有對(duì)FIFO訪問的權(quán)限。其次,考慮到現(xiàn)今解碼器大多為硬件解碼器,需求物理內(nèi)存,本發(fā)明可以根據(jù)用戶需求創(chuàng)建物理內(nèi)存FIFO,物理內(nèi)存的深度需要用戶根據(jù)具體系統(tǒng)自行指定。存在物理內(nèi)存FIFO時(shí)設(shè)置成兩級(jí)FIFO緩沖,讀取的數(shù)據(jù)先流入虛擬內(nèi)存FIFO,然后再流入物理內(nèi)存 FIFO。這里數(shù)據(jù)流入虛擬內(nèi)存FIFO過程中直接利用獲得的虛擬內(nèi)存地址形成新的FIFO成員,無需拷貝。而原本在解碼器請(qǐng)求數(shù)據(jù)時(shí)發(fā)生的拷貝轉(zhuǎn)移到數(shù)據(jù)流入流程,這更有利于數(shù)據(jù)流出的快速響應(yīng)。再次,音視頻FIFO及其管理策略主要有以下方面1,音視頻隊(duì)列存在物理內(nèi)存FIFO和虛擬內(nèi)存FIFO。如果存在物理內(nèi)存FIFO,優(yōu)先保證物理內(nèi)存FIFO非空。如果物理內(nèi)存滿,則將數(shù)據(jù)存入虛擬內(nèi)存FIFO。2,設(shè)定音視頻FIFO各自的最大閾值。當(dāng)音視頻數(shù)據(jù)FIFO都達(dá)到最大閾值時(shí),停止讀取數(shù)據(jù),數(shù)據(jù)流入線程處于等待狀態(tài)。3,設(shè)定音視頻數(shù)據(jù)FIFO各自的最小閾值。當(dāng)音視頻數(shù)據(jù)FIFO中某一 FIFO中數(shù)據(jù)幀小于最小閾值時(shí),數(shù)據(jù)流入線程處于讀取狀態(tài),開始讀取數(shù)據(jù)。4,當(dāng)音視頻FIFO中數(shù)據(jù)量介于最大閾值和最小閾值之間時(shí),如果當(dāng)前數(shù)據(jù)流入線程處于讀取狀態(tài),則線程處于讀取狀態(tài)直到各FIFO數(shù)據(jù)量達(dá)到最大閾值時(shí),停止線程。否則,線程將一直處于等待狀態(tài)直到某一 FIFO數(shù)據(jù)量小于最小閾值時(shí),線程將變?yōu)樽x取狀態(tài)。5,設(shè)定音視頻數(shù)據(jù)數(shù)據(jù)隊(duì)列的最大深度。當(dāng)隊(duì)列數(shù)據(jù)超過最大深度,停止讀取數(shù)據(jù),數(shù)據(jù)流入線程處于等待狀態(tài)。設(shè)定此項(xiàng)主要用于對(duì)內(nèi)存的保護(hù),以防過分使用內(nèi)存導(dǎo)致系統(tǒng)內(nèi)存不足。最后,數(shù)據(jù)流出操作。用戶只需要通過訪問音視頻數(shù)據(jù)FIFO就能獲得解碼器要請(qǐng)求的數(shù)據(jù)。
圖1數(shù)據(jù)流入線程流程圖。圖2數(shù)據(jù)流出流程。
具體實(shí)施例方式下面將結(jié)合附圖進(jìn)一步闡述本發(fā)明圖1所示為數(shù)據(jù)流入線程工作流程。選取視頻FIFO最大閾值為40,最小閾值為 20,音頻FIFO最大閾值80,最小閾值為40。當(dāng)數(shù)據(jù)流入線程啟動(dòng)后,根據(jù)當(dāng)前各級(jí)FIFO狀態(tài)來確定是否需要數(shù)據(jù)在各級(jí)FIFO中流動(dòng),以及確定是否讀取源文件中的音視頻數(shù)據(jù)。假定視頻FIFO中視頻幀數(shù)量為Ni,音頻FIFO中音頻幀數(shù)量為N2,當(dāng)附和N2滿足FIFO管理策略所述條件時(shí),則數(shù)據(jù)流入線程處于等待狀態(tài);否則進(jìn)入數(shù)據(jù)流入操作。存在物理內(nèi)存 FIFO的情況下,要優(yōu)先保證物理內(nèi)存FIFO不空,然后再去讀取數(shù)據(jù)源文件。圖2為數(shù)據(jù)流出操作流程。數(shù)據(jù)流出操作首先確定是否使用物理內(nèi)存,然后啟動(dòng)數(shù)據(jù)流入線程才能確保數(shù)據(jù)的正常運(yùn)轉(zhuǎn)。如果存在物理內(nèi)存FIFO,則只需從物理內(nèi)存FIFO 中讀取數(shù)據(jù),否則從虛擬內(nèi)存FIFO中讀取數(shù)據(jù)。在每次讀取數(shù)據(jù)完畢后均要告知數(shù)據(jù)流入線程FIFO發(fā)生變化,以便數(shù)據(jù)流入線程能正確捕捉到各級(jí)FIFO狀態(tài)。上述操作過程是本發(fā)明所述方法的一種典型的實(shí)施方式,已經(jīng)在基于盈方微芯片的1080P多媒體解決方案中經(jīng)百萬級(jí)出貨量驗(yàn)證,可以很好地滿足用戶的多媒體體驗(yàn)。 對(duì)于本領(lǐng)域的一般技術(shù)人員,在上述實(shí)施例的基礎(chǔ)上可以做多種變化,合理設(shè)定物理內(nèi)存 FIFO深度,合理控制各閾值的選取,更能滿足更多系統(tǒng)對(duì)本發(fā)明的使用。但是,這種變化顯然應(yīng)該在本發(fā)明的權(quán)利要求書的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種多媒體數(shù)據(jù)源讀取模型的架構(gòu)方法,包括數(shù)據(jù)流入和流出,方案如下第一步,架構(gòu)多線程模型,將數(shù)據(jù)流入和流出分離;第二步,創(chuàng)建存儲(chǔ)音視頻數(shù)據(jù)的虛擬內(nèi)存FIFO并可根據(jù)用戶需求創(chuàng)建物理內(nèi)存FIFO ;第三步,音視頻FIFO及其管理策略;第四步,數(shù)據(jù)流出操作。
2.如權(quán)利要求1所述的數(shù)據(jù)源讀取的構(gòu)架方法,其特征在于所述第一步中,在架構(gòu)多線程模型時(shí),創(chuàng)建音視頻FIFO,建立獨(dú)立的線程用于數(shù)據(jù)流入操作,并將讀取到的音視頻數(shù)據(jù)放入FIFO中進(jìn)行管理。而用戶所居的線程僅有對(duì)FIFO訪問的權(quán)限。
3.如權(quán)利要求1所述的數(shù)據(jù)源讀取的構(gòu)架方法,其特征在于所述第二步中,在創(chuàng)建物理內(nèi)存FIFO時(shí),物理內(nèi)存的深度需要用戶根據(jù)具體系統(tǒng)自行指定。存在物理內(nèi)存FIFO時(shí)設(shè)置成兩級(jí)FIFO緩沖,讀取的數(shù)據(jù)先流入虛擬內(nèi)存FIFO,然后再流入物理內(nèi)存FIFO。這里數(shù)據(jù)流入虛擬內(nèi)存FIFO過程中直接利用獲得的虛擬內(nèi)存地址形成新的FIFO成員,無需拷貝。而原本在解碼器請(qǐng)求數(shù)據(jù)時(shí)發(fā)生的拷貝轉(zhuǎn)移到數(shù)據(jù)流入流程,這更有利于數(shù)據(jù)流出的快速響應(yīng)。
4.如權(quán)利要求1所述的數(shù)據(jù)源讀取的構(gòu)架方法,其特征在于所述第三步中,音視頻FIFO及其管理策略包括(1)音視頻隊(duì)列存在物理內(nèi)存FIFO和虛擬內(nèi)存FIFO。如果存在物理內(nèi)存FIFO,優(yōu)先保證物理內(nèi)存FIFO非空。如果物理內(nèi)存滿,則將數(shù)據(jù)存入虛擬內(nèi)存FIFO。(2)設(shè)定音視頻FIFO各自的最大閾值。當(dāng)音視頻數(shù)據(jù)FIFO都達(dá)到最大閾值時(shí),停止讀取數(shù)據(jù),數(shù)據(jù)流入線程處于等待狀態(tài)。(3)設(shè)定音視頻數(shù)據(jù)FIFO各自的最小閾值。當(dāng)音視頻數(shù)據(jù)FIFO中某一FIFO中數(shù)據(jù)幀小于最小閾值時(shí),數(shù)據(jù)流入線程處于讀取狀態(tài),開始讀取數(shù)據(jù)。(4)當(dāng)音視頻FIFO中數(shù)據(jù)量介于最大閾值和最小閾值之間時(shí),如果當(dāng)前數(shù)據(jù)流入線程處于讀取狀態(tài),則線程處于讀取狀態(tài)直到各FIFO數(shù)據(jù)量達(dá)到最大閾值時(shí),停止線程。否則, 線程將一直處于等待狀態(tài)直到某一 FIFO數(shù)據(jù)量小于最小閾值時(shí),線程將變?yōu)樽x取狀態(tài)。(5)設(shè)定音視頻數(shù)據(jù)數(shù)據(jù)隊(duì)列的最大深度。當(dāng)隊(duì)列數(shù)據(jù)超過最大深度,停止讀取數(shù)據(jù), 數(shù)據(jù)流入線程處于等待狀態(tài)。設(shè)定此項(xiàng)主要用于對(duì)內(nèi)存的保護(hù),以防過分使用內(nèi)存導(dǎo)致系統(tǒng)內(nèi)存不足。
5.如權(quán)利要求1所述的數(shù)據(jù)源讀取的構(gòu)架方法,其特征在于所述第四步中,數(shù)據(jù)流出操作時(shí),用戶只需要通過訪問音視頻數(shù)據(jù)FIFO就能獲得解碼器要請(qǐng)求的數(shù)據(jù)。
全文摘要
一種多媒體數(shù)據(jù)源讀取模型的架構(gòu)方法,所屬技術(shù)領(lǐng)域?yàn)樯婕耙环N用于播放高碼率、高清視頻時(shí),其數(shù)據(jù)源讀取方式的架構(gòu)方法。本發(fā)明所要解決的問題是在讀取音視頻數(shù)據(jù)這一環(huán)節(jié)中,以何種方式讀取數(shù)據(jù)源,即如何架構(gòu)數(shù)據(jù)源讀取模型來快速響應(yīng)解碼器的數(shù)據(jù)請(qǐng)求。解決的技術(shù)方案如下架構(gòu)多線程模型,將數(shù)據(jù)流入和流出分離;根據(jù)用戶需求創(chuàng)建物理內(nèi)存FIFO,物理內(nèi)存的深度需要用戶根據(jù)具體系統(tǒng)自行指定;音視頻FIFO及其管理策略;數(shù)據(jù)流出操作。本發(fā)明使多媒體播放過程中數(shù)據(jù)源的讀取時(shí)間分布更加合理,直接將FIFO中數(shù)據(jù)送交解碼器,響應(yīng)更加快速。在相同的系統(tǒng)下,利用本模型讀取數(shù)據(jù)源效率更高,高碼率高清視頻播放更加流暢。
文檔編號(hào)G11B20/12GK102394088SQ20111017967
公開日2012年3月28日 申請(qǐng)日期2011年6月28日 優(yōu)先權(quán)日2011年6月28日
發(fā)明者丁強(qiáng), 付偉, 徐艷圓, 李興仁, 章志剛 申請(qǐng)人:上海盈方微電子有限公司