專利名稱:用于視頻解碼的方法和設備的制作方法
背景技術:
1.發明領域本發明涉及視頻解碼領域,更具體地,本發明涉及用于解碼壓縮視頻的方法和設備。
2.相關技術描述視頻數據經常被壓縮以便減少所消耗的存儲空間量。一種用于視頻壓縮的標準是運動圖像專家組2(MPEG2)。壓縮標準通常采用公知的技術,例如基于空間變換的壓縮和基于時間運動估計的壓縮。因此,將壓縮數據轉換成未壓縮(解碼)數據的解碼過程包括變換解碼和運動補償重構。變換解碼包括可變長解碼、逆量化和反離散余弦變換(IDCT)。變換解碼過程通常產生命令、運動矢量數據和校正數據。此后,運動補償是通過對運動矢量數據和校正數據執行這些命令而被實施的,從而產生一個用于顯示的幀。
在一種解碼壓縮視頻的方法中,一個通用中央處理單元(CPU)執行變換解碼和運動補償。但是,CPU的性能可能不足以執行變換解碼和運動補償而在沒有停頓的情況下重放該視頻。特別地,一個通用CPU上運動補償的性能受到存儲器子系統的限制,并且不會隨該通用CPU的性能提高而升高。
當執行一個MPEG2數據幀的解碼時,從一個存儲介質(例如一個數字視頻磁盤DVD)復制該壓縮視頻的幀到系統存儲器以便由該CPU處理。帶有720個圖像單元(像素)×480像素分辨率和16比特精度的一幀校正數據包含大約15兆字節(MB)的數據。由于典型的等級1(L1)高速緩沖存儲器的大小是大約16千字節(K)且典型的等級2(L2)高速緩沖存儲器的大小是大約512K,所以既不能在L1也不能在L2高速緩沖存儲器中存儲校正數據的整個幀。用于變換解碼的高速緩存命中率可以低至20%。這樣,在變換解碼過程訪問的很多數據是從較慢的系統存儲器去取回而不是到較快的高速緩沖存儲器。低的高速緩存命中率降低了重放性能。
通常,在一幀校正數據的變換解碼后,圖形軟件在發出給圖形控制器的命令以實施運動補償之前會將該校正數據復制到本地的圖形存儲器中。這個將校正數據復制到本地圖形存儲器的過程導致會降低重放性能的總線周期。
所需要的是一種方法和設備,它可以更高效地使用系統資源去提供更好的壓縮視頻的重放性能。
發明概要一種用于解碼壓縮視頻的方法和設備,該壓縮視頻的解碼包括以下步驟解碼第一幀的第一部分以產生一個第一數據;生成一個第一信號;響應第一信號而使用第一數據實施運動補償;生成一個第二信號;響應第二信號而解碼第一幀的第二部分以產生一個第二數據;生成一個第三信號;以及響應該第三信號而使用第二數據實施運動補償。
附圖簡述
圖1說明一個用于完成該壓縮視頻解碼的計算機系統的實施例。
圖2說明一個用于完成一種壓縮視頻解碼的方法的實施例。
詳述一種更有效地實施視頻解碼和運動補償以重放例如壓縮視頻的方法和設備。在一個實施例中,本發明用于分別地解碼幀發明的各部分。
一個計算機系統100包括一個具有級別1(Ll)的高速緩沖存儲器160的中央處理器(CPU)115。級別2(L2)高速緩沖存儲器168被耦合到該CPU115。該CPU115通過一個橋120被耦合到一個本地總線171,一個先進的圖形端口(AGP)視頻總線172,和一個外圍部件接口(PCI)總線173。一個系統存儲器105被耦合到該本地總線171。一個顯示設備130和一個本地圖形存儲器通過一個圖形控制器125被耦合到該AGP視頻總線172。一個數字視頻盤(DVD)驅動器140被耦合以接收存儲在一個數字視頻盤(DVD)156上的壓縮視頻數據。一個輸入/輸出(I/O)設備150被耦合到該PCI總線173以接收來自機器可讀媒體155的程序和信息。在一個可選實施例中,壓縮視頻可以是從耦合到該I/O設備150的機器可讀媒體155取回的。
在一個實施例中該機器可讀媒體155是一個諸如軟盤,硬盤,或者盒式磁帶的磁媒體。在另一個實施例中,該I/O設備150以及該機器可讀媒體155是一個網絡,例如一個局域網(LAN)。在又一個實施例中,該機器可讀媒體155是一個其中嵌入信號的電磁載波,而該I/O設備155是一個能夠從該電磁載波中提取信號的設備。對本領域的技術人員而言將顯而易見,該機器可讀媒體155可以是能夠攜帶可由該I/O設備150讀取的信息的任何媒體。在一個實施例中,該機器可讀媒體155存儲用于執行本發明方法的軟件。做為替換,該機器可讀媒體155存儲該壓縮視頻145。
在一個實施例中,一個臨時緩沖器161包含一個相對少量的數據,在對一個相對大的壓縮視頻塊進行解壓縮時該數據會被經常地訪問。例如,該臨時緩沖器可以包含一個用于變換該壓縮視頻塊的變換系數表。
該L1高速緩沖存儲器160存放該臨時緩沖器161,它包括校正數據162、一個IDCT系數表163、一個霍夫曼碼本164、以及一個逆量化表165。在一個實施例中,該校正數據162包括僅一個宏塊。在另一個實施例中,該校正數據162包括幾個宏塊。
在一個實施例中,為各個解碼步驟選擇的宏塊數目被這樣選擇,使該臨時緩沖器161可以將其整體存儲到該Ll高速緩沖存儲器160中。通過使用一個將其整體填入該L1高速緩沖存儲器160中的臨時緩沖器161,該解碼軟件可以用一個較好的高速緩存命中率來解碼該選擇的宏塊。當達到一個較好的高速緩存命中率時解碼性能通常會得到改善。
在一個實施例中,不將該全部的臨時緩沖器161貯存到該L1高速緩沖存儲器160中。例如,可以將該臨時緩沖器161的一部分貯存到該L1高速緩沖存儲器160中,而將該臨時緩沖器161的另一部分貯存到該L2高速緩沖存儲器168中。在又一個實施例中,可以將該臨時緩沖器161的一部分貯存到該系統存儲器105中。該解碼操作的性能通常是下列兩者的函數該臨時緩沖器161中有多少是裝在該L1高速緩沖存儲器中的以及是否曾有任何其他總線周期將該臨時緩沖器161的多個部分從該L1高速緩沖存儲器160中排擠出。
包括在該臨時緩沖器161內的數據不局限于用于一特定壓縮/解壓縮技術的數據。而且,這些壓縮/解壓縮標準可以使用不同的數值方法,比如小波變換。在一個實施例中,該臨時緩沖器161包括一個小波變換系數表用于小波變換。可以使用其他的變換技術與數據。在一個實施例中,該系統存儲器105包括一AGP孔徑110。橋120包括一個圖形地址重映射表(GART)175,專門為該圖形控制器125與該中央處理機115用來接入該AGP孔徑110。該CPU115使用該寫組合(WC)緩沖器170在AGP孔徑110中將該變換解碼操作的輸出存入一個命令緩沖器111中,該輸出包括運動矢量112、校正數據113、以及宏塊信息114。在一個實施例中,該宏塊信息114包括離散余弦變換(DCT)類型、宏塊類型、運動預測類型、以及編碼塊圖案。其他的信息可以被包括在該宏塊信息內。由于該CPU115發出的輸出操作是不經高速緩存而是利用該WC緩沖器170的,所以該L2高速緩沖存儲器168的內容不被這些輸出操作干擾。該AGP孔徑可以包括其他的命令緩沖器,例如命令緩沖器116。
該解碼器軟件或者該圖形軟件將Ll高速緩沖存儲器161中的校正數據162的一部分復制給命令緩沖器111中的校正數據113。該校正數據162相應于壓縮視頻數據的宏塊。在一個實施例中,該校正數據162整體地貯存到該Ll高速緩沖存儲器160中。因而,當軟件執行該校正數據113的數據復制時,對校正數據162的訪問會導致高速緩存命中。這樣,本發明避免了從L2高速緩沖存儲器168或者系統存儲器105中校正數據162的冗余檢索。做為替換,因為該校正數據162的一部分不在該L1高速緩沖存儲器160中,對一些校正數據162的訪問可能導致高速緩存未中。
圖2說明一個本發明方法的實施例。該方法參考圖1的計算機系統100來描述。CPU115執行該解碼器軟件和該圖形軟件而該圖形控制器130通過直接存儲器存取(DMA)執行該命令緩沖器111中的命令。可以使用其他的設備來執行本發明的方法。
在步驟200中,該解碼器軟件檢索該壓縮視頻數據145。在一個實施例中,該解碼器軟件通過DVD驅動器140從DVD156中檢索該壓縮視頻數據145,并且將該壓縮視頻145存儲在系統存儲器105中。
在步驟205中,該解碼器軟件選擇該壓縮視頻145的一個幀。通常,如同按照在該壓縮視頻數據中指定的幀次序對該壓縮視頻145解碼一樣,每個幀被順序地選擇。可以使用其他的方法選擇一個幀。
在步驟207中,該圖形軟件從該AGP孔徑110的多個命令緩沖器中選擇其中一個命令緩沖器。在一個實施例中,該圖形控制器125執行來自一個緩沖器的指令而該解碼器軟件裝滿另一個命令緩沖器。在一個實施例中該圖形軟件在決定選擇哪個緩沖器時考慮各個緩沖器的不同特征,例如緩沖區大小,對本領域的技術人員而言將顯而易見的是,可以使用各種緩沖器配置,而且可以使用各種選擇準則來選擇該命令緩沖器。
在步驟210中,解碼器軟件選擇該壓縮視頻145的一幀的一個宏塊。每個宏塊包括該幀中8個圖像元素(像素)乘8個像素區域的6個塊。6個塊中4個是亮度(Y)塊,6個塊中2個是色度(U和V)塊。每一個像素的顯示特征用8位精度定義。在一個實施例中,該宏塊通過對該壓縮視頻數據145使用保存在該臨時緩沖器161中的霍夫曼碼本進行可變長度解碼而被識別。
在一個實施例中,如同宏塊從該壓縮視頻數據145解碼一樣,該宏塊被順序地選擇。做為替換,可以按照MPEG2標準跳過一些宏塊,使得后來的宏塊被選取。對應于被跳過宏塊的校正數據不從該臨時緩沖器161復制到該命令緩沖器111中。對被跳過宏塊的補償可以用具有可變宏塊像素寬度的單一命令來執行。可以使用其他的方法來選擇供處理的特定宏塊。
在一個實施例中,可以跳過任何有零值的塊。與那些宏塊有聯系的命令包括標識6個塊中哪個塊被跳過的編碼塊圖案信息。這樣,有零值的塊不從該臨時緩沖器161復制到該命令緩沖器111。處理跳過塊和跳過宏塊的能力使得該命令緩沖器中的大部分都可用并且避免與從該臨時緩沖器161將該跳過的數據復制到該命令緩沖器111相關聯的總線周期。
做為替換,一個幀內宏塊的特征可以按照不同的標準選取。例如,塊數目,每個塊的像素寬度和高度,以及像素元素的尺寸可以不同于在這里描述的。
在步驟215中,該解碼器軟件使用該逆量化表165以及該可變長度解碼的輸出來執行逆量化。在步驟220中,該解碼器軟件使用該IDCT系數表163和該逆量化的輸出來執行一個IDCT以產生該校正數據162。在一個實施例中,該校正數據162,該IDCT系數表163,該霍夫曼碼本164,和該逆量化表165包含于一個臨時緩沖器161中。在步驟210,215和220中要被解碼的宏塊數目要這樣選取,以使該臨時緩沖器161能被裝入該Ll高速緩沖存儲器160中。
在其他實施例中可以使用其他的解碼方法來解碼該幀的宏塊。例如,可以在該解碼處理期間執行小波變換。另外,可以使用像素的其他的安排來定義每個宏塊。可以使用其他尺寸的數據單元來定義每一個像素。而且,可以在步驟210,215和220中解碼該幀的兩個或更多宏塊。
在步驟225中,該圖形軟件通過經該WC緩沖器170向該AGP孔徑110發出寫組合、非可高速緩存的總線周期來生成包括宏塊信息,運動矢量和相應于該解碼過程輸出的校正數據的命令。因為該圖形軟件發出非可高速緩存的總線周期,所以該Ll高速緩沖存儲器160和該L2高速緩沖存儲器168的內容不受干擾。因為該圖形軟件發出寫組合的總線周期,所以到相同高速緩沖存儲器線的寫入在被發出到該本地總線171之前就被組合到該WC緩沖器170中,從而達到對本地總線170的更有效的利用。這些命令被寫入該命令緩沖器111中。該運動矢量被寫入該運動矢量112中,而該校正數據162被寫入該校正數據113中。
在一個實施例中,各命令是由解碼器軟件生成的,該軟件通過使用獨立于具體硬件而實現的標準應用程序接口(API)來調用圖形軟件中的各種功能。該解碼器軟件使用該API作為到該圖形軟件的標準接口來訪問那些存在于硬件特定的AGP存儲器中的命令緩沖器。這樣,可以用來自不同圖形控制器硬件廠商的計算機系統來使用單一的具體解碼器軟件。在一個實施例中該圖形軟件是一個硬件特定的設備驅動程序。通常,該硬件制造商或者該操作系統廠商提供硬件特定的設備驅動程序。
該API被定義以提供宏塊級別上該解碼器軟件和該圖形軟件之間的接口。在該解碼器軟件和該圖形軟件之間共享一個公共的宏塊數據結構。做為替換,該解碼器軟件可以直接地訪問該硬件特定的AGP存儲器。這個替換方案可以用于例如當該解碼器軟件被開發用于特定的圖形控制器硬件時的情況。
在步驟230中,如果該幀完成,則圖形軟件從該解碼器軟件接收信息。如果該解碼器軟件通知該圖形軟件該幀完成,則該圖形軟件向圖形控制器125發出一個特定命令以執行步驟250。如果該幀完成,該解碼器軟件有來自該解碼器軟件的信息,則圖形控制器執行步驟235。
該圖形軟件也通過圖形控制器檢查該命令緩沖器的執行的完成。在一個實施例中,該圖形軟件向解碼器軟件提供狀態信息,例如該壓縮幀有多少已經由該圖形軟件處理。例如,該圖形軟件可以提供已處理的宏塊數目、已解碼幀的百分比、或者該圖形軟件進展的其它的指示符。
在一個實施例中,該圖形控制器125發出一硬件中斷信號,它啟動圖形軟件對該命令緩沖器執行的檢查。在另一個實施例中,該圖形控制器125通過DMA將狀態信息寫入到系統存儲器105中的一個單元中,以及圖形軟件按解碼器軟件的要求讀取這個狀態信息。在又一個實施例中,圖形控制器125更新一個狀態寄存器以便該圖形軟件按照解碼器軟件的要求去讀取。
在步驟235中,該圖形軟件確定命令緩沖器111是否為滿。如果該命令緩沖器111是滿的,則圖形軟件發出一特定的命令到該圖形控制器125以執行步驟250。如果該命令緩沖器111不滿,則該圖形控制器執行步驟235。
在步驟250中,該圖形軟件向圖形控制器125發出一個命令以通過執行來自命令緩沖器111的命令和使用DMA獲取該運動矢量以及校正數據來實施運動補償。運動補償的輸出被寫入本地圖形存儲器135中。當該圖形軟件完成這個步驟時,控制被傳遞給該解碼器軟件以執行步驟280。
在步驟260中該圖形軟件向該圖形控制器125發出一個命令以通過執行來自命令緩沖器111的AGP命令和使用直接存儲器存取(DMA)獲取運動矢量及校正數據來實施運動補償。運動補償的輸出被寫入本地圖形存儲器135中。接下來,該圖形軟件執行步驟207以選取一個新的緩沖器。
在步驟280中,該解碼器軟件確定該壓縮視頻是否被解碼。如果該壓縮視頻沒有完成,則執行步驟205以選取另一個幀。
對本領域的技術人員而言將顯而易見,本發明可以應用于按照許多壓縮標準壓縮的壓縮視頻。而且,本發明可以應用于其他的壓縮數據標準。本發明可以應用于其他的類型的壓縮數據,例如音頻數據。
權利要求
1.一種方法包括以下步驟解碼第一幀的第一部分以產生一個第一數據;生成一個第一信號;響應第一信號而使用第一數據實施運動補償;生成一個第二信號;響應第二信號而解碼第一幀的第二部分以產生一個第二數據;生成一個第三信號;響應該第三信號而使用第二數據實施運動補償。
2.如權利要求1的方法還包括將該第一數據的一部分存儲到一個命令緩沖器的步驟,該第一信號是響應該命令緩沖器被裝滿而生成的。
3.如權利要求1的方法還包括將該第一數據的一部分存儲到一個命令緩沖器的步驟,該第一信號是響應第一數據被存儲到該命令緩沖器而生成的。
4.如權利要求1的方法,其中第二信號是響應使用第一數據實施運動補償的步驟的完成而生成的。
5.如權利要求1的方法,其中解碼第一幀的第一部分的步驟包括以下步驟對第一幀的第一部分執行可變長度解碼以產生第一中間數據;對第一中間數據執行逆量化以產生第二中間數據;以及對第二中間數據執行反離散余弦變換IDCT以產生第一數據。
6.如權利要求1的方法,其中第一幀的第一部分是一個宏塊。
7.如權利要求1的方法,其中第一幀的第一部分包括多個宏塊。
8.如權利要求1的方法,還包括通過一個設備驅動程序接口將第一數據存儲在一個圖形孔徑中的步驟。
9.如權利要求8的方法,其中將第一數據存儲在該圖形孔徑中的步驟包括將第一數據的一部分識別為寫組合、非可高速緩存的數據類型的步驟。
10.如權利要求9的方法,其中第一數據包括一個第一校正數據。
11.如權利要求10的方法,其中第一數據包括一個第一運動矢量。
12.如權利要求11的方法,其中使用單一數據流存儲第一校正數據以及第一運動矢量。
13.如權利要求11的方法,其中使用第一數據流存儲第一校正數據以及使用第二數據流存儲第一運動矢量。
14.一種機器可讀媒體,其上已經存儲有一組指令,所述指令組當由機器執行時完成以下步驟解碼第一幀的第一部分以產生一個第一數據;生成一個第一信號;響應第一信號而使用第一數據實施運動補償;生成一個第二信號;響應第二信號而解碼第一幀的第二部分以產生一個第二數據;生成一個第三信號;響應該第三信號而使用第二數據實施運動補償。
全文摘要
用于解碼壓縮視頻的方法和設備,壓縮視頻的解碼包括以下步驟:解碼第一幀的第一部分以產生第一數據;生成第一信號;響應第一信號而使用該第一數據去實施運動補償;生成第二信號;響應該第二信號而解碼該第一幀的第二部分以產生第二數據;生成第三信號;以及響應該第三信號而使用該第二數據去實施運動補償。
文檔編號H04N7/50GK1385035SQ00809873
公開日2002年12月11日 申請日期2000年5月1日 優先權日1999年5月7日
發明者H·蔣 申請人:英特爾公司