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