一種基于srio傳輸視頻幀的數(shù)據(jù)傳輸方法和裝置的制造方法
【技術(shù)領域】
[0001] 本發(fā)明屬于圖像處理領域,特別是涉及到使用SRIO接口傳輸視頻幀的一種處理 器間的接口方法和裝置。
【背景技術(shù)】
[0002] SRI0(Serial RapidIO)高速串行接口是新一代高速互聯(lián)技術(shù),廣泛應用于面向 高性能微處理器及系統(tǒng)互連接口,可以實現(xiàn)從IGbps到60Gbps的數(shù)據(jù)傳輸性能水平,已于 2004年被國際標準化組織(ISO)和國際電工協(xié)會(IEC)批準為IS0/IEC DIS 18372標準。 SRIO傳輸數(shù)據(jù)有兩種方式:Direct I/O方式和Message Passing。在高速處理器間傳輸高 清視頻數(shù)據(jù)一般采用Direct I/O方式,這樣視頻幀傳輸?shù)陌l(fā)起方可以在不中斷接收方處理 器的情況下,把視頻幀通過SRIO直接寫入接收方的接口緩沖區(qū),從而減少處理器之間的交 互次數(shù),提高處理器和傳輸性能。
[0003] 對于高清視頻來說,視頻傳輸速率很高,例如1080P@30fps高清視頻幀,一幀原始 視頻圖像大小為3110400字節(jié),傳輸速率為746. 5Mbps。采用多處理器架構(gòu),例如DSP+FPGA 架構(gòu)的嵌入式高清編碼器的處理器負載相對比較緊張,而用于視頻壓縮編碼運算的處理器 的關(guān)鍵是并行和流水線機制。高清視頻幀使用SRIO傳輸?shù)倪^程中,中斷次數(shù)越少,則視頻 幀傳輸占用的額外負載就越小。
[0004] 在處理器間的接口設計方法中,常用的方法之一是使用環(huán)形接口緩沖區(qū),其讀指 針和寫指針分別由接口兩側(cè)的處理器維護,數(shù)據(jù)計數(shù)器則由接口兩側(cè)處理器共同維護。為 了保證公共數(shù)據(jù)計數(shù)器的訪問操作唯一性,需要在接口兩側(cè)處理器對公共的數(shù)據(jù)計數(shù)器做 互斥訪問操作。這種互斥操作在處理器內(nèi)部一般采用信號量等機制來實現(xiàn),但是跨越處理 器實現(xiàn)公共資源的互斥訪問則比較困難或者過于復雜。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明提供了一種基于SRIO傳輸視頻幀的接口方法,在接收方使用雙 環(huán)形緩沖區(qū)結(jié)構(gòu)、在接口數(shù)據(jù)的幀信息中引入兩個獨立的長序號機制,既保證了數(shù)據(jù)的完 整性與訪問安全性,又避免了 SRIO接口兩側(cè)的處理器對共享資源的互斥訪問操作,從而使 接口兩側(cè)的處理器可以完全獨立的運行自己的業(yè)務。根據(jù)此方法設計了相應的裝置。
[0006] 根據(jù)本發(fā)明的一個方面,提供一種基于SRIO傳輸視頻幀的接口方法,該方法包括 如下步驟:
[0007] -種基于SRIO傳輸視頻幀的數(shù)據(jù)傳輸方法,該方法包括如下步驟:
[0008] Sl、實時采集高清視頻圖像數(shù)據(jù);
[0009] S2、基于SRIO接口,將每一幀的高清視頻圖像數(shù)據(jù)的像素點數(shù)據(jù)寫入第一環(huán)形 buffer中,將每一幀高清視頻圖像數(shù)據(jù)的幀信息依次寫入第二環(huán)形buffer的寫地址中;
[0010] S3、當接收到中斷消息時,更新本地緩沖區(qū)結(jié)構(gòu),并從第二環(huán)形buffer的讀指針 取出幀信息對已寫入的圖像信息進行檢測;
[0011] S4、檢測完畢,根據(jù)第二環(huán)形buffer中的幀信息到第一環(huán)形buffer中的地址中讀 取數(shù)據(jù),將高清視頻圖像數(shù)據(jù)傳輸給本地存儲設備,并更新本地的Frame No,F(xiàn)rame No表示 該幀視頻數(shù)據(jù)的順序號。
[0012] 2、優(yōu)選的,所述每一幀的幀信息包括Frame No、PTS、Frame Length、Image Address、CRC、Sequence No共6個字段;其中,PTS表示該幀視頻數(shù)據(jù)的時間戳,F(xiàn)rame Length表示該幀視頻數(shù)據(jù)的字節(jié)長度,Image Address表示該幀視頻數(shù)據(jù)在存儲器中的起 始存放地址,CRC為循環(huán)冗余校驗碼,依據(jù)前面四個字段的數(shù)據(jù)計算得出,Sequence No為最 后寫入的該幀視頻數(shù)據(jù)的順序號,其與該幀的Frame No -致。
[0013] 優(yōu)選的,步驟S2中的高清視頻圖像數(shù)據(jù)寫入的地址由高清視頻圖像數(shù)據(jù)中幀信 息的Image Address的字段確定,該幀視頻數(shù)據(jù)連續(xù)寫入;Image Address表示該幀視頻數(shù) 據(jù)在存儲器中的起始存放地址。
[0014] 優(yōu)選的,在所述步驟S3中對幀信息進行檢查的步驟進一步包括:
[0015] S31 :檢查接收的Frame No和Sequence No是否相同;其中:Frame No表示該幀視 頻數(shù)據(jù)的順序號,Sequence No為最后寫入的該幀視頻數(shù)據(jù)的順序號,其與該幀的Frame No 一致;
[0016] S32 :檢查接收的傳輸頭信息中的CRC是否正確,如果CRC正確則把本幀視頻標記 為好幀,否則標記為壞幀;CRC為依據(jù)前面四個字段的數(shù)據(jù)計算得出;
[0017] S33 :檢查將要處理幀的Frame No與接收到的幀頭信息中的Frame No是否相等: 如果將要處理幀的Frame No小于等于幀頭信息中的Frame No,則標識本幀為新接收到的視 頻幀;
[0018] S34 :如果新接收到的視頻幀是壞幀,則插入最近一幀好幀作為補償幀;否則直接 使用當前好幀進行后續(xù)處理。
[0019] -種基于SRIO傳輸視頻幀的數(shù)據(jù)傳輸裝置,該裝置包括如下模塊:
[0020] 數(shù)據(jù)采集模塊,用于采集高清視頻圖像數(shù)據(jù);
[0021] 數(shù)據(jù)寫入單元,用于將每一幀的高清視頻圖像數(shù)據(jù)的像素點數(shù)據(jù)和每一幀高頻視 頻圖像數(shù)據(jù)的幀信息分別寫入第一環(huán)形buffer和第二環(huán)形buffer的寫地址中;
[0022] 中斷消息發(fā)送模塊,用于向數(shù)據(jù)寫入摸發(fā)送中斷消息,提示數(shù)據(jù)寫入模塊發(fā)送數(shù) 據(jù)完畢,開始處理傳輸數(shù)據(jù),并更新本地信息緩沖區(qū)結(jié)構(gòu);
[0023] 高清視頻幀接收模塊:處理器B響應所述中斷消息的接收,從第二環(huán)形buffer的 讀指針取出幀信息,并將接收到幀視頻數(shù)據(jù)的傳輸頭信息拷貝到處理器B的本地存儲器, 同時更新本地的Frame No, Frame No表示該幀視頻數(shù)據(jù)的順序號。
[0024] 優(yōu)選的,所述數(shù)據(jù)寫入單元包括
[0025] 像素點數(shù)據(jù)寫入模塊,用于將每一幀的高清視頻圖像數(shù)據(jù)的像素點數(shù)據(jù)寫入第一 環(huán)形buffer中;
[0026] 幀信息寫入模塊,用于將每一幀高頻視頻圖像數(shù)據(jù)的幀信息依次寫入第二環(huán)形 buffer 中。
[0027] 優(yōu)選的,所述高清視頻圖像數(shù)據(jù)寫入的地址由高清視頻圖像數(shù)據(jù)中幀信息的 Image Address的字段確定,該幀視頻數(shù)據(jù)連續(xù)寫入;Image Address表示該幀視頻數(shù)據(jù)在 存儲器中的起始存放地址。
[0028] 優(yōu)選的,所述幀信息寫入模塊的所述處理器A的幀信息字段順序為:Frame No、 PTS、Frame Length、Image Address、CRC、Sequence No ;其中,PTS表不該幀視頻數(shù)據(jù)的時間 戳,F(xiàn)rame Length表示處理器A采集到的該幀視頻數(shù)據(jù)的字節(jié)長度,Image Address表示該 幀視頻數(shù)據(jù)在存儲器中的起始存放地址,CRC依據(jù)前面四個字段的數(shù)據(jù)計算得出,Sequence No為最后寫入的該幀視頻數(shù)據(jù)的順序號。
[0029] 優(yōu)選的,還包括幀信息檢查模塊,其用于執(zhí)行以下步驟:
[0030] S21 :檢查接收的Frame No和Sequence No是否相同;其中:Frame No表示本次數(shù) 據(jù)包的順序號,Sequence No為最后寫入的該幀視頻數(shù)據(jù)的順序號,其與該幀的Frame No 一致;
[0031] S22 :檢查接收的傳輸消息頭中的CRC是否正確,如果CRC正確則把本幀視頻標記 為好幀,否則標記為壞幀;CRC為依據(jù)前面四個字段的數(shù)據(jù)計算得出;
[0032] S23 :檢查本地存儲的將要處理幀的Frame No與接收到的幀信息頭中的Frame No 是否相等:如果將要處理幀的Frame No小于等于幀信息傳輸頭中的Frame No,則標識本幀 為新接收到的視頻幀;
[0033] S24 :如果新接收到的視頻幀是壞幀,則插入最近一幀好幀作為補償幀;否則直接 使用當前好幀進行后續(xù)處理。
[0034] 本發(fā)明的有益效果如下:
[0035] 本發(fā)明的有益之處在于本發(fā)明所述的方法和裝置在利用SRIO傳輸高清視頻幀數(shù) 據(jù)時,使用雙環(huán)形的緩沖區(qū)機制,對高清視頻數(shù)據(jù)收發(fā)全部以地址進行操作,避免了高清視 頻數(shù)據(jù)的二次拷貝;接口中使用兩個獨立的長序號做傳輸頭完整性校驗,并且發(fā)送方和接 收方獨立維護各自的幀信息,不存在跨處理器的資源互斥訪問問題,有效降低了設計和實 現(xiàn)難度,減少了處理期間的交互次數(shù)。
【附圖說明】
[0036] 下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進一步詳細的說明;
[0037] 圖1示出基于SRIO的高速處理器間硬件連接的示意圖
[0038] 圖2示出本發(fā)明實施例中數(shù)據(jù)傳輸裝置中雙環(huán)形buffer緩沖區(qū)示意圖;
[0039] 圖3示出基于SRIO傳輸視頻幀的數(shù)據(jù)傳輸方法的流程圖;
[0040] 圖4示出基于SRIO傳輸視頻幀的數(shù)據(jù)傳輸裝置的工作流程圖。
【具體實施方式】
[0041] 為更好地理解本發(fā)明,下面將通過具體的實施例進一步說明本發(fā)明的方案,本發(fā) 明的保護范圍應包括權(quán)利要求的全部內(nèi)容,但不限于此。
[0042] 作為本發(fā)明提出的方