專利名稱:一種內(nèi)存全部嵌入的音視頻采集及播放處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式系統(tǒng)內(nèi)的音視頻處理方法,具體來(lái)說(shuō)涉及一種內(nèi)存全部嵌入的音視頻采集及播放處理方法。
背景技術(shù):
隨著多媒體芯片技術(shù)的發(fā)展以及相關(guān)領(lǐng)域的應(yīng)用市場(chǎng)的不斷成長(zhǎng),多媒體應(yīng)用處理器的音視頻處理能力越來(lái)越強(qiáng)。實(shí)時(shí)性的需求、編解碼能力的不斷提高等因素,使音視頻處理器往硬件加速的方向發(fā)展,并往往需要外接內(nèi)存的協(xié)助?,F(xiàn)在主流的音視頻處理電路主要有兩種一種是用純軟件的方法完成音視頻的錄制、播放等功能,外接內(nèi)存供CPU使用;一種是用硬件加速的方法協(xié)助完成音視頻的錄制、播放等功能,大部分的數(shù)據(jù)處理采用硬件邏輯實(shí)現(xiàn),外接內(nèi)存供CPU和硬件加速單元共同使用。第一種方法用純軟件的方法完成音視頻的錄制、播放等功能,外接內(nèi)存供CPU使用。純軟件的方法在涉及視頻處理等數(shù)據(jù)量大、操作復(fù)雜的處理中非常吃力。實(shí)時(shí)性的要求和編解碼能力的提高(主要體現(xiàn)在視頻分辨率的不斷提高),要求CPU核的能力不斷提高、主頻也需要不斷提升,最后導(dǎo)致成本不斷加大。高速的CPU運(yùn)轉(zhuǎn)決定了其功耗很高,在便攜式的應(yīng)用中成了致命的缺點(diǎn)。第二種方法用硬件加速的方法協(xié)助完成音視頻的錄制、播放等功能。硬件加速單元大大減輕了 CPU的負(fù)擔(dān),因此成為了目前高分辨率視頻處理器的主流。然而硬件加速單元在運(yùn)算中需要直接訪問(wèn)使用大量的存儲(chǔ)單元,因此需要外接內(nèi)存芯片(如DRAM)供其作為緩存使用。外接的內(nèi)存芯片性能越高,存儲(chǔ)單元越大,整機(jī)成本就越高。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種內(nèi)存全部嵌入的音視頻采集及播放處理方法,能夠讓多媒體應(yīng)用處理器在無(wú)需外接DRAM或其他外部隨機(jī)存儲(chǔ)單元的情況下,僅依靠片上存儲(chǔ), 采用硬件加速的方法,完成實(shí)時(shí)的音視頻錄制、播放等常用功能,且成本更低,有助于推廣運(yùn)用。本發(fā)明的目的可通過(guò)以下的技術(shù)措施來(lái)實(shí)現(xiàn)—種內(nèi)存全部嵌入的音視頻采集處理方法,包括以下步驟(A)對(duì)音頻數(shù)據(jù)進(jìn)行編碼并寫入外部存儲(chǔ)器中;(B)對(duì)視頻數(shù)據(jù)采用硬件加速方法進(jìn)行處理。所述視頻數(shù)據(jù)的硬件加速處理過(guò)程為Bi)、將攝像頭采集到的視頻數(shù)據(jù)緩存在片上內(nèi)存BUFl中,編碼器從片上內(nèi)存 BUFl中讀取源數(shù)據(jù)進(jìn)行視頻編碼;B2)、完成了一幀編碼后,CPU通過(guò)外部存儲(chǔ)器接口,將碼流文件寫入外部存儲(chǔ)器中。所述步驟Bi)中攝像頭采集以像素行為單位,視頻編碼以宏塊為單位,每個(gè)宏塊通常包含16像素行或者8像素行。所述步驟Bi)中的片上內(nèi)存BUFl為緩存2個(gè)宏塊行的數(shù)據(jù)的乒乓緩存。所述步驟Bi)中編碼器和攝像頭的采集過(guò)程采用流水并行處理方式,具體過(guò)程為當(dāng)編碼器和攝像頭的采集過(guò)程都完成了各自的宏塊行數(shù)據(jù)處理后,相互交換乒乓緩存, 繼續(xù)下一個(gè)宏塊行的處理。在所述步驟B2)視頻編碼的同時(shí),進(jìn)行實(shí)時(shí)播放的過(guò)程播放控制模塊從片上內(nèi)存BUFl中得到當(dāng)前采集的數(shù)據(jù),并縮放至適合顯示的大小送至外部顯示器顯示。所述外部顯示器或其驅(qū)動(dòng)芯片具有幀緩存。本發(fā)明一種與上述采集方法配套使用的內(nèi)存全部嵌入的音視頻播放處理方法,以下步驟(I)、系統(tǒng)軟件從外部存儲(chǔ)器中讀取碼流文件,并完成文件頭的解析工作,分離出音頻流和視頻流;所述音頻流數(shù)據(jù)用CPU進(jìn)行解碼播放;(II)、所述視頻流數(shù)據(jù)采用硬件加速處理并進(jìn)行播放。所述步驟(II)中視頻數(shù)據(jù)采用硬件加速方法處理并進(jìn)行播放的具體過(guò)程為CPU 處理完幀頭數(shù)據(jù)后,將一幀的數(shù)據(jù)流存放在片上內(nèi)存BUF2中,解碼器從片上內(nèi)存BUF2中讀取數(shù)據(jù),并完成解碼,并將解碼后的數(shù)據(jù)存放在片上內(nèi)存BUFl中;片上內(nèi)存BUFl接收完一個(gè)宏塊行的數(shù)據(jù)后,送入播放控制模塊進(jìn)行播放。所述嵌入內(nèi)存中的片上內(nèi)存BUFl和片上內(nèi)存BUF2采用復(fù)用方式,所述復(fù)用方式包括視頻處理模式和系統(tǒng)內(nèi)存模式;其中,視頻處理模式切換到系統(tǒng)內(nèi)存模式的過(guò)程為al)、將工作模式切換為系統(tǒng)內(nèi)存模式;bl)、為當(dāng)前內(nèi)存分配地址,并設(shè)置為可用;cl)、CPU正常訪問(wèn)當(dāng)前內(nèi)存空間;系統(tǒng)內(nèi)存模式切換到視頻處理模式的過(guò)程為a2)、檢查當(dāng)前內(nèi)存是否在使用,如果當(dāng)前內(nèi)存空閑,則直接進(jìn)入步驟c2);否則進(jìn)入步驟b2);b2)、將當(dāng)前內(nèi)存的內(nèi)容復(fù)制到其他可用內(nèi)存空間中;c2)、將工作模式切換為視頻數(shù)據(jù)的硬件加速處理模式。本發(fā)明方法相比現(xiàn)有技術(shù)具有以下有益效果1、一方面,現(xiàn)有的用純軟件進(jìn)行視頻編解碼,運(yùn)算速度慢的缺點(diǎn)使其難以達(dá)到實(shí)時(shí)性的要求;CPU長(zhǎng)時(shí)間高速運(yùn)轉(zhuǎn)導(dǎo)致的高功耗,使其難以滿足便攜式的需要。相比之下, 本發(fā)明方法采用了專用硬件加速單元,完成視頻編解碼中的大部分?jǐn)?shù)據(jù)運(yùn)算,速度上能滿足實(shí)時(shí)性的要求;另一方面,CPU的運(yùn)算任務(wù)大大減輕,只需要完成文件組織,文件頭解析等簡(jiǎn)單工作,在功耗上有較大優(yōu)勢(shì);2、與外接內(nèi)存參與視頻處理的方案相比,本發(fā)明方法能夠大幅降低成本。外接內(nèi)存的方案通常將視頻處理的數(shù)據(jù)以幀為單位緩存于外部的DRAM中,而本發(fā)明中,由于編解碼數(shù)據(jù)的相關(guān)性小,只需要緩存2個(gè)宏塊行的數(shù)據(jù)即可,這個(gè)數(shù)量級(jí)的緩存完全可以在片內(nèi)實(shí)現(xiàn)。相比之下,本發(fā)明無(wú)需外接內(nèi)存,有效降低了整機(jī)成本;另一方面,采用本發(fā)明的處理器芯片無(wú)需封裝出大量引腳于外接內(nèi)存連接,能有效降低芯片的封裝成本。同時(shí),由于片上存儲(chǔ)資源存取速度快,帶寬寬,比起外接內(nèi)存節(jié)省的很多數(shù)據(jù)存取時(shí)間,令平均編解碼時(shí)間有所提高。
圖1是本發(fā)明方法的音視頻數(shù)據(jù)采集過(guò)程的流程示意圖;圖2是本發(fā)明方法音視頻數(shù)據(jù)采集過(guò)程中攝像頭采集和視頻編碼器的數(shù)據(jù)交互示意圖;圖3是本發(fā)明方法的音視頻的播放過(guò)程的流程示意圖;圖4是本發(fā)明方法中嵌入內(nèi)存從視頻處理模式轉(zhuǎn)換為系統(tǒng)內(nèi)存模式的切換流程圖;圖5是本發(fā)明方法中嵌入內(nèi)存從系統(tǒng)內(nèi)存模式轉(zhuǎn)換為視頻處理模式的切換流程圖。
具體實(shí)施例方式圖1至圖5示出了本發(fā)明的內(nèi)存全部嵌入的音視頻處理器內(nèi)部的各部分處理流程,該音視頻處理流程包括音視頻數(shù)據(jù)采集過(guò)程和視頻的回放過(guò)程,其中,音視頻數(shù)據(jù)采集過(guò)程為(A)對(duì)音頻數(shù)據(jù)進(jìn)行編碼并寫入外部存儲(chǔ)器中;(B)對(duì)視頻數(shù)據(jù)采用硬件加速方法進(jìn)行處理;其中的視頻數(shù)據(jù)的硬件加速處理過(guò)程為Bi)、將攝像頭采集到的視頻數(shù)據(jù)緩存在片上內(nèi)存BUFl中,編碼器從BUFl中讀取源數(shù)據(jù)進(jìn)行視頻編碼;攝像頭采集以像素行為單位,視頻編碼以宏塊為單位,每個(gè)宏塊通常包含16像素行或者8像素行。片上內(nèi)存BUFl為緩存2個(gè)宏塊行的數(shù)據(jù)的乒乓緩存,以片上RAM方式實(shí)現(xiàn)。編碼器和攝像頭的采集過(guò)程采用流水并行處理方式,具體過(guò)程為當(dāng)編碼器和攝像頭的采集過(guò)程都完成了各自的宏塊行數(shù)據(jù)處理后,相互交換乒乓緩存,繼續(xù)下一個(gè)宏塊行的處理。在一般的標(biāo)清拍攝應(yīng)用中(如720x480@25fpS),編碼器處理時(shí)間要比攝像頭采集時(shí)間快,這保證了源源不斷的采集數(shù)據(jù)不會(huì)丟失,視頻編碼能滿足實(shí)時(shí)性的要求。攝像頭與編碼器之間的數(shù)據(jù)交互方法以宏塊行為單位乒乓緩存,這是大大縮小視頻編碼緩存空間的根本原因,也是視頻處理能做到完全內(nèi)存嵌入的關(guān)鍵所在。在步驟Bi)完成一幀編碼前, 還插入實(shí)時(shí)播放過(guò)程播放控制模塊從BUFl中得到當(dāng)前采集的數(shù)據(jù),并縮放至適合顯示的大小送至外部顯示器顯示。外部顯示器或其驅(qū)動(dòng)芯片都具有幀緩存功能。在步驟Bi)完成一幀編碼前,還插入實(shí)時(shí)播放過(guò)程播放控制模塊從BUFl中得到當(dāng)前采集的數(shù)據(jù),并縮放至適合顯示的大小送至外部顯示器顯示。外部顯示器或其驅(qū)動(dòng)芯片都具有幀緩存功能。編碼器采用幀內(nèi)編碼技術(shù),以減少對(duì)非當(dāng)前幀數(shù)據(jù)的依賴。一種典型應(yīng)用為JPEG 壓縮標(biāo)準(zhǔn)(但不僅限于JPEG壓縮標(biāo)準(zhǔn))。完成了編碼后,碼流被存放在碼流緩存BUF2中。B2)、完成了一幀編碼后,CPU通過(guò)外部存儲(chǔ)器接口,將碼流文件寫入外部存儲(chǔ)器中,如 Nand Flash, SD 卡等;另外,配套使用的音視頻的回放過(guò)程的具體過(guò)程為
(I)、系統(tǒng)軟件從外部存儲(chǔ)器中讀取碼流文件,并完成文件頭的解析工作,分離出音頻流和視頻流;所述音頻流數(shù)據(jù)用CPU進(jìn)行解碼播放;(II)、視頻流數(shù)據(jù)采用硬件加速方法處理并進(jìn)行播放。播放的具體過(guò)程為CPU處理完幀頭數(shù)據(jù)后,將一幀的數(shù)據(jù)流存放在片上內(nèi)存BUF2中,解碼器從片上內(nèi)存BUF2中讀取數(shù)據(jù),并完成解碼,并將解碼后的數(shù)據(jù)存放在片上內(nèi)存BUFl中;片上內(nèi)存BUFl接收完一個(gè)宏塊行的數(shù)據(jù)后,送入播放控制模塊進(jìn)行播放其中,在上述的嵌入內(nèi)存中的BUFl和BUF2采用復(fù)用方式,復(fù)用方式包括視頻處理模式和系統(tǒng)內(nèi)存模式。當(dāng)應(yīng)用中不需要視頻處理的功能時(shí),BUFl和BUF2可以被復(fù)用成系統(tǒng)內(nèi)存供CPU使用,使系統(tǒng)有更充裕的內(nèi)存處理其他事項(xiàng)。兩種模式之間的切換按照?qǐng)D 4和圖5的流程進(jìn)行。其中,視頻處理模式切換到系統(tǒng)內(nèi)存模式的過(guò)程為al)、將工作模式切換為系統(tǒng)內(nèi)存模式;bl)、為當(dāng)前內(nèi)存分配地址,并設(shè)置為可用;cl)、CPU正常訪問(wèn)當(dāng)前內(nèi)存空間,同樣以片上RAM方式實(shí)現(xiàn);系統(tǒng)內(nèi)存模式切換到視頻處理模式的過(guò)程為a2)、檢查當(dāng)前內(nèi)存是否在使用,如果當(dāng)前內(nèi)存空閑,則直接進(jìn)入步驟c2);否則進(jìn)入步驟b2);b2)、將當(dāng)前內(nèi)存的內(nèi)容復(fù)制到其他可用內(nèi)存空間中;c2)、將工作模式切換為視頻數(shù)據(jù)的硬件加速處理過(guò)程本發(fā)明方法可以應(yīng)用于移動(dòng)監(jiān)控領(lǐng)域(如錄像筆),也可以應(yīng)用于便攜式多媒體設(shè)備(如帶攝像頭的PMP)。以一款帶攝像頭的PMP為例子,若要求支持最大30萬(wàn)像素的攝像頭, 640x480i25fps的錄像幀率,支持QVGA(320x240)帶MPU接口的LCD屏,采用本發(fā)明中的內(nèi)存全部嵌入的音視頻處理電路,則電路中的各個(gè)部件的指標(biāo)如下a、攝像頭采集的平均時(shí)間為40ms/f ;b、BUFl需要存放2個(gè)宏塊行,即32像素行的數(shù)據(jù),按照YUV420的格式計(jì)算,BUFl 需要640x32x1. 5 = 30KB大小的片上RAM作為緩存;C、視頻編碼器需要滿足平均編碼時(shí)間小于攝像頭的平均采集時(shí)間,采用JPEG壓縮標(biāo)準(zhǔn)可以滿足要求,其大約在20ms/f左右;d、BUF2按經(jīng)驗(yàn)設(shè)置為能容納超過(guò)1幀已編碼數(shù)據(jù)的大小為宜,設(shè)定為24KB ;e、播放控制器能完成640x480到320x240的分辨率縮小需求,其顯示所需時(shí)間遠(yuǎn)遠(yuǎn)小于視頻編碼器的編碼時(shí)間。綜合上述,在這個(gè)例子中,采用本發(fā)明中的電路,只需要約54KB左右的緩存空間, 即可實(shí)現(xiàn)640X480@25fps的視頻錄制與播放任務(wù)。這個(gè)大小的存儲(chǔ)資源是完全適合用片上嵌入內(nèi)存實(shí)現(xiàn)。其直接優(yōu)點(diǎn)就在于省去了外接內(nèi)存的成本,降低了芯片的封裝等成本。本發(fā)明的實(shí)施方式不限于此,在本發(fā)明中,典型應(yīng)用為攝像頭接口采集到的數(shù)據(jù)即送入BUFl中進(jìn)行緩存。在進(jìn)入編碼器之前也可以先進(jìn)行一些前處理工作,如縮放處理、 時(shí)間戳或其他內(nèi)容的嵌入,顏色變換,窗口截取等,但是本質(zhì)上都是采用了本發(fā)明中的以宏塊行為單位進(jìn)行的數(shù)據(jù)緩存處理方法,最終實(shí)現(xiàn)內(nèi)存全部嵌入的目的,因此也應(yīng)視為本發(fā)明權(quán)利的保護(hù)范圍之內(nèi)。
在某些應(yīng)用中,某些主要模塊可以缺省。比如某些移動(dòng)監(jiān)控產(chǎn)品可能不需要實(shí)時(shí)預(yù)覽和顯示功能,播放控制器則可以缺省。但只要其主體部分采用了本發(fā)明中的內(nèi)存全部嵌入的硬件處理技術(shù),也應(yīng)視為本發(fā)明權(quán)利的保護(hù)范圍之內(nèi)。因此,在本發(fā)明上述基本技術(shù)思想前提下,按照本領(lǐng)域的普通技術(shù)知識(shí)和慣用手段對(duì)本發(fā)明內(nèi)容所做出其它多種形式的修改、替換或變更,均落在本發(fā)明權(quán)利保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種內(nèi)存全部嵌入的音視頻采集處理方法,其特征在于包括(A)對(duì)音頻數(shù)據(jù)進(jìn)行編碼并寫入外部存儲(chǔ)器中;(B)對(duì)視頻數(shù)據(jù)采用硬件加速方法進(jìn)行處理; 所述視頻數(shù)據(jù)的硬件加速處理過(guò)程為Bi)、將攝像頭采集到的視頻數(shù)據(jù)緩存在片上內(nèi)存BUFl中,編碼器從片上內(nèi)存BUFl中讀取源數(shù)據(jù)進(jìn)行視頻編碼;B2)、完成了一幀編碼后,CPU通過(guò)外部存儲(chǔ)器接口,將碼流文件寫入外部存儲(chǔ)器中。
2.根據(jù)權(quán)利要求1所述的內(nèi)存全部嵌入的音視頻采集處理方法,其特征在于所述步驟Bi)中攝像頭采集以像素行為單位,視頻編碼以宏塊為單位,每個(gè)宏塊通常包含16像素行或者8像素行。
3.根據(jù)權(quán)利要求1所述的內(nèi)存全部嵌入的音視頻采集處理方法,其特征在于所述步驟Bi)中的片上內(nèi)存BUFl為緩存2個(gè)宏塊行的數(shù)據(jù)的乒乓緩存。
4.根據(jù)權(quán)利要求1所述的內(nèi)存全部嵌入的音視頻采集處理方法,其特征在于所述步驟Bi)中編碼器和攝像頭的采集過(guò)程采用流水并行處理方式,具體過(guò)程為當(dāng)編碼器和攝像頭的采集過(guò)程都完成了各自的宏塊行數(shù)據(jù)處理后,相互交換乒乓緩存,繼續(xù)下一個(gè)宏塊行的處理。
5.根據(jù)權(quán)利要求1所述的內(nèi)存全部嵌入的音視頻采集處理方法,其特征在于在所述步驟B2)視頻編碼的同時(shí),進(jìn)行實(shí)時(shí)播放的過(guò)程播放控制模塊從片上內(nèi)存BUFl中得到當(dāng)前采集的數(shù)據(jù),并縮放至適合顯示的大小送至外部顯示器顯示。
6.根據(jù)權(quán)利要求5所述的內(nèi)存全部嵌入的音視頻采集處理方法,其特征在于所述外部顯示器或其驅(qū)動(dòng)芯片具有幀緩存。
7.一種與權(quán)利要求1配套使用的內(nèi)存全部嵌入的音視頻播放處理方法,其特征在于包括(I)、系統(tǒng)軟件從外部存儲(chǔ)器中讀取碼流文件,并完成文件頭的解析工作,分離出音頻流和視頻流;所述音頻流數(shù)據(jù)用CPU進(jìn)行解碼播放;(II)、所述視頻流數(shù)據(jù)采用硬件加速方法處理并進(jìn)行播放。
8.根據(jù)權(quán)利要求7所述的內(nèi)存全部嵌入的音視頻播放處理方法,其特征在于所述步驟(II)中視頻數(shù)據(jù)采用硬件加速方法處理并進(jìn)行播放的具體過(guò)程為CPU處理完幀頭數(shù)據(jù)后,將一幀的數(shù)據(jù)流存放在片上內(nèi)存BUF2中,解碼器從片上內(nèi)存BUF2中讀取數(shù)據(jù),并完成解碼,并將解碼后的數(shù)據(jù)存放在片上內(nèi)存BUFl中;片上內(nèi)存BUFl接收完一個(gè)宏塊行的數(shù)據(jù)后,送入播放控制模塊進(jìn)行播放。
9.根據(jù)權(quán)利要求1或7所述的內(nèi)存全部嵌入的音視頻播放處理方法,其特征在于所述嵌入內(nèi)存中的片上內(nèi)存BUFl和片上內(nèi)存BUF2采用復(fù)用方式,所述復(fù)用方式包括視頻處理模式和系統(tǒng)內(nèi)存模式;其中,視頻處理模式切換到系統(tǒng)內(nèi)存模式的過(guò)程為al)、將工作模式切換為系統(tǒng)內(nèi)存模式; bl)、為當(dāng)前內(nèi)存分配地址,并設(shè)置為可用; cl)、CPU正常訪問(wèn)當(dāng)前內(nèi)存空間; 系統(tǒng)內(nèi)存模式切換到視頻處理模式的過(guò)程為a2)、檢查當(dāng)前內(nèi)存是否在使用,如果當(dāng)前內(nèi)存空閑,則直接進(jìn)入步驟c2);否則進(jìn)入步驟 b2);b2)、將當(dāng)前內(nèi)存的內(nèi)容復(fù)制到其他可用內(nèi)存空間中; c2)、將工作模式切換為視頻數(shù)據(jù)的硬件加速處理模式。
全文摘要
本發(fā)明公開了一種內(nèi)存全部嵌入的音視頻采集及播放處理方法,其中,音視頻數(shù)據(jù)采集過(guò)程為(A)對(duì)音頻數(shù)據(jù)進(jìn)行編碼并寫入外部存儲(chǔ)器中;(B)視頻數(shù)據(jù)采用硬件加速方法進(jìn)行處理;音視頻的播放過(guò)程為(I)系統(tǒng)軟件從外部存儲(chǔ)器中讀取碼流文件,并完成文件頭的解析工作,分離出音頻流和視頻流;所述音頻流數(shù)據(jù)用CPU進(jìn)行解碼播放;(II)所述視頻流數(shù)據(jù)采用硬件加速方法處理并進(jìn)行播放。本方法能夠讓多媒體應(yīng)用處理器在無(wú)需外接DRAM或其他外部隨機(jī)存儲(chǔ)單元的情況下,僅依靠片上存儲(chǔ),采用硬件加速的方法,完成實(shí)時(shí)的音視頻錄制、播放等常用功能,且成本更低,有助于推廣運(yùn)用。
文檔編號(hào)H04N7/18GK102487439SQ20101056848
公開日2012年6月6日 申請(qǐng)日期2010年12月1日 優(yōu)先權(quán)日2010年12月1日
發(fā)明者李小明, 李釗輝, 杜林峰, 胡勝發(fā), 賈權(quán), 陳智德, 黃宇浩 申請(qǐng)人:安凱(廣州)微電子技術(shù)有限公司