本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種音視頻數(shù)據(jù)DMA傳輸方法及裝置。
背景技術(shù):
DMA(Direct Memory Access,直接內(nèi)存存取)是所有現(xiàn)代電腦的重要特色,它允許不同速度的硬件裝置來(lái)溝通,而不需要依賴(lài)于CPU的大量中斷負(fù)載。否則,CPU需要從來(lái)源把每一片段的資料復(fù)制到暫存器,然后把它們?cè)俅螌?xiě)回到新的地方。在這個(gè)時(shí)間中,CPU對(duì)于其他的工作來(lái)說(shuō)就無(wú)法使用。
傳統(tǒng)的音視頻數(shù)據(jù)傳輸方式有將音頻數(shù)據(jù)編碼到視頻數(shù)據(jù)中,或傳輸當(dāng)將部分音頻數(shù)據(jù)與一幀視頻數(shù)據(jù)進(jìn)行合并傳輸。這兩種方式當(dāng)面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生問(wèn)題。實(shí)際應(yīng)用中,由于視頻數(shù)據(jù)要經(jīng)過(guò)多級(jí)幀率變換,例如源端為1080P,60Hz,但輸出需要1080P,30Hz。這就需要將視頻數(shù)據(jù)幀率降低一倍。但音頻數(shù)據(jù)要保持其連續(xù)性,不能丟音頻幀,且要求與視頻數(shù)據(jù)同步,這就需要對(duì)音頻視頻數(shù)據(jù)進(jìn)行特殊處理,保證視聽(tīng)效果。
上述提及的面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題成為了本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法及裝置,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法,包括:
獲取音視頻數(shù)據(jù);
將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;
根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)所述視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)所述音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;
將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)所述DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。
優(yōu)選地,獲取音視頻數(shù)據(jù)具體包括:
獲取所述視頻數(shù)據(jù)和所述音頻數(shù)據(jù);
將所述視頻數(shù)據(jù)轉(zhuǎn)換成DDR存儲(chǔ)格式,并將所述音頻數(shù)據(jù)轉(zhuǎn)換成FIFO存儲(chǔ)格式。
優(yōu)選地,將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間具體包括:
將所述視頻數(shù)據(jù)進(jìn)行多幀緩存處理,并存入外部DDR存儲(chǔ)空間;
將所述音頻數(shù)據(jù)存入內(nèi)部FIFO存儲(chǔ)空間;
同時(shí),根據(jù)所述視頻數(shù)據(jù)的視頻幀號(hào)與所述音頻數(shù)據(jù)的音頻幀號(hào)插入到音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中。
優(yōu)選地,根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)所述視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)所述音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理具體包括:
接收并響應(yīng)處理器發(fā)出的所述DMA請(qǐng)求;
當(dāng)請(qǐng)求所述視頻數(shù)據(jù)時(shí),同時(shí)讀取所述視頻幀號(hào)狀態(tài)寄存器;
當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與所述音頻幀號(hào)狀態(tài)寄存器;
對(duì)所述視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)所述音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理。
優(yōu)選地,將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)所述DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放具體包括:
將所述DMA視頻數(shù)據(jù)DMA到顯存中通過(guò)顯卡顯示;
將所述DMA音頻數(shù)據(jù)DMA到內(nèi)存中,并將所述音頻幀號(hào)狀態(tài)寄存器和所述視頻幀號(hào)狀態(tài)寄存器中的幀號(hào)信息一一對(duì)應(yīng);
當(dāng)獲取同步指令時(shí),根據(jù)所述視頻幀號(hào)搜索對(duì)應(yīng)相同的所述音頻幀號(hào)。
本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸裝置,包括:
獲取單元,用于獲取音視頻數(shù)據(jù);
存儲(chǔ)處理單元,用于將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;
DMA響應(yīng)單元,用于根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)所述視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)所述音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;
DMA傳輸單元,用于將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)所述DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。
優(yōu)選地,獲取單元具體包括:
獲取子單元,用于獲取所述視頻數(shù)據(jù)和所述音頻數(shù)據(jù);
轉(zhuǎn)換子單元,用于將所述視頻數(shù)據(jù)轉(zhuǎn)換成DDR存儲(chǔ)格式,并將所述音頻數(shù)據(jù)轉(zhuǎn)換成FIFO存儲(chǔ)格式。
優(yōu)選地,存儲(chǔ)處理單元具體包括:
第一存儲(chǔ)子單元,用于將所述視頻數(shù)據(jù)進(jìn)行多幀緩存處理,并存入外部DDR存儲(chǔ)空間;
第二存儲(chǔ)子單元,用于將所述音頻數(shù)據(jù)存入內(nèi)部FIFO存儲(chǔ)空間;
加入同步標(biāo)志子單元,用于根據(jù)所述視頻數(shù)據(jù)的視頻幀號(hào)與所述音頻數(shù)據(jù)的音頻幀號(hào)插入到音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中。
優(yōu)選地,DMA響應(yīng)單元具體包括:
DMA響應(yīng)子單元,接收并響應(yīng)處理器發(fā)出的所述DMA請(qǐng)求;
第一讀取子單元,用于當(dāng)請(qǐng)求所述視頻數(shù)據(jù)時(shí),同時(shí)讀取所述視頻幀號(hào)狀態(tài)寄存器;
第二讀取子單元,用于當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與所述音頻幀號(hào)狀態(tài)寄存器;
DMA處理子單元,用于對(duì)所述視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)所述音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理。
優(yōu)選地,DMA傳輸單元具體包括:
第一DMA傳輸子單元,用于將所述DMA視頻數(shù)據(jù)DMA到顯存中通過(guò)顯卡顯示;
第二DMA傳輸子單元,用于將所述DMA音頻數(shù)據(jù)DMA到內(nèi)存中,并將所述音頻幀號(hào)狀態(tài)寄存器和所述視頻幀號(hào)狀態(tài)寄存器中的幀號(hào)信息一一對(duì)應(yīng);
DMA同步傳輸子單元,用于當(dāng)獲取同步指令時(shí),根據(jù)所述視頻幀號(hào)搜索對(duì)應(yīng)相同的所述音頻幀號(hào)。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法及裝置,其中,音視頻數(shù)據(jù)DMA傳輸方法包括:獲取音視頻數(shù)據(jù);將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。本實(shí)施例中,通過(guò)將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法的一個(gè)實(shí)施例的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法的另一個(gè)實(shí)施例的流程示意圖;
圖3為本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸裝置的另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖5和圖6為圖2的應(yīng)用例示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法及裝置,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法的一個(gè)實(shí)施例包括:
101、獲取音視頻數(shù)據(jù);
本實(shí)施例中,當(dāng)需要傳輸音視頻數(shù)據(jù)時(shí),首先需要獲取音視頻數(shù)據(jù)。
102、將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;
當(dāng)獲取音視頻數(shù)據(jù)之后,需要將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間。
103、根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;
當(dāng)將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間之后,需要根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理。
104、將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。
當(dāng)根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理之后,需要將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。
本實(shí)施例中,通過(guò)將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
上面是對(duì)音視頻數(shù)據(jù)DMA傳輸方法的過(guò)程進(jìn)行的描述,下面將對(duì)詳細(xì)的過(guò)程進(jìn)行詳細(xì)的描述,請(qǐng)參閱圖2,本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸方法的另一個(gè)實(shí)施例包括:
201、獲取視頻數(shù)據(jù)和音頻數(shù)據(jù);
本實(shí)施例中,當(dāng)需要傳輸音視頻數(shù)據(jù)時(shí),首先需要獲取視頻數(shù)據(jù)和音頻數(shù)據(jù)。
202、將視頻數(shù)據(jù)轉(zhuǎn)換成DDR存儲(chǔ)格式,并將音頻數(shù)據(jù)轉(zhuǎn)換成FIFO存儲(chǔ)格式;
當(dāng)獲取視頻數(shù)據(jù)和音頻數(shù)據(jù)之后,需要將視頻數(shù)據(jù)轉(zhuǎn)換成DDR存儲(chǔ)格式,并將音頻數(shù)據(jù)轉(zhuǎn)換成FIFO存儲(chǔ)格式。
203、將視頻數(shù)據(jù)進(jìn)行多幀緩存處理,并存入外部DDR存儲(chǔ)空間;
當(dāng)將視頻數(shù)據(jù)轉(zhuǎn)換成DDR存儲(chǔ)格式,并將音頻數(shù)據(jù)轉(zhuǎn)換成FIFO存儲(chǔ)格式之后,需要將視頻數(shù)據(jù)進(jìn)行多幀緩存處理,并存入外部DDR存儲(chǔ)空間。
204、將音頻數(shù)據(jù)存入內(nèi)部FIFO存儲(chǔ)空間;
當(dāng)將視頻數(shù)據(jù)進(jìn)行多幀緩存處理,并存入外部DDR存儲(chǔ)空間的同時(shí),需要將音頻數(shù)據(jù)存入內(nèi)部FIFO存儲(chǔ)空間。
205、根據(jù)視頻數(shù)據(jù)的視頻幀號(hào)與音頻數(shù)據(jù)的音頻幀號(hào)插入到音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中;
當(dāng)步驟203和204的同時(shí),需要根據(jù)視頻數(shù)據(jù)的視頻幀號(hào)與音頻數(shù)據(jù)的音頻幀號(hào)插入到音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中。
206、接收并響應(yīng)處理器發(fā)出的DMA請(qǐng)求;
當(dāng)步驟203至205之后,需要接收并響應(yīng)處理器發(fā)出的DMA請(qǐng)求。
207、當(dāng)請(qǐng)求視頻數(shù)據(jù)時(shí),同時(shí)讀取視頻幀號(hào)狀態(tài)寄存器,當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與音頻幀號(hào)狀態(tài)寄存器;
當(dāng)接收并響應(yīng)處理器發(fā)出的DMA請(qǐng)求之后,需要當(dāng)請(qǐng)求視頻數(shù)據(jù)時(shí),同時(shí)讀取視頻幀號(hào)狀態(tài)寄存器,當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與音頻幀號(hào)狀態(tài)寄存器。
208、對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;
當(dāng)請(qǐng)求視頻數(shù)據(jù)時(shí),同時(shí)讀取視頻幀號(hào)狀態(tài)寄存器,當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與音頻幀號(hào)狀態(tài)寄存器之后,需要對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理。
209、將DMA視頻數(shù)據(jù)DMA到顯存中通過(guò)顯卡顯示;
當(dāng)對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理之后,需要將DMA視頻數(shù)據(jù)DMA到顯存中通過(guò)顯卡顯示。
210、將DMA音頻數(shù)據(jù)DMA到內(nèi)存中,并將音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中的幀號(hào)信息一一對(duì)應(yīng);
當(dāng)將DMA視頻數(shù)據(jù)DMA到顯存中通過(guò)顯卡顯示的同時(shí),需要將DMA音頻數(shù)據(jù)DMA到內(nèi)存中,并將音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中的幀號(hào)信息一一對(duì)應(yīng)。
211、當(dāng)獲取同步指令時(shí),根據(jù)視頻幀號(hào)搜索對(duì)應(yīng)相同的音頻幀號(hào)。
當(dāng)步驟209和210之后,需要當(dāng)獲取同步指令時(shí),根據(jù)視頻幀號(hào)搜索對(duì)應(yīng)相同的音頻幀號(hào)。
下面以一具體應(yīng)用場(chǎng)景進(jìn)行描述,如圖5和圖6所示,應(yīng)用例包括:
傳輸過(guò)程可分為如圖6:
1接收音視頻數(shù)據(jù)
2將音視頻數(shù)據(jù)存入指定存儲(chǔ)空間
3接收并響應(yīng)DMA請(qǐng)求
4DMA音視頻數(shù)據(jù)到處理器端
具體過(guò)程中還包括:
過(guò)程1中包括:視頻數(shù)據(jù)接收,檢測(cè)視頻分辨率,并轉(zhuǎn)換成DDR存儲(chǔ)所需格式(vs+hs+data_valid+data)。音頻數(shù)據(jù)接收,檢測(cè)音頻格式(采樣率,聲道信息等),并轉(zhuǎn)換成FIFO存儲(chǔ)所需格式(data+data_valid)。音頻與視頻接收獨(dú)立進(jìn)行。
過(guò)程2中包括:將過(guò)程1中的音視數(shù)據(jù)存入到指定空間。由于視頻,數(shù)據(jù)龐大,同時(shí)由于按幀傳輸?shù)奶厥庑?,同步性要求讀寫(xiě)幀不能重疊,且需要進(jìn)行幀率變換,所以視頻多幀緩存,存入外部DDR存儲(chǔ)空間。但音頻數(shù)據(jù)數(shù)據(jù)量小,要求保持其連續(xù)性,不可間斷,所以存入內(nèi)部FIFO空間。在存儲(chǔ)音視頻數(shù)據(jù)的過(guò)程中,同時(shí)加入同步標(biāo)志,具體方法是,在視頻的幀開(kāi)始,產(chǎn)生一個(gè)幀號(hào),用兩個(gè)字節(jié)表示,將這個(gè)幀號(hào),插入到音頻幀號(hào)狀態(tài)和視頻幀號(hào)狀態(tài)寄存器中。
過(guò)程3中包括:接收并響應(yīng)處理器發(fā)出的DMA請(qǐng)求。當(dāng)請(qǐng)求視頻數(shù)據(jù)時(shí),同時(shí)讀取視頻幀號(hào)狀態(tài)寄存器。當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與音頻幀號(hào)狀態(tài)寄存器。視頻數(shù)據(jù)按幀大小進(jìn)行DMA,音頻數(shù)據(jù)按FIFO存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA。
過(guò)程4中包括:DMA音視頻數(shù)據(jù)到處理器端,視頻數(shù)據(jù)需要用顯卡顯示,固將視頻數(shù)據(jù)DMA到顯存中,直接顯示。音頻數(shù)據(jù)DMA到內(nèi)存中,且根據(jù)音頻幀號(hào)狀態(tài)和視頻幀號(hào)狀態(tài)寄存器中幀號(hào)信息一一對(duì)應(yīng),當(dāng)需要校準(zhǔn)對(duì)齊時(shí),根據(jù)視頻幀號(hào)去搜索對(duì)應(yīng)相同的音頻幀號(hào)。對(duì)齊方式可手動(dòng)也可定時(shí)自動(dòng)。
本實(shí)施例中,通過(guò)將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
實(shí)現(xiàn)了通過(guò)PCI-E接口傳到處理器的存儲(chǔ)空間,對(duì)音頻數(shù)據(jù)與視頻數(shù)據(jù)區(qū)別對(duì)待,可以響應(yīng)各自處理要求,如接受不同的幀率變換請(qǐng)求,DMA到不同的存儲(chǔ)空間顯存或內(nèi)存。同時(shí)加入精確對(duì)齊機(jī)制,使音視頻間的延遲小于1幀。
請(qǐng)參閱圖3,本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸裝置的一個(gè)實(shí)施例包括:
獲取單元301,用于獲取音視頻數(shù)據(jù);
存儲(chǔ)處理單元302,用于將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;
DMA響應(yīng)單元303,用于根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;
DMA傳輸單元304,用于將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。
本實(shí)施例中,通過(guò)將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
上面是對(duì)音視頻數(shù)據(jù)DMA傳輸裝置的各單元進(jìn)行的描述,下面將對(duì)子單元進(jìn)行面試,請(qǐng)參閱圖4,本發(fā)明實(shí)施例提供的一種音視頻數(shù)據(jù)DMA傳輸裝置的另一個(gè)實(shí)施例包括:
獲取單元401,用于獲取音視頻數(shù)據(jù);
獲取單元401具體包括:
獲取子單元4011,用于獲取視頻數(shù)據(jù)和音頻數(shù)據(jù);
轉(zhuǎn)換子單元4012,用于將視頻數(shù)據(jù)轉(zhuǎn)換成DDR存儲(chǔ)格式,并將音頻數(shù)據(jù)轉(zhuǎn)換成FIFO存儲(chǔ)格式。
存儲(chǔ)處理單元402,用于將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;
存儲(chǔ)處理單元402具體包括:
第一存儲(chǔ)子單元4021,用于將視頻數(shù)據(jù)進(jìn)行多幀緩存處理,并存入外部DDR存儲(chǔ)空間;
第二存儲(chǔ)子單元4022,用于將音頻數(shù)據(jù)存入內(nèi)部FIFO存儲(chǔ)空間;
加入同步標(biāo)志子單元4023,用于根據(jù)視頻數(shù)據(jù)的視頻幀號(hào)與音頻數(shù)據(jù)的音頻幀號(hào)插入到音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中。
DMA響應(yīng)單元403,用于根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;
DMA響應(yīng)單元403具體包括:
DMA響應(yīng)子單元4031,接收并響應(yīng)處理器發(fā)出的DMA請(qǐng)求;
第一讀取子單元4032,用于當(dāng)請(qǐng)求視頻數(shù)據(jù)時(shí),同時(shí)讀取視頻幀號(hào)狀態(tài)寄存器;
第二讀取子單元4033,用于當(dāng)請(qǐng)求音頻數(shù)據(jù)時(shí),同時(shí)讀取音頻長(zhǎng)度與音頻幀號(hào)狀態(tài)寄存器;
DMA處理子單元4034,用于對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理。
DMA傳輸單元404,用于將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放。
DMA傳輸單元404具體包括:
第一DMA傳輸子單元4041,用于將DMA視頻數(shù)據(jù)DMA到顯存中通過(guò)顯卡顯示;
第二DMA傳輸子單元4042,用于將DMA音頻數(shù)據(jù)DMA到內(nèi)存中,并將音頻幀號(hào)狀態(tài)寄存器和視頻幀號(hào)狀態(tài)寄存器中的幀號(hào)信息一一對(duì)應(yīng);
DMA同步傳輸子單元4043,用于當(dāng)獲取同步指令時(shí),根據(jù)視頻幀號(hào)搜索對(duì)應(yīng)相同的音頻幀號(hào)。
本實(shí)施例中,通過(guò)將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別存入對(duì)應(yīng)的指定存儲(chǔ)空間;根據(jù)響應(yīng)的DMA請(qǐng)求對(duì)視頻數(shù)據(jù)根據(jù)幀大小進(jìn)行DMA處理,對(duì)音頻數(shù)據(jù)根據(jù)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)數(shù)量進(jìn)行DMA處理;將DMA處理后的DMA視頻數(shù)據(jù)通過(guò)顯卡顯示,將DMA音頻數(shù)據(jù)根據(jù)DMA視頻數(shù)據(jù)進(jìn)行對(duì)應(yīng)播放,解決了目前面臨音頻數(shù)據(jù)與視頻數(shù)據(jù)在不同的存儲(chǔ)空間時(shí)和處理音視頻同步時(shí)會(huì)產(chǎn)生的同步出錯(cuò)的技術(shù)問(wèn)題。
實(shí)現(xiàn)了通過(guò)PCI-E接口傳到處理器的存儲(chǔ)空間,對(duì)音頻數(shù)據(jù)與視頻數(shù)據(jù)區(qū)別對(duì)待,可以響應(yīng)各自處理要求,如接受不同的幀率變換請(qǐng)求,DMA到不同的存儲(chǔ)空間顯存或內(nèi)存。同時(shí)加入精確對(duì)齊機(jī)制,使音視頻間的延遲小于1幀。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。