一種高效的視頻解碼參考幀取數(shù)方法及設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻解碼領(lǐng)域,特別涉及一種高效的視頻解碼參考幀取數(shù)方法及設(shè)備。
【背景技術(shù)】
[0002]隨著新一代視頻解碼標(biāo)準(zhǔn)的發(fā)展,例如HEVC,VP9 (其中,HEVC的英文全稱(chēng)為HighEfficiency Video Coding,它是一種新的視頻壓縮標(biāo)準(zhǔn);VP9是一個(gè)由Google開(kāi)發(fā)的開(kāi)放式,無(wú)使用授權(quán)費(fèi)的視頻壓縮標(biāo)準(zhǔn)),高清及超高清的視頻流得到了越來(lái)越多的普及,而參考幀的讀取也逐漸成為了視頻解碼的瓶頸和關(guān)鍵問(wèn)題。由于參考幀具有重復(fù)讀取的特性,現(xiàn)有的解碼器通常都會(huì)引入cache (高速緩沖存儲(chǔ)器)機(jī)制,該cache中存儲(chǔ)有大量需要頻繁使用的數(shù)據(jù),用于減少參考幀讀取的總帶寬。但現(xiàn)有的解碼器在引入cache機(jī)制的同時(shí),通常都采用先入先出的原理,即地址命令順序進(jìn)入,數(shù)據(jù)順序取出,沒(méi)有將cache的機(jī)制很好地發(fā)揮出來(lái),增大了視頻解碼讀取參考幀的時(shí)間,進(jìn)而又影響到了整個(gè)解碼器的性能。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問(wèn)題之一,在于提供一種高效的視頻解碼參考幀取數(shù)方法,該方法利用AXI總線的多ID特性,實(shí)現(xiàn)順序地址入cache,亂序數(shù)據(jù)出cache,減少了參考幀的取數(shù)時(shí)間,提高了視頻流的解碼效率。
[0004]本發(fā)明是這樣實(shí)現(xiàn)技術(shù)問(wèn)題之一的:一種高效的視頻解碼參考幀取數(shù)方法,該方法需要提供控制器、存儲(chǔ)器、cache以及外部存儲(chǔ)器DDR;所述控制器與所述存儲(chǔ)器連接形成一 slot管理模塊,所述cache與所述控制器連接,所述外部存儲(chǔ)器DDR與所述cache連接,所述方法包括如下步驟:
[0005]步驟10、控制器利用AXI總線向cache順序發(fā)送視頻流的各參考?jí)K的地址命令;
[0006]步驟20、cache順序接收各參考?jí)K的地址命令,并順序查找每一地址命令所對(duì)應(yīng)的地址,且若當(dāng)前查找的地址命令命中,則將該地址所對(duì)應(yīng)的數(shù)據(jù)返回給控制器,同時(shí)cache繼續(xù)查找下一個(gè)地址命令的地址;否則若當(dāng)前查找的地址命令未命中,則將未命中的地址命令轉(zhuǎn)發(fā)給外部存儲(chǔ)器DDR,同時(shí)cache繼續(xù)查找下一個(gè)地址命令的地址;
[0007]步驟30、外部存儲(chǔ)器DDR根據(jù)轉(zhuǎn)發(fā)的地址命令查找地址獲取數(shù)據(jù),并將獲取的數(shù)據(jù)通過(guò)cache返回給控制器;該步驟僅在地址命令未命中時(shí)執(zhí)行;
[0008]步驟40、控制器將接收的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器中,并控制存儲(chǔ)器對(duì)數(shù)據(jù)進(jìn)行拼接,且每拼接好一個(gè)完整的參考?jí)K,控制器就控制存儲(chǔ)器將該完整的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用。
[0009]進(jìn)一步地,所述步驟40具體為:
[0010]控制器將接收的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器中,并控制存儲(chǔ)器以參考?jí)K為單位對(duì)數(shù)據(jù)進(jìn)行拼接,且不同參考?jí)K之間的數(shù)據(jù)互不影響,在拼接時(shí),每拼接成一個(gè)完整的參考?jí)K,控制器就控制存儲(chǔ)器將該完整的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用;對(duì)于未拼接完整的參考?jí)K,則需要在存儲(chǔ)器內(nèi)繼續(xù)等待數(shù)據(jù),直到拼接成完整的參考?jí)K后,控制器再控制存儲(chǔ)器將參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用。
[0011]本發(fā)明要解決的技術(shù)問(wèn)題之二,在于提供一種高效的視頻解碼參考幀取數(shù)設(shè)備,該設(shè)備利用AXI總線的多ID特性,實(shí)現(xiàn)順序地址入cache,亂序數(shù)據(jù)出cache,減少了參考幀的取數(shù)時(shí)間,提高了視頻流的解碼效率。
[0012]本發(fā)明是這樣實(shí)現(xiàn)技術(shù)問(wèn)題之二的:一種高效的視頻解碼參考幀取數(shù)設(shè)備,該設(shè)備包括控制器、存儲(chǔ)器、cache以及外部存儲(chǔ)器DDR;所述控制器與所述存儲(chǔ)器連接形成一slot管理模塊,所述cache與所述控制器連接,所述外部存儲(chǔ)器DDR與所述cache連接;
[0013]所述控制器利用AXI總線向所述cache順序發(fā)送視頻流的各參考?jí)K的地址命令;
[0014]所述cache順序接收各參考?jí)K的地址命令,并順序查找每一地址命令所對(duì)應(yīng)的地址,且若當(dāng)前查找的地址命令命中,則將該地址所對(duì)應(yīng)的數(shù)據(jù)返回給所述控制器,同時(shí)所述cache繼續(xù)查找下一個(gè)地址命令的地址;否則若當(dāng)前查找的地址命令未命中,則將未命中的地址命令轉(zhuǎn)發(fā)給所述外部存儲(chǔ)器DDR,同時(shí)所述cache繼續(xù)查找下一個(gè)地址命令的地址;
[0015]所述外部存儲(chǔ)器DDR根據(jù)轉(zhuǎn)發(fā)的地址命令查找地址獲取數(shù)據(jù),并將獲取的數(shù)據(jù)通過(guò)所述cache返回給所述控制器;
[0016]所述控制器將加收的數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)器中,并控制所述存儲(chǔ)器對(duì)數(shù)據(jù)進(jìn)行拼接,且每拼接好一個(gè)完整的參考?jí)K,所述控制器就控制所述存儲(chǔ)器將該完整的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用。
[0017]進(jìn)一步地,所述控制器具體為:
[0018]所述控制器將接收的數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)器中,并控制所述存儲(chǔ)器以參考?jí)K為單位對(duì)數(shù)據(jù)進(jìn)行拼接,且不同參考?jí)K之間的數(shù)據(jù)互不影響,在拼接時(shí),每拼接成一個(gè)完整的參考?jí)K,所述控制器就控制所述存儲(chǔ)器將該完整的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用;對(duì)于未拼接完整的參考?jí)K,則需要在所述存儲(chǔ)器內(nèi)繼續(xù)等待數(shù)據(jù),直到拼接成完整的參考?jí)K后,所述控制器再控制所述存儲(chǔ)器將參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用。
[0019]本發(fā)明具有如下優(yōu)點(diǎn):利用AXI總線的多ID特性,實(shí)現(xiàn)了順序地址入cache,亂序數(shù)據(jù)出cache,還增加了 slot管理模塊對(duì)亂序數(shù)據(jù)進(jìn)行拼接,更充分地利用了 cache機(jī)制,減少了參考幀的取數(shù)時(shí)間,提高了視頻流的解碼效率。
【附圖說(shuō)明】
[0020]下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
[0021]圖1為本發(fā)明設(shè)備的結(jié)構(gòu)示意圖。
[0022]圖2為本發(fā)明的具體實(shí)施例的地址命令的示意圖。
[0023]圖3為本發(fā)明的具體實(shí)施例采用傳統(tǒng)取數(shù)的耗時(shí)示意圖。
[0024]圖4為本發(fā)明的具體實(shí)施例的取數(shù)耗時(shí)示意圖。
【具體實(shí)施方式】
[0025]請(qǐng)參照?qǐng)D1所示,一種高效的視頻解碼參考幀取數(shù)方法,該方法需要提供控制器、存儲(chǔ)器、cache(即高速緩沖存儲(chǔ)器,該存儲(chǔ)器內(nèi)存儲(chǔ)有大量需要頻繁使用的數(shù)據(jù))以及外部存儲(chǔ)器DDR (該外部存儲(chǔ)器用于存儲(chǔ)所有需要使用的數(shù)據(jù)),所述控制器與所述存儲(chǔ)器連接形成一 slot管理模塊,所述cache與所述控制器連接,所述外部存儲(chǔ)器DDR與所述cache連接,所述方法包括如下步驟:
[0026]步驟10、控制器利用AXI總線向cache順序發(fā)送視頻流的各參考?jí)K的地址命令;AXI總線是一種多通道傳輸總線,將地址、讀數(shù)據(jù)、寫(xiě)數(shù)據(jù)、握手信號(hào)在不同的通道中發(fā)送,不同的訪問(wèn)之間順序可以打亂;而主設(shè)備在沒(méi)有得到返回?cái)?shù)據(jù)的情況下可發(fā)出多個(gè)讀寫(xiě)操作,返回的數(shù)據(jù)順序可以被打亂。我們本申請(qǐng)主要就是利用AXI總線的多ID亂序傳輸原理,實(shí)現(xiàn)地址命令順序進(jìn)入cache,數(shù)據(jù)亂序出cache。
[0027]步驟20、cache順序接收各參考?jí)K的地址命令,并順序查找每一地址命令所對(duì)應(yīng)的地址,且若當(dāng)前查找的地址命令命中,則將該地址所對(duì)應(yīng)的數(shù)據(jù)返回給控制器,同時(shí)cache繼續(xù)查找下一個(gè)地址命令的地址;否則若當(dāng)前查找的地址命令未命中,則將未命中的地址命令轉(zhuǎn)發(fā)給外部存儲(chǔ)器DDR,同時(shí)cache繼續(xù)查找下一個(gè)地址命令的地址,以減少數(shù)據(jù)的等待時(shí)間;
[0028]請(qǐng)參照?qǐng)D2所示,例如,cache共接收了 4個(gè)地址命令,分別為Addr cmdOIDO (地址命令 O)、Addr cmdl IDl (地址命令 I)、Addr cmd2 ID2 (地址命令 2)、Addr cmd3 ID3 (地址命令 3),其中,Addr cmdO IDO 和 Addr cmdlIDl 組成一個(gè)參考?jí)K,Addr cmd2 ID2 和 Addrcmd3 ID3組成一個(gè)參考?jí)K;此時(shí)cache將先查找Addr cmdO IDO所對(duì)應(yīng)的地址ID0,假設(shè)Addr cmdO IDO命中,則將地址IDO所對(duì)應(yīng)的數(shù)據(jù)Dll返回控制器,同時(shí)cache繼續(xù)查找Addr cmdl IDl所對(duì)應(yīng)的地址IDl,假設(shè)Addr cmdl IDl未命中,則將Addr cmdl IDl轉(zhuǎn)發(fā)給外部存儲(chǔ)器DDR,同時(shí)cache繼續(xù)查找Addr cmd2 ID2所對(duì)應(yīng)的地址ID2,假設(shè)Addr cmd2ID2命中,則將地址ID2所對(duì)應(yīng)的數(shù)據(jù)D21返回給控制器,同時(shí)cache繼續(xù)查找Addr cmd3ID3所對(duì)應(yīng)的地址ID3,假設(shè)Addr cmd3 ID3命中,則將地址ID3所對(duì)應(yīng)的數(shù)據(jù)D22返回給控制器。
[0029]步驟30、外部存儲(chǔ)器DDR根據(jù)轉(zhuǎn)發(fā)的地址命令查找地址獲取數(shù)據(jù),并將獲取的數(shù)據(jù)通過(guò)cache返回給控制器;該步驟僅在地址命令未命中時(shí)執(zhí)行;例如,cache將Addr cmdlIDl轉(zhuǎn)發(fā)給了外部存儲(chǔ)器DDR,外部存儲(chǔ)器DDR就根據(jù)轉(zhuǎn)發(fā)的Addr cmdl IDl查找地址IDl獲取數(shù)據(jù)D12,并將獲取的數(shù)據(jù)D12通過(guò)cache返回給控制器。
[0030]步驟40、控制器將接收的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器中,并控制存儲(chǔ)器對(duì)數(shù)據(jù)進(jìn)行拼接,且每拼接好一個(gè)完整的參考?jí)K,控制器就控制存儲(chǔ)器將該完整的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用。該步驟具體為:
[0031]控制器將接收的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器中,并控制存儲(chǔ)器以參考?jí)K為單位對(duì)數(shù)據(jù)進(jìn)行拼接,且不同參考?jí)K之間的數(shù)據(jù)互不影響的,在拼接時(shí),每拼接成一個(gè)完整的參考?jí)K,控制器就控制存儲(chǔ)器將該完整的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用;對(duì)于未拼接完整的參考?jí)K,則需要在存儲(chǔ)器內(nèi)繼續(xù)等待數(shù)據(jù),直到拼接成完整的參考?jí)K后,控制器再控制存儲(chǔ)器將參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用。例如在本實(shí)施例中,數(shù)據(jù)Dll最先返回給控制器,之后是數(shù)據(jù)D21和數(shù)據(jù)D22,最后返回的是D12,此時(shí),控制器就控制存儲(chǔ)器將數(shù)據(jù)D21和數(shù)據(jù)D22組成的參考?jí)K發(fā)送給下級(jí)數(shù)據(jù)使用模塊使用;而數(shù)據(jù)Dll因?yàn)樾枰却龜?shù)據(jù)D12以組成參考?jí)K,所以數(shù)據(jù)Dll將留在存儲(chǔ)器內(nèi)繼續(xù)等待數(shù)據(jù)D12,直到數(shù)據(jù)D1