專利名稱:一種支持音視頻幀存儲的內(nèi)存緩沖管理機制的制作方法
技術領域:
本發(fā)明屬于音視頻采集、壓縮編碼及存儲領域,具體為一種支持音視頻幀存儲的內(nèi)存緩沖管理機制。
背景技術:
由于數(shù)字硬盤系統(tǒng)采集的原始視頻幀數(shù)據(jù)經(jīng)過MPEG4或H. 264壓縮后,每個視頻幀數(shù)據(jù)長度不是固定的而是可變的,并且音視頻數(shù)據(jù)是以幀來表示的。而一般的數(shù)字硬盤存儲系統(tǒng)的存儲設備是為塊存儲設備,比如按512B或32KB存儲,是按塊的方式來表示數(shù)據(jù)。因而數(shù)字硬盤存儲系統(tǒng)在存儲音視頻數(shù)據(jù)時,需要根據(jù)塊存儲的固定長度對幀隊列進行裁剪或重新拷貝到特定長度的緩沖上,方可進行塊數(shù)據(jù)寫入。目前的數(shù)字硬盤錄像機一般為4,8,16路實時音視頻錄像系統(tǒng),如果每路視頻按 2Mb/秒的固定碼率編碼,則16路數(shù)字硬盤錄像機音視頻錄像系統(tǒng)固定碼率編碼為32Mb/ 秒。由于視頻采集和編碼所形成的以幀的形式表現(xiàn)數(shù)據(jù)到存儲設備以塊形式表現(xiàn)數(shù)據(jù),這需要做一次數(shù)據(jù)拷貝轉(zhuǎn)換。因此16路系統(tǒng)的數(shù)據(jù)總線需要產(chǎn)生2X32Mb/秒的吞吐能力。因此,如果按普通的幀數(shù)據(jù)到塊數(shù)據(jù)轉(zhuǎn)換,使用簡單兩類數(shù)據(jù)緩存之間的拷貝,數(shù)字硬盤錄像機音視頻錄像系統(tǒng)數(shù)據(jù)通訊負載將增加一倍,數(shù)據(jù)處理壓力較大。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決現(xiàn)有技術的不足,針對現(xiàn)有數(shù)字硬盤錄像機音視頻錄像系統(tǒng)數(shù)據(jù)處理方式的缺陷,提供一種新的音視頻幀存儲的內(nèi)存緩沖管理機制,能夠有效的提高音視頻存儲的轉(zhuǎn)換效率。一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,由N個普通數(shù)據(jù)塊和一個擴展數(shù)據(jù)塊組成,普通數(shù)據(jù)塊和擴展數(shù)據(jù)塊為連續(xù)內(nèi)存塊;音視頻幀存儲的內(nèi)存緩沖管理機制的數(shù)據(jù)幀處理流程為采集、編碼、存儲三個過程;所述的采集即采集輸出的是固定長度的音視頻數(shù)據(jù),所述的編碼即輸出可變長的壓縮音視頻數(shù)據(jù),所述的存儲即輸出32K塊數(shù)據(jù);音視頻幀存儲的內(nèi)存緩沖管理機制的存儲過程中數(shù)據(jù)處理流為塊循環(huán)緩沖初始化流程、幀數(shù)據(jù)寫入處理流程、塊數(shù)據(jù)寫盤處理流程。進一步的,所述的幀數(shù)據(jù)寫入流程和快數(shù)據(jù)寫盤處理流程是并發(fā)執(zhí)行的。所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制的應用前提是如果視頻編碼分辨率為Dl清晰度,設定編碼幀最大數(shù)據(jù)長度不超過32K ;如果在其它分辨率下,根據(jù)實際編碼數(shù)據(jù)最大長度調(diào)整塊的大小,但數(shù)據(jù)幀的長度為32K的倍數(shù)。所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制中,塊循環(huán)緩沖初始化流程步驟為
步驟1 向數(shù)字硬盤錄像機音視頻錄像系統(tǒng)申請塊循環(huán)緩沖使用的連續(xù)內(nèi)存塊; 步驟2 填寫塊信息數(shù)組,為每個塊填寫必要的信息和指定使用的內(nèi)存,首地址為指向連續(xù)內(nèi)存塊,且是以3 為分界的塊首地址;
4步驟3 初始化塊寫索引和塊讀索引值,初始化均為0,同時判斷當前指向的塊是否已
經(jīng)寫滿。所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制中,幀數(shù)據(jù)寫入處理流程步驟為 步驟1 依據(jù)采集系統(tǒng)提供的空幀信息結構,設置可用的輸出編碼幀緩沖,所述的緩沖
由塊循環(huán)緩沖提供;
步驟2 確保塊緩沖為可用緩沖,產(chǎn)生一個系統(tǒng)有條件等待,即等待第0塊緩沖可以寫
入;
步驟3 :調(diào)用音頻或視頻編碼器,編碼器寫入視頻數(shù)據(jù);
步驟4:更新當前寫塊信息結構和調(diào)整當前寫塊信息索引,調(diào)整當前塊的寫偏移值,如果大于或等于塊總長度,則需要調(diào)整;
具體調(diào)整方法如下當當前塊已經(jīng)填滿或超出則進入下一塊,如進入的下一塊是擴展數(shù)據(jù)塊,則需要作數(shù)據(jù)折疊處理,此時系統(tǒng)處于有條件系統(tǒng)等待狀態(tài),即等待第0塊緩沖可以寫入,在系統(tǒng)滿足有條件系統(tǒng)等待時,把所有進入擴展塊的數(shù)據(jù)全部拷貝到第0塊上,同時把寫索引移到第0塊上。步驟5 將編碼幀,提交到系統(tǒng)隊列,供網(wǎng)絡模塊或其他模塊做讀操作; 步驟6:編碼幀數(shù)據(jù)寫入過程完成,返回步驟1。所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制中,塊數(shù)據(jù)寫盤處理流程為 步驟1 產(chǎn)生一個系統(tǒng)有條件等待,等待當前塊讀位置索引指向的塊緩沖已經(jīng)寫滿
3 數(shù)據(jù);
步驟2 完成當前塊緩沖的寫入后,移動當前塊讀位置索引到下一塊或回到步驟1 ; 步驟3 標記此塊數(shù)據(jù)已經(jīng)寫入。對于幀數(shù)據(jù)寫入處理流程和塊數(shù)據(jù)寫盤處理流程在多任務操作系統(tǒng)和單任務操作系統(tǒng)上均可實現(xiàn)。與現(xiàn)有技術相比,本發(fā)明優(yōu)點如下編碼器輸出的壓縮數(shù)據(jù),在未確定長度前, 直接寫入塊緩沖中;每幀音視頻幀數(shù)據(jù)完整連續(xù),并不因3 塊分割而出現(xiàn)碎片;降低系統(tǒng)對數(shù)據(jù)的拷貝次數(shù),提高系統(tǒng)的處理效率;反向過程則可用于從磁盤把塊媒體數(shù)據(jù)還原為音視頻幀數(shù)據(jù),也起到降低拷貝數(shù)據(jù)的作用。
圖1為音視頻幀存儲的內(nèi)存緩沖管理機制組成示意圖。圖2為音視頻幀存儲的內(nèi)存緩沖管理機制流程圖。圖3為音視頻幀存儲的內(nèi)存緩沖管理機制數(shù)據(jù)處理流程圖。圖4為音視頻帖數(shù)據(jù)折疊處理示意圖。
具體實施例方式如圖1、圖2所示,數(shù)據(jù)幀處理的流程為采集、編碼、存儲;所述的采集即采集輸出的是固定長度的音視頻數(shù)據(jù),所述的編碼即輸出可變長的壓縮音視頻數(shù)據(jù),所述的存儲即輸出32K塊數(shù)據(jù)。本機制應用的前提條件是如果視頻編碼分辨率為Dl清晰度,設定編碼幀最大數(shù)據(jù)長度不超過32K;如果在其它分辨率下,根據(jù)實際編碼數(shù)據(jù)最大長度調(diào)整塊的大小,但為 32K的倍數(shù)。圖3為音視頻幀存儲的內(nèi)存緩沖管理機制數(shù)據(jù)處理流程圖,其步驟如下首先是塊循環(huán)緩沖初始化流程;其次是幀數(shù)據(jù)寫入處理流程;最后是塊數(shù)據(jù)寫盤處理流程,幀數(shù)據(jù)寫入流程和快數(shù)據(jù)寫盤處理流程是并發(fā)執(zhí)行的,分別在不同的操作系統(tǒng)任務上執(zhí)行;
圖4為音視頻帖數(shù)據(jù)折疊處理示意圖,本發(fā)明可以從編碼模塊輸出數(shù)據(jù)到塊數(shù)據(jù)緩沖中。所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制中,塊循環(huán)緩沖初始化流程步驟為
步驟1 向系統(tǒng)申請塊循環(huán)緩沖使用的連續(xù)內(nèi)存塊;
步驟2 填寫塊信息數(shù)組,為每個塊填寫必要的信息和指定使用的內(nèi)存,首地址為指向連續(xù)內(nèi)存塊,且是以3 為分界的塊首地址;
步驟3 初始化塊寫索引和塊讀索引值,初始化都為0,同時判斷當前指向的塊是否已
經(jīng)寫滿;
所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制中,幀數(shù)據(jù)寫入處理流程步驟為 步驟1 采集系統(tǒng)提供的空幀信息結構,并設置可用的輸出編碼幀緩沖,此緩沖由塊循環(huán)緩沖提供;
步驟2 確保塊緩沖為可用緩沖,產(chǎn)生一個系統(tǒng)有條件等待; 步驟3 :調(diào)用音頻或視頻編碼器,編碼器寫入視頻數(shù)據(jù);
步驟4:更新當前寫塊信息結構和調(diào)整當前寫塊信息索引,調(diào)整當前塊的寫偏移值,如果大于或等于塊總長度,則需要調(diào)整;如圖4所示,當當前塊已經(jīng)填滿或超出則進入下一塊,如進入的下一塊是擴展數(shù)據(jù)塊,則需要作數(shù)據(jù)折疊處理,此時系統(tǒng)處于有條件系統(tǒng)等待狀態(tài),即等待第0塊緩沖可以寫入,在系統(tǒng)滿足有條件系統(tǒng)等待時,把所有進入擴展塊的數(shù)據(jù)提取后全部拷貝到第0塊上,同時把寫索引移到第0塊上。步驟5 將編碼幀,提交到系統(tǒng)隊列,供網(wǎng)絡模塊或其他模塊做讀操作; 步驟6:編碼幀數(shù)據(jù)進入下一個過程完成;
所述的支持音視頻幀存儲的內(nèi)存緩沖管理機制中,塊數(shù)據(jù)寫盤處理流程為 步驟1 產(chǎn)生一個系統(tǒng)有條件等待,等待當前塊讀位置索引指向的塊緩沖已經(jīng)填滿 3 數(shù)據(jù);
步驟2 完成當前塊緩沖的寫入后,移動當前塊讀位置索引到下一塊或回到第一塊; 步驟3 標記此塊數(shù)據(jù)已經(jīng)寫入。
權利要求
1.一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,由N個普通數(shù)據(jù)塊和一個擴展數(shù)據(jù)塊組成,普通數(shù)據(jù)塊和擴展數(shù)據(jù)塊為連續(xù)內(nèi)存塊;音視頻幀存儲的內(nèi)存緩沖管理機制的數(shù)據(jù)幀處理流程為采集、編碼、存儲三個過程;所述的采集即采集輸出的是固定長度的音視頻數(shù)據(jù),所述的編碼即輸出可變長的壓縮音視頻數(shù)據(jù),所述的存儲即輸出32K塊數(shù)據(jù);音視頻幀存儲的內(nèi)存緩沖管理機制的存儲過程中數(shù)據(jù)處理流為塊循環(huán)緩沖初始化流程、幀數(shù)據(jù)寫入處理流程、塊數(shù)據(jù)寫盤處理流程。
2.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,幀數(shù)據(jù)寫入流程和快數(shù)據(jù)寫盤處理流程是并發(fā)執(zhí)行的。
3.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,如果視頻編碼分辨率為Dl清晰度,設定編碼幀最大數(shù)據(jù)長度不超過32K ;如果在其它分辨率下,根據(jù)實際編碼數(shù)據(jù)最大長度調(diào)整塊的大小,但數(shù)據(jù)幀的長度為32K的倍數(shù)。
4.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,所述的塊循環(huán)緩沖初始化流程步驟為步驟1 向數(shù)字硬盤錄像機音視頻錄像系統(tǒng)申請塊循環(huán)緩沖使用的連續(xù)內(nèi)存塊;步驟2 填寫塊信息數(shù)組,為每個塊填寫必要的信息和指定使用的內(nèi)存,首地址為指向連續(xù)內(nèi)存塊,且是以32K為分界的塊首地址;步驟3 初始化塊寫索引和塊讀索引值,初始化均為0,同時判斷當前指向的塊是否已經(jīng)寫滿。
5.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,所述的幀數(shù)據(jù)寫入處理流程步驟為步驟1 依據(jù)采集系統(tǒng)提供的空幀信息結構,設置可用的輸出編碼幀緩沖,所述的緩沖由塊循環(huán)緩沖提供;步驟2 確保塊緩沖為可用緩沖,產(chǎn)生一個系統(tǒng)有條件等待,即等待第0塊緩沖可以寫入;步驟3 :調(diào)用音頻或視頻編碼器,編碼器寫入視頻數(shù)據(jù);步驟4:更新當前寫塊信息結構和調(diào)整當前寫塊信息索引,調(diào)整當前塊的寫偏移值,如果大于或等于塊總長度,則需要調(diào)整;步驟5 將編碼幀,提交到系統(tǒng)隊列,供網(wǎng)絡模塊或其他模塊做讀操作;步驟6:編碼幀數(shù)據(jù)寫入過程完成,返回步驟1。
6.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,幀數(shù)據(jù)寫入處理流程步驟4中所述的具體調(diào)整方法如下當當前塊已經(jīng)填滿或超出則進入下一塊,如進入的下一塊是擴展數(shù)據(jù)塊,則需要作數(shù)據(jù)折疊處理,此時系統(tǒng)處于有條件系統(tǒng)等待狀態(tài),即等待第0塊緩沖可以寫入,在系統(tǒng)滿足有條件系統(tǒng)等待時,把所有進入擴展塊的幀數(shù)據(jù)全部拷貝到第0塊上,同時把寫索引移到第0塊上。
7.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,所述的塊數(shù)據(jù)寫盤處理流程為步驟1 產(chǎn)生一個系統(tǒng)有條件等待,等待當前塊讀位置索引指向的塊緩沖已經(jīng)寫滿 32K數(shù)據(jù);步驟2 完成當前塊緩沖的寫入后,移動當前塊讀位置索引到下一塊或回到步驟1 ;步驟3 標記此塊數(shù)據(jù)已經(jīng)寫入。
8.如權利要求1所述的一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,其特征在于,對于幀數(shù)據(jù)寫入處理流程和塊數(shù)據(jù)寫盤處理流程在多任務操作系統(tǒng)和單任務操作系統(tǒng)上均可實現(xiàn)。
全文摘要
本發(fā)明屬于音視頻采集、壓縮編碼和存儲領域,具體為一種支持音視頻幀存儲的內(nèi)存緩沖管理機制,它由N個普通數(shù)據(jù)塊和一個擴展數(shù)據(jù)塊組成,數(shù)據(jù)幀處理的流程為采集、編碼、存儲三個過程;所述的采集即采集輸出的是固定長度的音視頻數(shù)據(jù),所述的編碼即輸出可變長的壓縮音視頻數(shù)據(jù),所述的存儲即輸出32K塊數(shù)據(jù)。本發(fā)明的優(yōu)點在于編碼器輸出的壓縮數(shù)據(jù),在未確定長度前,直接寫入塊緩沖中;每幀音視頻幀數(shù)據(jù)完整連續(xù),并不因32K塊分割而出現(xiàn)碎片;降低系統(tǒng)對數(shù)據(jù)的拷貝次數(shù),提高系統(tǒng)的處理效率;反向過程則可用于從磁盤把塊媒體數(shù)據(jù)還原為音視頻幀數(shù)據(jù),也起到降低拷貝數(shù)據(jù)的作用。
文檔編號G06F12/08GK102243615SQ20111006710
公開日2011年11月16日 申請日期2011年3月21日 優(yōu)先權日2011年3月21日
發(fā)明者李澤文 申請人:廣東志成冠軍集團有限公司