視頻譯碼中的最后有效變換系數在掃描次序中的位置的導出的制作方法
【專利摘要】一種視頻解碼器將基于塊的LSC指示符轉換成基于掃描的LSC指示符。所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標。所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。所述視頻解碼器可基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
【專利說明】視頻譯碼中的最后有效變換系數在掃描次序中的位置的導出
[0001]本申請案主張2011年6月28日申請的第61 / 502,269號美國臨時申請案、2011年6月30日申請的第61 / 503,529號美國臨時申請案、2011年10月24日申請的第61 /550,775號美國臨時申請案以及2011年10月24日申請的第61 / 550, 784號美國臨時申請案的權利,所述各臨時申請案的全部內容特此以引用的方式并入。
【技術領域】
[0002]本發明涉及用于對視頻數據進行編碼和解碼的技術。更具體地說,本發明涉及發信號通知表示視頻數據中的信息的有效變換系數的位置。
【背景技術】
[0003]數字視頻能力可并入到廣泛范圍的裝置中,包括數字電視、數字直播系統、無線廣播系統、個人數字助理(PDA)、膝上型或桌上型計算機、數碼相機、數字記錄裝置、數字媒體播放器、視頻游戲裝置、視頻游戲控制臺、蜂窩式或衛星無線電電話、視頻電話會議裝置及其類似者。數字視頻裝置實施視頻壓縮技術(例如,由MPEG-2、MPEG-4、ITU-T H.263或ITU-T H.264 / MPEG-4第10部分高級視頻譯碼(AVC)所定義的標準及這些標準的擴展中所描述的視頻壓縮技術),以較有效地發射及接收數字視頻信息。
[0004]視頻壓縮技術執行空間預測和/或時間預測,以減少或移除視頻序列中所固有的冗余。對于基于塊的視頻譯碼,一視頻幀或切片可以分割成多個塊。每一塊可被進一步分害I]。使用相對于相鄰塊的空間預測來對經幀內譯碼(I)幀或切片中的塊進行編碼。經幀間譯碼(P或B)幀或切片中的塊可以使用相對于相同幀或切片中的相鄰塊的空間預測或相對于其它參考幀的時間預測。
【發明內容】
[0005]本發明大體上涉及用于在視頻譯碼期間發信號通知最后有效系數(LSC)在變換系數塊中的位置的技術。舉例來說,所述技術提供視頻解碼器,其接收變換系數塊的LSC的基于塊的LSC指示符。在根據掃描次序掃描所述塊時,所述基于塊的LSC指示符指示所述LSC的坐標。所述視頻解碼器將所述基于塊的LSC指示符轉換成基于掃描的LSC指示符。所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。所述視頻解碼器可接著使用所述基于掃描的LSC指示符來對有效性映射進行解碼。
[0006]在一個實例中,本發明描述一種用于對視頻數據進行解碼的方法。所述方法包括將基于塊的LSC指示符轉換成基于掃描的LSC指示符。所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標。所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。所述方法還包括基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
[0007]在另一實例中,本發明描述一種視頻解碼裝置,其包括經配置以將基于塊的LSC指示符轉換成基于掃描的LSC指示符的一個或一個以上處理器。所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標。所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。所述一個或一個以上處理器還經配置以基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
[0008]在另一實例中,本發明描述一種視頻解碼裝置,其包括用于將基于塊的LSC指示符轉換成基于掃描的LSC指示符的裝置。所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標。所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。所述視頻解碼裝置還包括用于基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼的裝置。
[0009]在另一實例中,本發明描述包括上面存儲有指令的計算機可讀存儲媒體的計算機程序產品,所述指令配置一個或一個以上處理器以將基于塊的LSC指示符轉換成基于掃描的LSC指示符。所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標。所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。所述指令還配置所述一個或一個以上處理器以基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
[0010]在隨附圖式及以下描述中闡述本發明的一個或一個以上方面的細節。本發明中所描述的技術的其他特征、目標及優點將從描述及圖式且此權利要求書而顯而易見。
【專利附圖】
【附圖說明】
[0011]圖1是說明實例視頻譯碼系統的框圖。
[0012]圖2是說明實例變換系數塊的概念圖。
[0013]圖3是說明實例掃描次序的概念圖。
[0014]圖4是說明用于圖2的變換系數塊的實例有效性映射的二維表示的概念圖。
[0015]圖5是說明視頻編碼器的實例配置的框圖。
[0016]圖6是說明視頻解碼器的實例配置的框圖。
[0017]圖7是說明由視頻編碼器執行的實例操作的流程圖。
[0018]圖8是說明用以對變換系數塊進行解碼的實例操作的流程圖。
[0019]圖9是說明將基于塊的最后有效系數(LSC)指示符轉換成基于掃描的LSC指示符的實例非迭代操作的流程圖。
[0020]圖10是說明將基于塊的LSC指示符轉換成基于掃描的LSC指示符的另一實例非迭代操作的流程圖。
[0021]圖11是說明將基于塊的LSC指示符轉換成基于掃描的LSC指示符的實例操作的流程圖,其中存取映射數據結構。
[0022]圖12是說明將基于塊的LSC指示符轉換成基于掃描的LSC指示符的實例迭代操作的流程圖。
[0023]圖13是展示最后有效變換系數的變換系數塊的概念圖。
【具體實施方式】
[0024]【專利附圖】
【附圖說明】若干實例。由附圖中的參考數字指示的元件對應于在以下描述中由相同參考數字指示的元件。在本發明中,名稱以序數詞(例如,“第一”、“第二”、“第三”,等)開始的元件未必暗示所述元件具有特定次序。確切地說,此些序數詞僅用于指代相同或類似類型的不同元件。
[0025]如下文所描述,視頻編碼器可產生變換系數塊。所述變換系數塊中的每一者可為變換系數的二維陣列。在視頻編碼器產生變換系數塊之后,所述視頻編碼器可根據掃描次序識別變換系數塊的最后有效系數(LSC)。換句話說,當變換系數塊的變換系數是根據掃描次序而排序時,變換系數塊的LSC為最后非零變換系數。掃描次序可在變換系數塊的DC變換系數(即,左上變換系數)處開始。
[0026]視頻編碼器可輸出基于掃描的LSC指示符,其根據掃描次序指示LSC的序數位置。換句話說,視頻編碼器可基于掃描的LSC指示符,當變換系數是根據掃描次序而排序時,所述基于掃描的LSC指示符指示LSC為第η個變換系數。
[0027]在一些常規視頻編碼器中,視頻編碼器可對變換系數塊執行一系列譯碼遍次。在所述譯碼遍次中的每一者期間,視頻編碼器可根據掃描次序處理變換系數塊的變換系數。在所述譯碼遍次中的每一者期間,視頻編碼器對關于變換系數的信息進行編碼。
[0028]在譯碼遍次中的一者期間,視頻編碼器產生有效性映射。有效性映射包含一系列有效性旗標,其指示變換系數塊中的變換系數是否有效(即,非零)。為產生有效性映射,視頻編碼器可根據掃描次序處理變換系數中的每一者。當視頻編碼器處理變換系數時,視頻編碼器可確定變換系數的序數位置根據掃描次序是否出現于LSC的序數位置之前。如果如此,則視頻編碼器可產生用于所述變換系數的有效性旗標。如果變換系數的值為非零,則有效性旗標可具有為“I”的值。如果變換系數的值等于零,則有效性旗標可具有為“O”的值。然而,如果變換系數的序數位置根據掃描次序并不出現于LSC的序數位置之前,則視頻編碼器不產生用于所述變換系數的有效性旗標。
[0029]視頻解碼器可接收變換系數塊的基于掃描的LSC指示符和有效性映射。視頻解碼器可接著基于所述基于掃描的LSC指示符確定所述有效性映射是否包含用于變換系數塊的特定變換系數的有效性旗標。如果視頻編碼器并未產生用于變換系數的有效性旗標,則視頻解碼器可推斷所述變換系數無效。
[0030]在一些情況下,視頻編碼器可產生基于塊的LSC指示符,其指示LSC的變換系數塊內的坐標。視頻編碼器可接著對所述基于塊的LSC指示符進行CABAC編碼。因為X與y坐標之間的統計關系,使用基于塊的LSC指示符指示LSC的位置比依據LSC的序數位置來指示LSC的位置可能需要較少位。
[0031]此外,在一些情況下,視頻編碼器使用掃描次序的反轉來產生有效性映射時而非視頻編碼器使用掃描次序來產生有效性映射時可能需要較少位來表示有效性映射。然而,如果視頻編碼器產生基于塊的LSC指示符且如果視頻編碼器使用反轉掃描次序來產生有效性映射,則視頻解碼器可能不能夠基于所述基于塊的LSC指示符確定的序數位置是否出現于變換系數塊的LSC的序數位置之前。因此,視頻解碼器可能不能夠基于所述基于塊的LSC指示符確定有效性映射是否包含用于特定變換系數的有效性旗標。
[0032]為解決此問題,根據本發明的技術,視頻解碼器可執行將基于塊的LSC指示符轉換成基于掃描的LSC指示符的轉換操作。所述基于掃描的LSC指示符可根據掃描次序指示LSC的序數位置。視頻解碼器可接著基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
[0033]如本文所描述,視頻解碼器可以各種方式將基于塊的LSC指示符轉換成基于掃描的LSC指示符。舉例來說,視頻解碼器可執行非迭代算法以基于塊的LSC指示符導出基于掃描的LSC指示符。在另一實例中,視頻解碼器可至少部分地通過存取將基于塊的LSC指示符映射到基于掃描的LSC指示符的數據結構而將基于塊的LSC指示符轉換成基于掃描的LSC指示符。在又一實例中,視頻解碼器可執行根據掃描次序掃描經過變換系數塊中的位置的循環操作,直到達到具有基于塊的LSC指示符的坐標的位置為止。在此實例中,視頻解碼器可在變換系數塊的每一位置具有所述坐標之前遞增所述位置的基于掃描的LSC指示符。
[0034]圖1是說明可利用本發明中描述的技術的實例視頻譯碼系統10的框圖。在本發明中,術語“視頻譯碼”可指視頻編碼和視頻解碼。如圖1中所示,視頻譯碼系統10包含源裝置12和目的地裝置14。源裝置12產生經編碼的視頻數據。目的地裝置14可在稍后時間對所述經編碼的視頻數據進行解碼。源裝置12和目的地裝置14可包括廣泛范圍的裝置中的任一者,包含桌上型計算機、筆記本(即,膝上型)計算機、平板計算機、機頂盒、移動電話、電話手持機、“智能”板、電視、相機、顯示裝置、數字媒體播放器、視頻游戲控制臺、視頻串流裝置,或能夠對視頻數據進行編碼和解碼的多種類型的計算裝置。
[0035]目的地裝置14可經由信道16接收經編碼的視頻數據。信道16可包括能夠將經編碼的視頻數據從源裝置12移動到目的地裝置14的媒體或裝置。在一個實例中,信道16可包括使得源裝置12能夠實時將經編碼的視頻數據直接發射到目的地裝置14的通信媒體。源裝置12或另一裝置可根據通信標準(例如無線通信協議)調制經編碼的視頻數據。通信媒體可包括任何無線或有線通信媒體,例如射頻(RF)頻譜或一個或一個以上物理發射線路。信道16可形成分組網絡(例如局域網、廣域網或全球網絡,例如因特網)的部分。信道16可包含路由器、交換器、基站或可用于促進將經編碼的視頻數據從源裝置12傳達到目的地裝置14的任何其它設備。
[0036]在一些實例中,源裝置12和目的地裝置14可經裝備以用于無線通信。然而,本發明的技術不必限于無線應用或設定。確切地說,所述技術可應用于視頻譯碼中以支持多種多媒體應用中的任一者,例如空中協議電視廣播、有線電視發射、衛星電視發射、例如經由因特網的串流視頻發射、對數字視頻進行編碼以供存儲在數據存儲媒體上、對存儲在數據存儲媒體上的數字視頻的解碼,或其它應用。在一些實例中,源裝置12和目的地裝置14可經配置以支持單向或雙向視頻發射,以支持例如視頻串流、視頻回放、視頻廣播和/或視頻電話等應用。
[0037]此外,在一些實例中,源裝置12可將經編碼的視頻數據輸出到存儲系統34。類似地,目的地裝置14可存取存儲在存儲系統34上的經編碼的視頻數據。在各種實例中,存儲系統34可包含各種分布式或在本地存取的數據存儲媒體。數據存儲媒體的實例類型包含但不限于硬盤驅動器、藍光光盤、DVD、⑶-ROM、固態存儲器單元、易失性或非易失性存儲器,或適合于存儲經編碼的視頻數據的其它數字存儲媒體。
[0038]在一些實例中,存儲系統34可包括文件服務器或另一中間存儲裝置,其可保持源裝置12產生的經編碼視頻。目的地裝置14可經由串流或下載從存儲系統34存取經存儲的視頻數據。文件服務器可為能夠存儲經編碼的視頻數據且將經編碼的視頻數據發射到目的地裝置14的任何類型的服務器。實例文件服務器包含網絡服務器(例如,用于網站)、FTP服務器、網絡連接存儲(NAS)裝置或本地磁盤驅動器。目的地裝置14可以通過任何標準數據連接(包含因特網連接)來存取經編碼的視頻數據。此可包含適合于存取存儲于文件服務器上的經編碼的視頻數據的無線信道(例如,W1-Fi連接)、有線連接(例如,DSL、電纜調制解調器等)或兩者的組合。經編碼的視頻數據從存儲系統34的發射可為流式發射、下載發射或兩者的組合。
[0039]在圖1的實例中,源裝置12包含視頻源18、視頻編碼器20和輸出接口 22。在一些實例中,輸出接口 22還可包含調制器/解調器(調制解調器)和/或發射器。視頻源18將視頻數據提供到視頻編碼器20。在各種實例中,視頻源18可包括用于提供視頻數據的各種類型的裝置和/或系統。舉例來說,視頻源18可包括視頻俘獲裝置,例如攝像機。在另一實例中,視頻源18可包括含有先前俘獲的視頻的視頻存檔。在又一實例中,視頻源18可包括從視頻內容提供者接收視頻的視頻饋送接口。在又一實例中,視頻源18可包括用于產生計算機圖形數據的計算機圖形系統。
[0040]如下文所詳細描述,視頻編碼器20可對由視頻源18提供的視頻數據進行編碼。在一些實例中,源裝置12可經由輸出接口 22將經編碼的視頻數據直接發射到目的地裝置14。此外,在一些實例中,存儲系統34可存儲經編碼的視頻數據以供目的地裝置14或其它裝置稍后存取。
[0041]本發明可大體上參考視頻編碼器20向另一裝置(例如視頻解碼器30)“發信號通知”某些信息。然而,應理解,視頻編碼器20可通過使某些語法元素與視頻數據的各種經編碼部分相關聯來發信號通知信息。也就是說,視頻編碼器20可通過將某些語法元素存儲到視頻數據的各種經編碼部分的標頭來“發信號通知”數據。在一些情況下,此些語法元素可在被視頻解碼器30接收和解碼之前,先被編碼和存儲(例如,存儲到存儲系統34)。因此,術語“發信號通知”可大體是指對用以對經壓縮視頻數據進行解碼的語法或其它數據的傳達。此傳達可實時或接近實時地發生。或者,此通信可在一定時間跨度內發生,例如可能在將語法元素于編碼時存儲到媒體時發生,其接著可由解碼裝置在存儲到此媒體之后的任何時間加以檢索。
[0042]在圖1的實例中,目的地裝置14包含輸入接口 28、視頻解碼器30和顯示裝置32。在一些實例中,輸入接口 28可包含接收器和/或調制解調器。目的地裝置14的輸入接口28從信道16和/或存儲系統34接收經編碼的視頻數據。視頻解碼器30對通過輸入接口28所接收的經編碼的視頻數據進行解碼。目的地裝置14可再現經解碼的視頻數據以供顯示在顯示裝置32上。
[0043]顯示裝置32可與目的地裝置14集成或在目的地裝置14外部。在一些實例中,目的地裝置14可包含集成顯示裝置,且還經配置以與外部顯示裝置介接。在各種實例中,顯示裝置32可包括各種類型的顯示裝置。舉例來說,顯示裝置32可包括液晶顯示器(IXD)、等離子顯示器、有機發光二極管(OLED)顯示器,或另一類型的顯示裝置。
[0044]盡管圖1中未展示,但在一些方面中,視頻編碼器20和視頻解碼器30可各自與音頻編碼器和解碼器集成,且可包含適當多路復用器-多路分用器單元或其它硬件和軟件以處置對共同數據流或單獨數據流中的音頻和視頻兩者的編碼。在一些實例中,如果適用的話,多路復用器-多路分用器單元可符合ITU H.223多路復用器協議,或例如用戶數據報協議(UDP)等其它協議。[0045]視頻編碼器20和視頻解碼器30各自可實施為多種合適的編碼器電路中的任一者,例如一個或一個以上微處理器、數字信號處理器(DSP)、專用集成電路(ASIC)、現場可編程門陣列(FPGA)、離散邏輯、軟件、硬件、固件或其任何組合。當部分地用軟件實施所述技術時,裝置可將用于所述軟件的指令存儲于合適的非暫時性計算機可讀媒體中且使用一個或一個以上處理器用硬件執行所述指令以執行本發明的技術。視頻編碼器20和視頻解碼器30中的每一者可包含在一個或一個以上編碼器或解碼器中,所述編碼器或解碼器中的任一者可以集成為相應裝置中的組合編碼器/解碼器(編解碼器)的部分。
[0046]視頻編碼器20和視頻解碼器30可根據視頻譯碼標準(例如目前正在開發的高效率視頻譯碼(HEVC)標準)來操作,且可符合HEVC測試模型(HM)。或者,視頻編碼器20和視頻解碼器30可根據其它專屬或業界標準來操作,所述標準例如是ITU-T H.264標準,也被稱為MPEG-4第10部分高級視頻譯碼(AVC),或此類標準的擴展。對標準的實例擴展包含對H.264 / AVC標準的可縮放視頻譯碼(SVC)和多視圖視頻譯碼(MVC)擴展。本發明的技術不限于任何特定譯碼標準。視頻壓縮標準的其它實例包含MPEG-2和ITU-T H.263。
[0047]如上文簡要提及,視頻編碼器20對視頻數據進行編碼。所述視頻數據可包括一個或一個以上圖片序列。所述圖片中的每一者為靜態圖像。在一些情況下,圖片可被稱為“幀”。當視頻編碼器20對視頻數據進行編碼時,視頻編碼器20可產生位流。位流包含形成經譯碼圖片和相關聯數據的表示的位序列。經譯碼圖片為圖片的經譯碼表示。
[0048]為產生位流,視頻編碼器20可對視頻數據中的圖片序列執行編碼操作。當視頻編碼器20對圖片序列執行編碼操作時,視頻編碼器20可產生一系列經譯碼圖片和相關聯數據。此外,視頻編碼器20可產生含有適用于零或更多個圖片序列的參數的序列參數集。此夕卜,視頻編碼器20可產生含有適用于作為整體的零或更多個圖片的圖片參數集(PPS)。在一些實例中,視頻編碼器20可產生調適參數集(APS)。APS可存儲適用于零或更多個圖片的參數。
[0049]為產生經譯碼圖片,視頻編碼器20可將一圖片分割成一個或一個以上大小相等的視頻塊。視頻塊中的每一者可與樹塊相關聯。視頻塊可為視頻數據(例如,樣本)的二維(2D)塊。在一些情況下,樹塊還可稱為最大譯碼單元(LCU)。HEVC的樹塊可大致類似于例如H.264 / AVC等前述標準的宏塊。然而,樹塊不必限于特定大小,且可包含一個或一個以上譯碼單元(⑶)。
[0050]在一些實例中,視頻編碼器20可將一圖片分割成多個切片。所述切片中的每一者可包含整數數目個CU。在一些情況下,一片段包括整數數目個樹塊。在其它情況下,切片的邊界可在樹塊內。如果切片的邊界在樹塊內,則所述切片可被稱為細粒度切片。在一些實例中,視頻編碼器20可根據切片的大小(以字節計)或根據切片中的樹塊的數目來對切片進行編碼。
[0051]作為對圖片執行編碼操作的部分,視頻編碼器20可對圖片的每一切片執行編碼操作。對切片的編碼操作可產生與所述切片相關聯的經編碼數據。與切片相關聯的經編碼數據可被稱為“經譯碼切片”。經譯碼切片可包含切片標頭和切片數據。切片數據可包含呈譯碼次序的一系列連續譯碼單元。切片標頭可含有關于切片的第一或樹塊的數據元素。
[0052]為產生切片的經譯碼切片數據,視頻編碼器20可對切片中的每一樹塊執行編碼操作。當視頻編碼器20對樹塊執行編碼操作時,視頻編碼器20可產生經譯碼樹塊。經譯碼樹塊可包括表示樹塊的經編碼版本的數據。
[0053]為產生經譯碼樹塊,視頻編碼器20可對樹塊的視頻塊遞歸地執行四叉樹分割以將所述視頻塊劃分成逐漸變小的視頻塊。較小視頻塊中的每一者可與不同CU相關聯。舉例來說,視頻編碼器20可將樹塊的視頻塊分割成四個大小相等的子塊、將所述子塊中的一者或一者以上分割成四個大小相等的子子塊,以此類推。位流中的一個或一個以上語法元素可指示視頻編碼器20可分割樹塊的視頻塊的最大次數。語法元素還可指示最小譯碼單元(S⑶)。⑶的視頻塊在形狀上可為正方形。
[0054]視頻編碼器20可對樹塊中的每一未分割CU執行編碼操作。作為對未分割CU執行編碼操作的部分,視頻編碼器20可產生用于所述CU的一個或一個以上預測單元(PU)。CU的PU中的每一者可與CU的視頻塊內的不同視頻塊相關聯。視頻編碼器20可使用幀內預測或幀間預測來產生用于CU的PU的預測數據。當視頻編碼器20使用幀內預測來產生用于PU的預測數據時,視頻編碼器20從含有所述PU的圖片的經解碼樣本導出用于所述PU的預測數據。當視頻編碼器20使用幀間預測來產生用于的預測數據時,視頻編碼器20從不同于含有所述CU的圖片的參考圖片的經解碼值導出用于所述PU的預測數據。用于PU的預測數據可包含預測視頻塊和各種語法元素。
[0055]在視頻編碼器20產生用于⑶的預測數據之后,視頻編碼器20可產生⑶的殘余數據。CU的殘余數據可指示用于CU的PU的預測視頻塊中的樣本與CU的原始視頻塊中的樣本之間的差。
[0056]樹塊的每一未分割⑶可具有一個或一個以上變換單元(TU)。⑶的每一 TU可與所述CU的殘余數據的不同部分相關聯。視頻編碼器20可對CU的每一 TU執行變換操作。當視頻編碼器20對TU執行變換操作時,視頻編碼器20可至少部分地通過將變換應用到與所述TU相關聯的殘余數據而產生變換系數塊。變換系數塊可為變換系數的2D矩陣。圖2是說明實例變換系數塊的概念圖。
[0057]視頻編碼器20可量化變換系數塊中的變換系數。量化大體上是指對變換系數塊中的變換系數進行量化以可能地減少用以表示所述變換系數的數據量,從而提供進一步壓縮的過程。量化可減小與一些或所有變換系數相關聯的位深度。舉例來說,η位值可在量化期間被舍去到m位值,其中η大于m。
[0058]在量化變換系數塊之后,視頻編碼器20可產生與所述變換系數塊相關聯的一組語法元素。視頻編碼器20可接著對這些語法元素中的一些執行上下文自適應二進制算術譯碼(CABAC)操作。在其它實例中,視頻編碼器20可對語法元素執行其它熵譯碼操作。舉例來說,視頻編碼器20可對與變換系數塊相關聯的語法元素執行上下文自適應可變長度譯碼(CAVLC)操作、基于語法的上下文自適應二進制算術譯碼(SBAC)操作、概率區間分割熵(PIPE)譯碼操作,或另一類型的熵編碼操作。視頻編碼器20還可對與視頻數據相關聯的其它語法元素執行CABAC操作。
[0059]在視頻編碼器20產生與變換系數塊相關聯的語法元素且執行CABAC操作之后,視頻編碼器20將所得數據包含在用于視頻數據的位流中。位流可包含形成經譯碼圖片和相關聯數據的表示的位序列。
[0060]位流可包括一連串網絡抽象層(NAL)單元。所述NAL單元中的每一者可為含有NAL單元中的數據類型的指示和含有數據的字節的語法結構。舉例來說,NAL單元可含有表示PPS、APS、經譯碼切片、輔助增強信息、存取單元分隔符、填充符數據的數據,或另一類型的數據。NAL單元的數據可呈穿插有模仿防止位的原始字節序列有效負載(RBSP)的形式。RBSP可為含有囊封在NAL單元內的整數數目個字節的語法結構。
[0061]當視頻編碼器20對變換系數塊執行熵編碼操作時,視頻編碼器20可確定變換系數塊中是否存在至少一個有效(即,非零)變換系數。如果變換系數塊中存在至少一個有效變換系數,則視頻編碼器20可更新經譯碼塊旗標(CBF)以指示所述變換系數塊包含至少一個有效變換系數。如果變換系數塊中不存在有效變換系數,則視頻編碼器20可更新CBF以指示變換系數塊未包含任何有效變換系數。
[0062]如果變換系數塊中存在至少一個有效變換系數,則視頻編碼器20可根據掃描次序識別變換系數塊的最后有效系數(LSC)。當變換系數塊的變換系數是根據掃描次序而排序時,變換系數塊的LSC為最后出現的非零變換系數。掃描次序可為前向掃描次序。換句話說,掃描次序可在變換系數塊的DC變換系數處開始。DC變換系數出現在變換系數塊的左上角處。相比之下,反轉或反掃描次序在變換系數塊的右下變換系數處開始。
[0063]視頻編碼器20可根據各種掃描次序識別變換系數塊的LSC。舉例來說,視頻編碼器20可根據Z形掃描次序、水平掃描次序、垂直掃描次序、對角線掃描次序或子塊掃描次序來識別LSC。在一些實例中,如果變換系數塊與經幀內預測的CU相關聯,則視頻編碼器20可基于與所述CU相關聯的幀內預測模式選擇掃描次序。此外,在一些實例中,視頻編碼器20可自適應地在掃描次序之間切換以優化譯碼效率和/或主觀圖片質量。
[0064]圖3是說明實例掃描次序的概念圖。圖3的部分(a)展示實例Z形掃描次序。圖3的部分(b)展示實例水平掃描次序。圖3的部分(c)展示實例垂直掃描次序。圖3的部分(d)展示實例反轉對角線掃描次序。
[0065]圖3的部分(e)展示實例對角線子塊掃描次序。在子塊掃描次序中,視頻編碼器可將大變換系數塊分裂成子塊。在圖3的實例中,子塊展示為短劃線正方形。對于子塊中的每一者,視頻編碼器20可以特定次序處理所述子塊的變換系數。在圖3的實例中,視頻編碼器20以向上/向右對角線次序掃描左上子塊中的變換系數,接著以向上/向右對角線次序掃描左下子塊中的變換系數,接著以向上/向右對角線次序掃描右上子塊中的變換系數,且最終以向上/向右對角線次序掃描右下子塊中的變換系數。
[0066]在其它實例中,視頻編碼器20可將變換系數塊分割成4x4子塊(或其它子塊大小)。在此實例中,視頻編碼器20可接著根據掃描次序處理所述4x4變換系數塊中的每一者。
[0067]在識別出LSC之后,視頻編碼器20可產生基于塊的LSC指示符。所述基于塊的LSC指示符指定LSC的坐標。舉例來說,如果變換系數塊為8x8,掃描次序為水平掃描次序,且視頻編碼器20在變換系數塊的變換系數是根據掃描次序而排序時確定LSC出現在第10位置,則視頻編碼器20可產生指定坐標(1,1)的基于塊的LSC指示符。
[0068]視頻編碼器20可對所述基于塊的LSC指示符執行CABAC編碼操作。在一些情況下,對基于塊的LSC指示符執行CABAC編碼操作可比對對應基于掃描的LSC指示符執行CABAC編碼操作更有效,因為熵編碼操作可能夠采用基于塊的LSC指示符的X坐標與y坐標之間的統計關系。視頻編碼器20可將基于塊的LSC指示符的CABAC編碼版本添加到經編碼位流。[0069]在識別出LSC之后,視頻編碼器20可對變換系數塊執行一個或一個以上譯碼遍次以產生且編碼與所述變換系數塊相關聯的語法元素。與變換系數塊相關聯的語法元素包含用于變換系數塊的有效性映射以及用于變換系數的等級信息。
[0070]在所述譯碼遍次中的每一者中,視頻編碼器20可根據反轉掃描次序掃描經過變換系數塊的變換系數。反轉掃描次序可為用以識別LSC的掃描次序的反轉。舉例來說,如果視頻編碼器20根據前向對角線掃描次序識別LSC,則反轉掃描次序可為反轉對角線掃描次序。
[0071]對于在第一譯碼遍次期間的每一變換系數,視頻編碼器20可確定變換系數的序數位置是否出現于LSC的序數位置之前。如果變換系數的序數位置出現在LSC的序數位置之前,則視頻編碼器20可產生且CABAC編碼語法元素(即,有效性旗標),其指示變換系數是否有效。如果變換系數為非零,則所述變換系數可為“有效的”。如果變換系數不出現在LSC的序數位置之前,則視頻編碼器20不產生或CABAC編碼用于所述變換系數的有效性旗標。以此方式,視頻編碼器20可產生并CABAC編碼用于變換系數塊的有效性映射。在產生且CABAC編碼有效性映射之后,視頻編碼器20可將所述有效性映射的CABAC編碼版本包含在位流中。
[0072]在一些情況下,LSC的位置與有效性映射的內容之間可能存在統計關系。因此,視頻編碼器20可使用LSC的位置來選擇一個或一個以上上下文模型用于對有效性映射的有效性旗標進行CABAC編碼。
[0073]對于在第二譯碼遍次期間處理的每一變換系數,視頻編碼器20可確定變換系數是否有效。如果變換系數有效,則視頻編碼器20可產生且CABAC編碼語法元素(即,“等級大于I”旗標),其指示變換系數的絕對值是否大于I。如果變換系數無效,則視頻編碼器20不產生或CABAC編碼用于所述變換系數的“等級大于I”旗標。在產生且CABAC編碼“等級大于I”旗標之后,視頻編碼器20可將所述“等級大于I”旗標的CABAC編碼版本包含在位流中。
[0074]在第三譯碼遍次期間,視頻編碼器20可產生且CABAC編碼語法元素,所述語法元素指示變換系數的絕對值是否大于2 (即,“等級大于2”旗標)。在產生且CABAC編碼“等級大于2”旗標之后,視頻編碼器20可將所述“等級大于2”旗標的CABAC編碼版本包含在位流中。
[0075]對于在第四譯碼遍次期間處理的每一變換系數,視頻編碼器20可確定變換系數是否有效。如果所述變換系數有效,則視頻編碼器20可產生語法元素(即,正負號旗標),其指示變換系數為正還是為負。如果變換系數無效,則視頻編碼器20不產生用于變換系數的正負號旗標。在產生正負號旗標之后,視頻編碼器20可將所述正負號旗標包含在位流中。
[0076]對于在第五譯碼遍次期間處理的每一變換系數,視頻編碼器20可確定變換系數是否有效。如果所述變換系數有效,則視頻編碼器20可產生系數的余數值(即,等級余數元素)。視頻編碼器20可接著識別對應于所述余數值的Golomb-Rice碼。在識別出用于變換系數的Golomb-Rice碼之后,視頻編碼器20可將所述Golomb-Rice碼包含在位流中。如果變換系數無效,則視頻編碼器20不產生用于變換系數的等級余數元素。
[0077]通過第二、第三、第四和第五譯碼遍次產生的語法元素可構成變換系數塊的等級信息,因為可從這些語法元素導出變換系數的絕對值(即,等級)。
[0078]當視頻解碼器30接收到位流時,視頻解碼器30可執行與由視頻編碼器20執行的編碼操作大體上互逆的解碼操作。舉例來說,視頻解碼器30可對圖片的每一切片執行解碼操作。當視頻解碼器30的圖片的切片執行解碼操作時,視頻解碼器30可對切片中的樹塊執行解碼操作。當視頻解碼器30完成對樹塊的解碼操作時,視頻解碼器30已對與所述樹塊相關聯的視頻塊中的樣本進行了解碼。當視頻解碼器30已對用于切片的每一樹塊的樣本進行了解碼時,視頻解碼器30已重建用于所述切片的樣本。
[0079]當視頻解碼器30對樹塊執行解碼操作時,視頻解碼器30可對樹塊內的每一未分割CU執行解碼操作。如上文所論述,可將未分割CU分割成一個或一個以上TU。TU中的每一者與一個或一個以上變換系數塊相關聯。在本發明中,如果與TU相關聯的變換系數塊包含一個或一個以上有效變換系數,則所述TU為“有效TU”。
[0080]當視頻解碼器30對未分割CU執行解碼操作時,視頻解碼器30可接收用于與CU的有效TU相關聯的變換系數塊的經編碼等級信息、用于與CU的有效TU相關聯的變換系數塊的經編碼有效性映射,以及用于與CU的有效TU相關聯的變換系數塊的經編碼基于塊的LSC指示符。
[0081]因為視頻編碼器20不產生用于根據掃描次序出現在LSC的序數位置之后的變換系數的有效性旗標,因此視頻解碼器30可能不能夠確定哪些變換系數具有有效性旗標,直到視頻解碼器30能夠確定LSC的序數位置為止。此外,因為視頻編碼器20不產生用于無效系數的“等級大于I”旗標、“等級大于2”旗標、正負號旗標或等級余數元素,因此視頻解碼器可能不能夠確定哪些變換系數具有“等級大于I”旗標、“等級大于2”旗標、正負號旗標或等級余數元素,直到視頻解碼器30能夠確定有效性映射為止。
[0082]因此,視頻解碼器30可首先對基于塊的LSC指示符進行CABAC解碼。此外,視頻解碼器30可將所述基于塊的LSC指示符轉換成基于掃描的LSC指示符。在將基于塊的LSC指示符轉換成基于掃描的LSC指示符之后,視頻解碼器30可基于所述基于掃描的LSC指示符對用于變換系數塊的有效性映射進行解碼。視頻解碼器30可接著使用所述有效性映射來對變換系數塊的等級信息進行解碼。
[0083]所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置。LSC的序數位置可為LSC在通過根據掃描次序掃描變換系數塊而形成的變換系數序列中的相對位置。舉例來說,變換系數塊可為8個變換系數乘8個變換系數,且基于塊的LSC指示符可指定坐標(1,1)。在此實例中,當變換系數是根據水平掃描次序而排序時,坐標(1,1)處的變換系數可為第10個變換系數。因此,在此實例中,視頻解碼器30可產生指示第10位置的基于掃描的LSC指示符。
[0084]根據本發明的技術,視頻解碼器30可將基于塊的LSC指示符有效地轉換成基于掃描的LSC指示符。視頻解碼器30可執行各種操作以將基于塊的LSC指示符轉換成基于掃描的LSC指示符。舉例來說,視頻解碼器30可執行非迭代算法,其從由基于塊的LSC指示符指定的變換坐標導出基于掃描的LSC指示符。在另一實例中,視頻解碼器30可存儲數據結構,其將基于塊的LSC指示符的變換坐標映射到基于掃描的LSC指示符。在此實例中,視頻解碼器30可存取此數據結構以產生基于掃描的LSC指示符。
[0085]在視頻解碼器30可如何將基于塊的LSC指示符轉換成基于掃描的LSC指示符的又一實例中,視頻解碼器30可通過執行循環操作而產生基于掃描的LSC指示符。在此實例中,指示符可指示給定變換系數塊的當前變換系數。在循環操作的每一迭代期間,視頻解碼器30可確定當前變換系數是否具有由基于塊的LSC指示符指定的坐標。如果沒有,則視頻解碼器30可遞增基于掃描的LSC指示符,且更新所述指示符以指示根據掃描次序的下一變換系數。因此,在此實例中,視頻解碼器30可執行循環操作,其根據掃描次序掃描經過給定變換系數塊中的位置,直到達到具有所述坐標的位置為止,在給定變換系數塊的每一位置具有所述坐標之前遞增所述位置的基于掃描的LSC指示符。在此實例中,掃描次序可為子塊掃描次序,其中將給定變換系數劃分成子塊。視頻解碼器30可掃描經過子塊中的一者中的變換系數中的每一者,隨后掃描經過子塊中的下一者中的變換系數中的每一者。
[0086]在一些實例中,視頻解碼器30可基于不同掃描次序而使用不同轉換操作。換句話說,視頻解碼器30可基于掃描次序選擇轉換操作,且使用所述選定轉換操作來將基于塊的LSC指示符轉換為基于掃描的LSC指示符。舉例來說,視頻解碼器30可在掃描次序為反轉水平掃描次序時使用上文所提及的非迭代算法,且視頻解碼器30可在掃描次序為反轉對角線掃描次序時使用上文所提及的映射數據結構。
[0087]在另一實例中,視頻解碼器30可使用轉換操作的組合。在此實例中,視頻解碼器30可將變換系數塊劃分成子塊。視頻解碼器30可使用非迭代算法來識別子塊的坐標以及子塊內的基于塊的LSC指示符的坐標。視頻解碼器30可接著使用另一算法來確定子塊的掃描次序以及子塊內的最后有效變換系數的掃描次序。以此方式,視頻解碼器30可確定基于掃描的LSC指示符。
[0088]圖5是說明經配置以實施本發明的技術的視頻編碼器20的實例配置的框圖。圖5是出于解釋的目的而提供,且不應被視為將技術限制為本發明中所大致例示和描述者。出于解釋之目的,本發明描述HEVC譯碼的上下文中的視訊編碼器20。然而,本發明之技術可適用于其他譯碼標準或方法。
[0089]在圖5的實例中,視頻編碼器20包含多個功能組件。視頻編碼器20的功能組件包含模式選擇模塊40、運動估計模塊42、運動補償模塊44、幀內預測模塊46、殘余產生模塊50、變換模塊52、量化模塊54、CABAC模塊56、逆量化模塊58、逆變換模塊60、重建模塊62,和經解碼圖片緩沖器64。在其它實例中,視頻編碼器20可包含較多、較少或不同的功能組件。舉例來說,視頻編碼器20可包含解塊濾波器模塊以對重建模塊62的輸出進行濾波以從重建的視頻移除成塊效應假影。此外,運動估計模塊42與運動補償模塊44可高度集成,但出于解釋的目的而在圖5的實例中單獨地表示。
[0090]視頻編碼器20可接收視頻數據。在各種實例中,視頻編碼器20可從各種源接收視頻數據。舉例來說,視頻編碼器20可從視頻源18 (圖1)或另一源接收視頻數據。視頻數據可表示圖片序列。為對視頻數據進行編碼,視頻編碼器20可對每一圖片序列執行編碼操作。
[0091]作為對圖片序列執行編碼操作的部分,視頻編碼器20可對所述圖片序列內的每一圖片執行編碼操作。作為對圖片執行編碼操作的部分,視頻編碼器20可對圖片中的每一切片執行編碼操作。作為對切片執行編碼操作的部分,視頻編碼器20可對切片中的每一樹塊執行編碼操作。
[0092]作為對樹塊執行編碼操作的部分,視頻編碼器20可將所述樹塊的視頻塊分割成一個或一個以上視頻塊。所述視頻塊中的每一者可與不同⑶相關聯。在一些實例中,⑶的視頻塊的大小范圍可從8x8像素聞達最大64x64像素或較大的樹塊的視頻塊大小。在本發明中,“NxN”和“N乘N”可以互換使用來指代在垂直和水平尺寸方面的視頻塊的像素尺寸,例如,16x16像素或16乘16像素。一般來說,16x16塊在垂直方向上具有16個像素(y =16),且在水平方向上具有16個像素(X= 16)。同樣,NxN塊大體上在垂直方向上具有N個像素,且在水平方向上具有N個像素,其中N表示非負整數值。類似標號可用以指示變換系數塊的尺寸。
[0093]作為對樹塊執行編碼操作的部分,視頻編碼器20可產生用于所述樹塊的分級四叉樹數據結構。舉例來說,樹塊可對應于四叉樹數據結構的根節點。如果視頻編碼器20將樹塊的視頻塊分割成四個子塊,則所述根節點在所述四叉樹數據結構中具有四個子級節點。子級節點對應于與子塊相關聯的CU。如果視頻編碼器20將子塊中的一者分割成四個子子塊,則對應于與子塊相關聯的CU的節點可具有四個子級節點,其對應于與所述子子塊相關聯的CU。
[0094]四叉樹數據結構的每一節點可提供用于對應CU的語法數據。舉例來說,四叉樹中的節點可包含分裂旗標,其指示對應于所述節點的CU的視頻塊是否被分割(即,分裂)成四個子塊。可取決于所述CU的視頻塊是否分裂成子塊來遞歸地界定用于CU的語法元素。視頻塊未被分割的CU可對應于四叉樹數據結構中的葉節點。四叉樹數據結構中的葉節點可被稱為“譯碼節點”。表示樹塊的經編碼版本的數據可包含基于用于所述樹塊的四叉樹數據結構的數據。
[0095]視頻編碼器20可對樹塊的每一未分割CU執行編碼操作。當視頻編碼器20對未分割CU執行編碼操作時,視頻編碼器20產生表示未分割CU的經編碼版本的數據。
[0096]作為對⑶執行編碼操作的部分,運動估計模塊42和運動補償模塊模塊對⑶的每一 PU執行幀間預測。換句話說,運動估計模塊42和運動補償模塊44可基于不同于含有所述CU的圖片的參考圖片的經解碼樣本而產生用于所述CU的每一 PU的預測數據。幀間預測可提供時間壓縮。
[0097]視頻編碼器20和視頻解碼器30可支持各種I3U大小。假定特定⑶的大小為2Nx2N,則視頻編碼器20和視頻解碼器30可支持2Nx2N、NxN、2NxN或Nx2N的PU大小。視頻編碼器20和視頻解碼器30還可支持用于2NxnU、2NxnD、nLx2N和nRx2N的PU大小的不對稱分害I]。在一些實例中,視頻編碼器20可沿并不按直角與CU的視頻塊的側相交的邊界來在CU的PU之間分割CU的視頻塊。
[0098]運動估計模塊42可關于⑶的每一 PU執行運動估計操作。當運動估計模塊42關于PU執行運動估計操作時,運動估計模塊42產生用于所述的一個或一個以上運動向量。舉例來說,切片可為I切片、P切片,或B切片。運動估計模塊42和運動補償模塊44可取決于CU處于I切片、P切片還是B切片中而對CU的I3U執行不同操作。在I切片中,對所有⑶(且因此⑶的所有PU)進行幀內預測。因此,如果PU在I切片中,則運動估計模塊42和運動估計模塊44不對PU執行幀間預測。
[0099]如果PU在P切片中,則含有所述的圖片與稱為“列表O”的參考圖片列表相關聯。列表O中的參考圖片中的每一者含有可用于按解碼次序對后續圖片進行幀間預測的樣本。當運動估計模塊42關于P切片中的I3U執行運動估計操作時,運動估計模塊42搜索列表O中的參考圖片以找出用于ro的參考樣本。PU的參考樣本可為最接近對應于的像素值的一組像素值。運動估計模塊42可使用多種量度來確定參考圖片中的一組像素值對應于PU的像素值的接近程度。舉例來說,運動估計模塊42可通過絕對差總和(SAD)、平方差總和(SSD)或其它差異量度來確定參考圖片中的一組像素值對應于的像素值的接近程度。
[0100]在識別出P切片中的CU的PU的參考樣本之后,運動估計模塊42可產生指示列表O中的參考圖片含有參考樣本的參考索引和指不PU與參考樣本之間的空間位移的運動向量。在各種實例中,運動估計模塊42可以變化的精度產生運動向量。舉例來說,運動估計模塊42可以四分之一像素精度、八分之一像素精度或其它分數像素精度產生運動向量。運動估計模塊42可將參考索引和運動向量輸出到CABAC模塊56和運動補償模塊44。運動補償模塊44可使用CU的PU的參考索引和運動向量來識別及檢索I3U的參考樣本。運動補償模塊44可接著使用的參考樣本的像素值來產生用于CU的預測數據。
[0101]如果PU在B切片中,則含有所述的圖片可與稱為“列表O”和“列表I”的兩個參考圖片列表相關聯。列表O中的參考圖片中的每一者含有可用于按解碼次序對后續圖片進行幀間預測的樣本。列表I中的參考圖片可按解碼次序出現在所述圖片之前但按呈現次序在所述圖片之后。在一些實例中,含有B切片的圖片可與為列表O與列表I的組合的列表組合相關聯。
[0102]此外,如果⑶在B切片中,則運動估計模塊42可對⑶的PU執行單向預測或雙向預測。當運動估計模塊42對PU執行單向預測時,運動估計模塊42可搜索列表O或列表I中的參考圖片以找出用于所述PU的參考樣本。運動估計模塊42可接著產生指示列表O或列表I中的含有所述參考樣本的參考圖片的參考索引和指不PU與所述參考樣本之間的空間位移的運動向量。運動估計模塊42可將用于CU的PU的參考索引和運動向量輸出到CABAC模塊56和運動補償模塊44。運動補償模塊44可使用⑶的PU的參考索引和運動向量來識別及檢索PU的參考樣本。運動補償模塊44可接著使用的參考樣本的像素值來產生用于⑶的PU的預測視頻塊。
[0103]當運動估計模塊42對PU執行雙向預測時,運動估計模塊42可搜索列表O中的參考圖片以找出用于所述PU的參考樣本,且還可搜索列表I中的參考圖片以找出用于所述PU的另一參考樣本。運動估計模塊42可接著產生指示所述參考樣本的參考索引和指示參考樣本與之間的空間位移的運動向量。運動估計模塊42可將參考索引和運動向量輸出到CABAC模塊56和運動補償模塊44。運動補償模塊44可使用所述參考索引和運動向量來識別及檢索I3U的參考樣本。運動補償模塊44可接著從CU的PU的參考樣本中的像素值內插⑶的PU的預測視頻塊的像素值。
[0104]作為對CU執行編碼操作的部分,幀內預測模塊46可對CU的PU執行幀內預測。換句話說,幀內預測模塊46可基于與CU相同的切片中的經解碼像素值產生用于CU的PU的預測數據。幀內預測可提供空間壓縮。
[0105]為對PU執行幀內預測,幀內預測模塊46可使用多個幀內預測模式來產生用于的多組預測數據。當幀內預測模塊46使用幀內預測模式來產生用于PU的一組預測數據時,幀內預測模塊46可在與所述幀內預測模式相關聯的方向和/或梯度上將像素值從相鄰PU跨越PU的視頻塊進行擴展。相鄰可在所述的上方、右上方、左上方或左方,假定對于PU、CU和樹塊采用從左到右、從上到下的編碼次序。幀內預測模塊46可取決于的大小而使用各種數目的幀內預測模式,例如33方向幀內預測模式。
[0106]幀內預測模塊46可選擇用于的預測數據組中的一者。在各種實例中,幀內預測模塊46可以各種方式選擇用于PU的預測數據組。舉例來說,幀內預測模塊46可通過基于預測數據組的失真與位率的比較且選擇具有最低失真率的預測數據組來選擇用于PU的預測數據組。
[0107]模式選擇單元40可從運動補償模塊44針對⑶的PU所產生的預測數據組或幀內預測單元46針對⑶的PU所產生的預測數據組中選擇用于⑶的的預測數據。在一些實例中,模式選擇單元40基于預測數據組的錯誤(即,失真)和位率選擇用于CU的PU的預測數據。
[0108]在模式選擇單元40選擇用于⑶的PU的預測數據之后,殘余產生模塊50可通過從CU的原始視頻塊的像素值減去CU的PU的選定預測數據的預測視頻塊的像素值而產生CU的殘余數據。CU的殘余數據可包含對應于CU中的視頻塊的不同像素分量的2D殘余塊。舉例來說,殘余數據可包含對應于CU的預測視頻塊中的像素的明度分量與CU的原始視頻塊中的像素的明度分量之間的差的殘余視頻塊。此外,CU的殘余數據可包含對應于CU的PU的預測視頻塊中的像素的色度分量與CU的原始視頻塊的像素的色度分量之間的差的殘余視頻塊。
[0109]如上所述,⑶可具有一個或一個以上TU。⑶的每一 TU可對應于所述⑶的殘余數據內的不同視頻塊。CU的TU的視頻塊的大小可或可不基于CU的PU的視頻塊的大小。在一些實例中,CU的殘余數據可使用被稱為“殘余四叉樹”(RQT)的四叉樹結構而細分成較小視頻塊。TU可對應于RQT的葉節點。
[0110]變換模塊52可通過將變換應用到對應于⑶的每一 TU的視頻塊而產生用于所述TU的變換系數塊。所述變換系數塊中的每一者可為變換系數的2D矩陣。在各種實例中,變換模塊52可將各種變換應用到對應于TU的殘余視頻塊。舉例來說,變換模塊可應用離散余弦變換(DCT)、定向變換,或概念上類似的變換。在變換模塊52產生用于TU的變換系數塊之后,量化模塊54可量化變換系數塊中的變換系數。
[0111]CABAC模塊56可從量化模塊54接收變換系數塊。當CABAC模塊56接收到變換系數塊時,CABAC模塊56可產生用于變換系數塊的有效性映射和基于塊的LSC指示符。基于塊的LSC指不符可指不變換系數塊的最后有效變換系數在變換系數塊中的坐標。CABAC豐旲塊56還可產生用于變換系數塊的等級信息。如上文所解釋,用于變換系數塊的等級信息可包含一系列“等級大于I”旗標、一系列“等級大于2”旗標、一系列正負號旗標,和一系列等級余數元素。
[0112]CABAC模塊56可對有效性映射、基于塊的LSC指示符、“等級大于I”旗標和“等級大于2”旗標執行CABAC編碼操作。此外,CABAC模塊56可對其它語法元素執行CABAC編碼操作,所述其它語法元素例如是運動向量或運動向量差異信息以及適用于在視頻解碼器30處對視頻數據進行解碼的多種其它語法元素中的任一者。
[0113]逆量化模塊58和逆變換模塊60可分別應用逆量化和逆變換到變換系數塊以從變換系數塊重建殘余視頻塊。重建模塊62可將重建的殘余視頻塊添加到由運動補償模塊44或幀內預測模塊46產生的一個或一個以上預測視頻塊的像素值以產生重構重建的視頻塊供存儲在經解碼圖片緩沖器64中。運動估計模塊42和運動補償模塊44可使用含有所述經重建視頻塊的參考圖片來對后續圖片的CU執行幀內預測或幀間預測。
[0114]圖6是說明視頻解碼器30的實例配置的框圖。圖6是出于解釋的目的而提供,且并不將技術限制為本發明中所大致例示和描述者。出于解釋的目的,本發明在HEVC譯碼的上下文中描述視頻解碼器30。然而,本發明的技術可適用于其它譯碼標準或方法。
[0115]在圖6的實例中,視頻解碼器30包含多個功能組件。視頻解碼器30的功能組件包含剖析模塊70、運動補償模塊72、幀內預測模塊74、逆量化模塊76、逆變換模塊78、重建模塊80以及經解碼圖片緩沖器82。在一些實例中,視頻解碼器30可執行與相對于圖5的視頻編碼器20所描述的編碼遍次大體上互逆的解碼遍次。在其它實例中,視頻解碼器30可包含較多、較少或不同功能組件。舉例來說,視頻解碼器30可包含解塊濾波器以對重建模塊80的輸出進行濾波以從重建的視頻移除成塊效應假影。
[0116]視頻解碼器30可接收包括經編碼的視頻數據的位流。所述位流可包含多個語法元素。當視頻解碼器30接收到位流時,剖析模塊70可對所述位流執行剖析操作。作為對位流執行剖析操作的結果,剖析模塊70可從所述位流提取語法元素。作為執行剖析操作的部分,剖析模塊70可對位流中的各種CABAC編碼語法元素進行CABAC解碼。運動補償模塊72、幀內預測模塊74、逆量化模塊76和逆變換模塊78可執行重建操作,其基于從位流提取的語法元素產生經解碼視頻數據。
[0117]位流可包含表示用于變換系數塊的基于塊的LSC指示符、用于變換系數塊的有效性映射和用于變換系數塊的等級信息的數據。作為執行剖析操作的部分,剖析模塊70可對基于塊的LSC指示符進行CABAC解碼。剖析模塊70可接著將所述基于塊的LSC指示符轉換成基于掃描的LSC指示符。掃描次序可在經編碼位流中發信號通知,或可由剖析模塊70從一個或一個以上語法元素或參數推斷。
[0118]在將基于塊的LSC指示符轉換成基于掃描的LSC指示符之后,剖析模塊70可使用所述基于掃描的LSC指示符來剖析來自位流的有效性映射。舉例來說,剖析模塊70可基于所述基于掃描的LSC指示符確定用于變換系數塊的有效性映射是否包含用于變換系數的有效性旗標。此外,在一些實例中,剖析模塊70可基于基于掃描的LSC指示符選擇上下文模型。剖析模塊70可在對有效性映射進行解碼的CABAC解碼操作期間使用所述選定的上下文模型。剖析模塊70可使用所述有效性映射來剖析來自位流的變換系數塊的等級信息。
[0119]可能需要以有效方式將基于塊的LSC指示符轉換成基于掃描的LSC指示符。根據本發明的技術,剖析模塊70可執行各種操作以將基于塊的LSC指示符轉換成基于掃描的LSC指示符。舉例來說,剖析模塊70可執行非迭代算法,其從由基于塊的LSC指示符指定的坐標導出基于掃描的LSC指示符。下文詳細描述的圖9和10是實例非迭代算法的流程圖,其可從由基于塊的LSC指示符指定的坐標導出基于掃描的LSC指示符。在另一實例中,剖析模塊70可存儲將坐標映射到基于掃描的LSC指示符的數據結構。在此實例中,剖析模塊70可存取此數據結構以產生基于掃描的LSC指示符。下文詳細描述的圖11說明其中視頻解碼器30至少部分地通過存取將基于塊的LSC指示符映射到基于掃描的LSC指示符的數據結構而將基于塊的LSC指示符轉換為基于掃描的LSC指示符的實例操作。在又一實例中,剖析模塊70可通過執行循環操作而產生基于掃描的LSC指示符,所述循環操作根據前向掃描次序掃描經過變換系數塊中的位置,直到達到具有由基于塊的LSC指示符指定的坐標的變換系數為止。下文詳細描述的圖12說明其中視頻解碼器30通過執行此類循環操作而將基于塊的LSC指示符轉換成基于掃描的LSC指示符的實例迭代操作。
[0120]在一些實例中,剖析模塊70可基于不同掃描次序而使用不同轉換操作。舉例來說,剖析模塊70可在掃描次序為對角線掃描次序時使用上文所提及的非迭代算法,且剖析模塊70可在掃描次序為Z形掃描次序時使用上文所提及的映射數據結構。
[0121]在剖析模塊70對變換系數塊進行解碼之后,逆量化模塊76可對所述變換系數塊進行逆量化,即去量化。逆量化模塊76可以類似于針對HEVC所提議的逆量化過程或由H.264解碼標準界定的逆量化過程的方式來對變換系數塊進行逆量化。逆量化模塊76可使用由視頻編碼器20針對變換系數塊的CU所計算的量化參數QPY來確定量化程度,且同樣地確定供逆量化模塊76應用的逆量化程度。
[0122]在逆量化模塊76對變換系數塊進行逆量化之后,逆變換模塊78可產生用于與變換系數塊相關聯的TU的殘余視頻塊。逆變換模塊78可至少部分地通過將逆變換應用到變換系數塊而產生用于TU的殘余視頻塊。舉例來說,逆變換模塊78可將逆DCT、逆整數變換、逆Karhunen-Loeve變換(KLT)、逆旋轉變換、逆定向變換,或另一逆變換應用到變換系數塊。在一些實例中,逆變換模塊78可基于來自視頻編碼器20的發信而確定適用于變換系數塊的逆變換。在此些實例中,逆變換模塊78可基于在四叉樹的根節點處發信號通知的變換確定用于與變換系數塊相關聯的樹塊的逆變換。在其它實例中,逆變換模塊78可從一個或一個以上譯碼特性(例如塊大小、譯碼模式,或其類似者)推斷逆變換。在一些實例中,逆變換模塊78可應用級聯的逆變換。
[0123]運動補償模塊72可執行運動補償以產生用于⑶的的預測數據。在一些實例中,運動補償模塊72可通過基于內插濾波器執行內插而改進PU的預測數據。用于將用于以子像素精度進行運動補償的內插濾波器的識別符可包括在語法元素中。運動補償模塊72可使用由視頻編碼器20在產生PU的預測數據期間使用的相同內插濾波器來計算參考塊的子整數像素的內插值。運動補償模塊72可根據所接收的語法信息而確定由視頻編碼器20使用的內插濾波器且使用所述內插濾波器來產生預測數據。
[0124]在HEVC實例中,運動補償模塊72和幀內預測模塊74可使用所述語法信息(例如,由四叉樹提供)中的一些來確定用以對經編碼視頻序列的幀進行編碼的樹塊的大小、描述如何分裂經編碼視頻序列的幀的每一 CU的視頻塊(以及同樣地,如何分裂子塊)的分裂信息、指示如何對每一 PU進行編碼的模式(例如,幀內或幀間預測,且對于幀內預測,為幀內預測編碼模式)、用于每一經幀間預測CU的一個或一個以上參考幀(和/或含有參考幀的識別符的參考列表),以及用以對經編碼視頻序列進行解碼的其它信息。
[0125]重建模塊80組合⑶的殘余視頻塊與由運動補償模塊72或幀內預測模塊74產生的CU的PU的對應預測視頻塊以形成經解碼視頻塊。在一些實例中,視頻解碼器30可應用解塊濾波器以對經解碼視頻塊進行濾波以便從經解碼視頻塊移除成塊效應假影。經解碼圖片緩沖器82存儲經解碼視頻塊。經解碼圖片緩沖器82可提供用于后續運動補償的參考圖片,且還可存儲用于呈現在顯示裝置(例如圖1的顯示裝置32)上的圖片。
[0126]圖7是說明由視頻編碼器20執行的實例操作100的流程圖。在CABAC模塊56開始操作100之后,視頻編碼器20可根據掃描次序識別變換系數塊的LSC(102)。在視頻編碼器20已識別出變換系數塊的LSC之后,視頻編碼器20可產生指示變換系數塊的所識別LSC的坐標的基于塊的LSC指示符(104)。
[0127]在產生基于塊的LSC指示符之后,視頻編碼器20可對基于塊的LSC指示符執行CABAC編碼操作(106)。在各種實例中,視頻編碼器20可以各種方式對基于塊的LSC指示符執行CABAC編碼操作。舉例來說,在一些實例中,視頻編碼器20可首先將基于塊的LSC指示符的每一坐標轉換成二進制碼。換句話說,視頻編碼器20可“二進制化”基于塊的LSC指示符的坐標。在二進制化所述坐標之后,視頻編碼器20可選擇表示基于塊的LSC指示符的I坐標的用于對二進制碼進行編碼的上下文模型。在一些情況下,視頻編碼器20可基于基于塊的LSC指示符的X坐標選擇表示y坐標的用于對二進制碼進行編碼的上下文模型。視頻編碼器20可在對表示y坐標的二進制碼的一個或一個以上二進制數進行編碼時使用所述選定的上下文模型。類似地,視頻編碼器20可基于基于塊的LSC指示符的y坐標選擇表示基于塊的LSC指示符的X坐標的用于對二進制碼進行編碼的上下文模型。視頻編碼器20可在對表示X坐標的二進制碼的一個或一個以上二進制數進行編碼時使用所述選定的上下文模型。
[0128]基于塊的LSC指示符的X坐標與y坐標之間可能存在統計關系。舉例來說,有效變換系數傾向于圍繞變換系數塊的DC變換系數集群。因此,如果X坐標相對接近于DC變換系數,則I坐標也可能相對接近于DC變換系數,且反之亦然。通過基于X坐標選擇用于y坐標的上下文模型,視頻編碼器20可能夠利用此統計關系來較準確地選擇用于y坐標的上下文模型。同樣,通過基于I坐標選擇用于X坐標的上下文模型,視頻編碼器20可能夠利用此統計關系來較準確地選擇用于X坐標的上下文模型。
[0129]在一些實例中,視頻編碼器20可交錯對用于X和I坐標的符號的熵編碼操作。舉例來說,視頻編碼器20可首先對X坐標的第一符號執行熵編碼操作。假定視頻編碼器20將X坐標表示為一元數字,則如果X坐標為0,X坐標的第一符號為0,且否則為I。在對X坐標的第一符號進行編碼之后,視頻編碼器20可對y坐標的第一符號執行熵編碼操作。視頻編碼器20可取決于X坐標的第一符號的值而使用不同上下文來對y坐標的第一符號進行編碼。接著,如果X坐標大于0,則視頻編碼器20可對X坐標的第二符號執行熵編碼操作。視頻編碼器20可取決于y坐標的第一符號的值而使用不同上下文來對X坐標的第二符號進行編碼。視頻編碼器20可繼續對X和y坐標的符號進行編碼,直到視頻編碼器20已對X和I坐標的符號中的每一者進行了編碼為止。
[0130]在一些實例中,視頻編碼器20可使用掃描次序將變換系數從一變換系數塊映射到另一 2D變換系數塊。舉例來說,所述另一 2D變換系數塊可為八個位置寬。在此實例中,視頻編碼器20可將如由掃描次序確定的變換系數塊的第一八個變換系數映射到所述另一2D變換系數塊的第一行,將如由掃描次序確定的變換系數塊的第二八個變換系數映射到所述另一 2D變換系數塊的第二行,以此類推。在此實例中,視頻編碼器20可接著根據掃描次序識別所述另一 2D變換系數塊的最后有效變換系數,且產生指示所述另一 2D塊的最后有效變換系數的基于塊的LSC指示符。在此實例中,較低行號與變換系數有效的概率之間可能存在統計關系。舉例來說,變換系數有效的概率在低行號中比在高行號中高。視頻編碼器20可在對基于塊的LSC指示符執行熵編碼操作時利用此統計關系。舉例來說,視頻編碼器20可首先對y坐標執行熵編碼操作,且接著對X坐標執行熵編碼操作。當視頻編碼器20對X坐標執行熵編碼操作時,視頻編碼器20可基于y坐標選擇上下文模型。[0131]此外,視頻編碼器20可產生用于變換系數塊的有效性映射(108)。在一些實例中,視頻編碼器20可產生有效性映射,且同時識別變換系數塊的LSC。
[0132]在各種實例中,視頻編碼器20可以各種方式產生有效性映射。舉例來說,視頻編碼器20可根據反轉掃描次序執行處理變換系數中的每一者的譯碼遍次。反轉掃描次序可為用以識別LSC的掃描次序的反轉。在其它實例中,視頻編碼器20可使用與視頻編碼器20用以識別LSC的相同掃描次序來產生用于變換系數塊的有效性映射。對于在譯碼遍次期間處理的每一變換系數,視頻編碼器20可在根據掃描次序的變換系數的序數位置在根據掃描次序的LSC的序數位置之前的情況下產生且CABAC編碼用于變換系數的有效性旗標。
[0133]在另一實例中,視頻編碼器20可首先產生2D塊以充當有效性映射。在此實例中,視頻編碼器20可掃描經過所述變換系數塊。在視頻編碼器20掃描經過所述變換系數塊時,視頻編碼器20可在2D有效性映射中指示變換系數塊的對應變換系數有效還是無效。
[0134]此外,視頻編碼器20可對有效性映射執行CABAC編碼操作(110)。在一些實例中,視頻編碼器20可交錯步驟108與110。舉例來說,視頻編碼器20可產生用于第一變換系數的有效性旗標。視頻編碼器20可接著對用于所述第一變換系數的有效性旗標執行CABAC編碼操作。在對用于第一變換系數的有效性旗標執行CABAC編碼操作之后,視頻編碼器20可產生用于第二變換系數的有效性旗標,且接著對用于所述第二變換系數的有效性旗標執行CABAC編碼操作,以此類推。
[0135]視頻編碼器20可以各種方式對有效性映射執行CABAC編碼操作。舉例來說,視頻編碼器20可基于變換系數塊的LSC選擇上下文模型。LSC的位置與有效性映射的下一有效性旗標(按反轉掃描次序)的值之間可能存在統計關系。舉例來說,如果視頻編碼器20使用反轉掃描次序來產生有效性映射且變換系數塊的LSC相對遠離變換系數塊的DC變換系數,則下一有效性旗標為I的概率相對大于變換系數塊的LSC相對接近于變換系數塊的DC變換系數的情況。通過基于變換系數塊的LSC選擇上下文模型,視頻編碼器20可能夠利用此統計關系來較準確地選擇用于對有效性映射進行編碼的上下文模型。在選定用于有效性映射的上下文模型之后,視頻編碼器20可使用所述上下文模型來對有效性映射的一個或一個以上有效性旗標進行CABAC編碼。在對有效性映射的CABAC編碼操作期間,視頻編碼器20可使用一個或一個以上其它上下文模型來對有效性映射的后續有效性旗標進行CABAC編碼。
[0136]在其它實例中,視頻編碼器20可以其它方式利用LSC與有效性映射之間的統計關系。舉例來說,視頻編碼器20可在LSC的序數位置大于給定閾值的情況下使用一組上下文來對有效性映射進行CABAC編碼,且在LSC的序數位置不大于給定閾值的情況下使用另一組上下文來對有效性映射進行編碼。以此方式使用不同上下文可改善譯碼效率。
[0137]在另一實例中,視頻編碼器20可通過對變換系數進行分組來利用LSC與有效性映射之間的統計關系。舉例來說,在此實例中,視頻編碼器20可將三個變換系數分組在一起,且將所得群組編碼為單個變換系數。因此,視頻編碼器20可一次對三個變換系數進行編碼。如果群組中的所有三個變換系數都是0,則視頻編碼器20將所述三個變換系數編碼為O。如果不是,則視頻編碼器20可產生I旗標及指示三個對應變換系數中的哪些者有效的旗標。
[0138]在一些情況下,變換系數塊的所有有效變換系數可位于在變換系數塊的左上角處的小區域內。舉例來說,變換系數塊的所有有效變換系數可位于在變換系數塊的左上角處的4x4區域內。在此些情況下,使用基于掃描的LSC指示符可能比使用基于塊的LSC指示符需要較少位來指示變換系數塊的LSC。因此,在一些實例中,視頻編碼器20可在所有有效變換系數在所述區域內時產生基于掃描的LSC指示符代替基于塊的LSC指示符。在此些實例中,視頻編碼器20可在變換系數塊包含在所述區域外部的一個或一個以上有效變換系數的情況下產生基于塊的LSC指示符。此外,在一些此些實例中,視頻編碼器20可在位流中包含指示LSC是使用基于塊的LSC指示符還是基于掃描的LSC指示符來指示的旗標。
[0139]此外,視頻編碼器20可產生用于變換系數塊中的變換系數的等級信息(112)。如上所述,用于變換系數的等級信息可包含“等級大于I”旗標、“等級大于2”旗標、正負號旗標和等級余數元素。
[0140]此外,視頻編碼器20可對用于變換系數的等級信息中的至少一些執行CABAC編碼操作(114)。在一些實例中,視頻編碼器20可交錯步驟112與114。舉例來說,視頻編碼器20可對“等級大于I”旗標、“等級大于2”旗標、正負號旗標和等級余數元素執行單獨的譯碼遍次。在用于“等級大于I”旗標的譯碼遍次期間,視頻編碼器20可產生且CABAC編碼用于第一變換系數的“等級大于I”旗標,產生且CABAC編碼用于下一變換系數的“等級大于I”旗標,以此類推。類似地,在用于“等級大于2”旗標的譯碼遍次期間,視頻編碼器20可產生且CABAC編碼用于第一變換系數的“等級大于2”旗標,產生且CABAC編碼用于下一變換系數的“等級大于2”旗標,以此類推。在用于正負號旗標的譯碼遍次期間,視頻編碼器20可產生用于第一變換系數的正負號旗標,產生用于下一變換系數的正負號旗標,以此類推。在此實例中,視頻編碼器20并不對正負號旗標進行CABAC編碼。在用于等級余數元素的譯碼遍次期間,視頻編碼器20可產生等級余數元素且識別用于第一變換系數的對應Golomb-Rice碼,產生等級余數元素且識別用于下一變換系數的對應Golomb-Rice碼,以此類推。在此實例中,如果變換系數旗標無效,則視頻編碼器20可不產生用于所述變換系數的“等級大于I”旗標、“等級大于2”旗標、正負號旗標或等級余數元素。
[0141]在一些實例中,當視頻編碼器20 二進制化變換系數的等級信息時,二進制化的等級信息的第一二進制數可指示變換系數是否有效。因此,在此些實例中,步驟108中的產生有效性映射可為步驟112中的產生等級信息的部分,且步驟110中的對有效性映射進行CABAC編碼可為步驟114中的對等級信息進行CABAC編碼的部分。
[0142]圖8是說明用以對變換系數塊進行解碼的實例操作130的流程圖。在視頻解碼器30開始操作130之后,視頻解碼器30可接收包括表示用于與TU相關聯的變換系數塊的基于塊的LSC指示符、用于所述變換系數塊的有效性映射和用于所述變換系數塊的等級信息的數據的位流(132)。所述位流可包括其它經編碼的視頻數據。
[0143]在接收到表示基于塊的LSC指示符的數據之后,視頻解碼器30可執行CABAC解碼操作以對經編碼的基于塊的LSC指示符進行解碼(134)。因此,通過執行CABAC解碼操作,視頻解碼器30可從經編碼的視頻數據的位流接收用于變換系數塊的LSC的基于塊的LSC指示符。
[0144]在視頻解碼器30執行CABAC解碼操作以對基于塊的LSC指示符進行解碼之后,視頻解碼器30可選擇轉換操作(135)。在一些實例中,視頻解碼器30可基于掃描次序選擇轉換操作。視頻解碼器30可接著使用所述選定轉換操作來將基于塊的LSC指示符轉換成基于掃描的LSC指示符(136)。在各種實例中,視頻解碼器30可以各種方式將基于塊的LSC指示符轉換成基于掃描的LSC指示符。舉例來說,視頻解碼器30可使用圖9到12中所示的實例操作來將基于塊的LSC指示符有效地轉換成基于掃描的LSC指示符。在其它實例中,視頻解碼器30可執行圖9到12的實例操作中的一者或一者以上的組合來將基于塊的LSC指示符轉換成基于掃描的LSC指示符。此外,在又其它實例中,視頻解碼器30并不在對基于塊的LSC指示符進行解碼之后選擇轉換操作。確切地說,在一些此類實例中,視頻解碼器30可僅經配置以執行一個特定轉換操作。
[0145]隨后,視頻解碼器30可使用所述基于掃描的LSC指示符來對用于變換系數塊的有效性映射進行解碼(138)。視頻解碼器30可以各種方式使用所述基于掃描的LSC指示符來對有效性映射進行解碼。
[0146]舉例來說,視頻編碼器20可不編碼用于在譯碼次序上在LSC之后出現的變換系數的有效性旗標。因此,有效性映射中的有效性旗標的數目可在變換系數塊當中變化。因為有效性旗標的數目可變化,因此視頻解碼器30可能不能夠基于變換系數塊的大小來確定在變換系數塊的有效性映射中存在多少有效性旗標。因此,當視頻解碼器30對有效性映射進行解碼時,視頻解碼器30可能需要能夠確定視頻解碼器30是否已剖析來自位流的有效性映射的所有有效性旗標。因此,視頻解碼器30可繼續剖析來自位流的有效性旗標,直到經剖析的來自位流的有效性旗標的數目等于LSC的序數位置(S卩,由基于掃描的LSC指示符指示的位置)為止。以此方式,視頻解碼器30可使用基于掃描的LSC指示符確定所述有效性映射是否包含用于變換系數塊的變換系數的有效性旗標。
[0147]在另一實例中,基于掃描的LSC指示符可指示指示待解碼的有效變換系數的二進制數的數目。此外,如上所述,在掃描次序上在LSC之前的出現的變換系數的數目與有效性映射的二進制數是I或O的概率之間可能存在統計關系。基于掃描的LSC指示符指示在掃描次序上在LSC之前出現的變換系數的數目。因此,視頻解碼器30可基于基于掃描的LSC指示符從多個可用上下文模型當中選擇上下文模型。視頻解碼器30可接著使用所述選定上下文模型來對有效性映射的一個或一個以上二進制數進行解碼。在對有效性映射的CABAC解碼操作期間,視頻解碼器30可切換到一個或一個以上其它上下文模型。
[0148]在一些實例中,變換系數塊可包含多個子塊。視頻解碼器30可基于基于掃描的LSC指示符從多個子塊當中識別最后有效子塊,即含有LSC的最后有效子塊。此外,視頻解碼器30可執行處理所述最后有效子塊和子塊中的根據第一反轉掃描次序(以所述最后有效子塊開始)在所述最后有效子塊之前出現的子塊的第一譯碼遍次。對于在第一譯碼遍次期間處理的子塊中的每一者,視頻解碼器30可執行根據第二反轉掃描次序處理子塊中的變換系數的第二譯碼遍次。所述第二反轉掃描次序可與第一反轉掃描次序相同或不同。對于在所述第二譯碼遍次期間處理的每一變換系數,視頻解碼器30可基于所述基于掃描的LSC指示符確定有效性映射是否包含用于變換系數的有效性旗標。
[0149]在視頻解碼器30對用于變換系數塊的有效性映射進行解碼之后,視頻解碼器30可對變換系數塊的等級信息執行解碼操作(140)。舉例來說,變換系數塊的等級信息可包含“等級大于I”旗標、“等級大于2”旗標、正負號旗標和等級余數元素。“等級大于I”旗標和“等級大于2”旗標可經CABAC編碼,且等級余數元素可編碼為Golomb-Rice碼。在此實例中,視頻解碼器30可執行CABAC解碼操作以對“等級大于I”旗標和“等級大于2”旗標進行解碼,且可將Golomb-Rice碼轉換回成等級余數元素。
[0150]此外,視頻解碼器30可使用有效性映射、基于掃描的LSC指示符和變換系數塊的變換系數等級信息來從用于所述變換系數塊的等級信息重建變換系數塊(142)。在一些實例中,視頻解碼器30可交錯步驟140與142。舉例來說,視頻解碼器30可以二維陣列存儲所述變換系數。在此實例中,視頻解碼器30可在視頻解碼器30在步驟140中對等級信息進行解碼時添加或調整陣列中的變換系數。
[0151]如上所述,用于變換系數塊的等級信息可包括一系列“等級大于I”旗標、一系列“等級大于2”旗標、一系列正負號旗標,和一系列等級余數元素。在一些實例中,所述系列“等級大于I”旗標、所述系列“等級大于2”旗標、所述正負號旗標和所述等級余數元素并不包含關于變換系數塊內的無效變換系數的條目。因此,所述系列“等級大于I”旗標、所述系列“等級大于2”旗標、所述正負號旗標和所述等級余數元素可不包含指示對應于“等級大于I”旗標、“等級大于2”旗標、正負號旗標和等級余數元素的變換系數塊的位置的信息。因此,視頻解碼器30可使用有效性映射來確定對應于“等級大于I”旗標、“等級大于2”旗標、正負號旗標和等級余數元素的變換系數塊內的位置。在此情況下,視頻解碼器30可接著使用所述“等級大于I”旗標、“等級大于2”旗標、正負號旗標和等級余數元素來重建變換系數塊。
[0152]如上所述,在一些實例中,變換系數的經二進制化等級信息的第一二進制數可指示變換系數是否有效。因此,有效性映射可集成到變換系數的經二進制化等級信息中。在此些實例中,步驟138中的對有效性映射執行熵解碼操作可為步驟140中的對等級信息執行CABAC解碼操作的部分。
[0153]圖9是說明用以將用于變換系數塊的基于塊的LSC指示符轉換成用于變換系數塊的基于掃描的LSC指示符的實例非迭代操作150的流程圖。在圖9的實例中,操作150假定掃描次序為Z形掃描次序。在視頻解碼器30開始操作150之后,視頻解碼器30可確定對角線數目變量的值(152)。視頻解碼器30可通過將基于塊的LSC指示符的y坐標與基于塊的LSC指示符的X坐標相加來確定對角線數目變量的值。
[0154]接下來,視頻解碼器30可確定所述對角線數目變量是否大于變換系數塊的塊寬度(154)。如果對角線數目大于變換系數塊的塊寬度(154的“是”),則視頻解碼器30可計算基于掃描的LSC指示符的初始值(156)。視頻解碼器30可如下計算基于掃描的LSC指示符的初始值:ScanPositionLast = DiagNum*(DiagNum+1)) >> I,其中“ScanPositionLast”為基于掃描的LSC指示符,“DiagNum”表示對角線數目變量,且“>>”表示右移位運算。
[0155]接下來,視頻解碼器30可確定對角線數目變量是否為奇數(158)。在一些實例中,視頻解碼器30可如下確定對角線數目變量是否為奇數:(DiagNum% 2) == I。如果對角線數目變量為奇數(158的“是”),則視頻解碼器30可基于基于塊的LSC指示符的y坐標重新計算基于掃描的LSC指示符(160)。舉例來說,視頻解碼器30可將基于塊的LSC指示符的I坐標與基于掃描的LSC指示符的初始值相加來重新計算所述基于掃描的LSC指示符。反之,如果對角線數目變量不為奇數(158的“否”),則視頻解碼器30可基于基于塊的LSC指示符的X坐標重新計算基于掃描的LSC指示符(162)。舉例來說,視頻解碼器30可將基于塊的LSC指示符的X坐標與基于掃描的LSC指示符的初始值相加來重新計算所述基于掃描的LSC指示符。[0156]如果對角線數目不大于塊寬度(154的“否”),則視頻解碼器30可計算臨時變量的值(164)。視頻解碼器30可如下計算所述臨時變量的值:(BlockWidth-1)<< l)-DiagNum,其中“BlockWidth”指示變換系數塊的寬度,且“<<”表示左移位運算。在計算出臨時值之后,視頻解碼器30可計算基于掃描的LSC指示符的初始值(166)。視頻解碼器30可如下計算基于掃描的LSC指示符的初始值=MaxNumCoeffMl-((T*(T+1)) >>1),其中“MaxNumCoeffMl”為變換系數塊中的變換系數的最大數目,且“Τ”為臨時變量。
[0157]視頻解碼器30可接著確定所述臨時變量是否為奇數(168)。如果臨時變量為奇數(168的“是”),則視頻解碼器30可基于基于塊的LSC指示符的y坐標重新計算基于掃描的LSC指示符(170)。舉例來說,視頻解碼器30可如下重新計算基于掃描的LSC指不符;ScanPositionLast = ScanPositionLast-BlockWidth+1+PositionLastY,其中“ScanPositionLast”為基于掃描的LSC指示符,“BlockWidth”為變換系數塊的寬度,且"PositionLastY"為基于塊的LSC指示符的y坐標。
[0158]反之,如果臨時變量不為奇數(168的“否”),則視頻解碼器30可基于基于塊的LSC指示符的X坐標重新計算基于掃描的LSC指示符(172)。舉例來說,視頻解碼器30可如下重新計算基于掃描的 LSC 指不符!ScanPositionLast = ScanPositionLast-BlockWidth+1+PositionLastX,其中“ScanPositionLast” 為基于掃描的 LSC 指不符,“BlockWidth” 為變換系數塊的寬度,且“PositionLastX”為基于塊的LSC指示符的x坐標。
[0159]以下偽碼描述根據圖9的實例的非迭代算法,其從由基于塊的LSC指示符指定的坐標導出基于掃描的LSC指示符。
[0160]
【權利要求】
1.一種用于對視頻數據進行解碼的方法,所述方法包括: 將基于塊的最后有效系數LSC指示符轉換成基于掃描的LSC指示符,所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標,所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置;以及 基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
2.根據權利要求1所述的方法,其中所述掃描次序從所述塊的DC分量開始。
3.根據權利要求1所述的方法,其中將所述基于塊的LSC指示符轉換成所述基于掃描的LSC指示符包括執行從所述基于塊的LSC指示符導出所述基于掃描的LSC指示符的非迭代算法。
4.根據權利要求1所述的方法,其中將所述基于塊的LSC指示符轉換成所述基于掃描的LSC指示符包括存取將基于塊的LSC指示符映射到基于掃描的LSC指示符的數據結構。
5.根據權利要求1所述的方法,其中將所述基于塊的LSC指示符轉換成所述基于掃描的LSC指示符包括: 執行根據所述掃描次序掃描經過所述塊中的位置的循環操作,直到達到具有所述坐標的位置為止;以及 針對所述塊的在具有所述坐標的所述位置之前的每一位置遞增所述基于掃描的LSC指示符。
6.根據權利要求1所述的方法,其中對所述有效性映射進行解碼包括使用所述基于掃描的LSC指示符確定所述有效性映射是否包含用于所述變換系數的有效性旗標。
7.根據權利要求6所述的方法, 其中所述方法進一步包括接收有效性映射的上下文自適應二進制算術譯碼CABAC版本; 其中使用所述基于掃描的LSC指示符來對所述有效性映射進行解碼包括: 基于所述基于掃描的LSC指示符選擇上下文模型;以及 在對所述有效性映射進行解碼的CABAC解碼操作期間使用所述上下文模型;且 其中所述方法進一步包括: 接收用于所述塊的等級信息的經編碼版本;以及 使用所述有效性映射來對所述等級信息進行解碼。
8.根據權利要求7所述的方法,其進一步包括: 確定所述塊的幀內預測模式; 基于所述塊的所述幀內預測模式確定所述掃描次序; 根據所述掃描次序將所述等級信息映射到所述塊; 對所述塊中的變換系數執行逆量化操作以產生經逆量化的塊; 對所述經逆量化的塊執行逆變換操作以產生殘余數據; 執行產生預測數據的幀內預測操作;以及 執行使用所述殘余數據和所述預測數據來產生重建的塊的重建操作,所述重建的塊是所述視頻數據的圖片的一部分。
9.根據權利要求1所述的方法,其中所述掃描次序為基于子塊的掃描次序、對角線掃描次序、水平掃描次序、垂直掃描次序,或Z形掃描次序。
10.根據權利要求1所述的方法, 其中所述方法進一步包括基于所述掃描次序選擇轉換操作以將所述基于塊的LSC指示符轉換為所述基于掃描的指示符;且 其中將所述基于塊的LSC指示符轉換為所述基于掃描的LSC指示符包括使用所述選定轉換操作將所述基于塊的LSC指示符轉換為所述基于掃描的LSC指示符。
11.根據權利要求1所述的方法, 其中所述塊包含多個子塊; 其中對所述有效性映射進行解碼包括: 基于所述基于掃描的LSC指示符從所述多個子塊當中識別最后有效子塊,即含有所述LSC的所述最后有效子塊;以及 執行處理所述最后有效子塊和所述子塊中的根據以所述最后有效子塊開始的第一反轉掃描次序在所述最后有效子塊之前出現的子塊的第一譯碼遍次; 其中對于在所述第一譯碼遍次期間處理的所述子塊中的每一者,執行根據第二反轉掃描次序處理所述子塊中的變換系數的第二譯碼遍次;且 其中對于在所述第二譯碼遍次期間處理的每一變換系數,基于所述基于掃描的LSC指示符確定所述有效性映射是否包含用于所述變換系數的有效性旗標。
12.一種包括一個或一個以上處理器的視頻解碼裝置,所述一個或一個以上處理器經配置以: 將基于塊的最后有效系數LSC指示符轉換成基于掃描的LSC指示符,所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標,所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置;以及 基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
13.根據權利要求12所述的視頻解碼裝置,其中所述掃描次序從所述塊的DC分量開始。
14.根據權利要求12所述的視頻解碼裝置,其中所述一個或一個以上處理器經配置以執行從所述基于塊的LSC指示符導出所述基于掃描的LSC指示符的非迭代算法。
15.根據權利要求12所述的視頻解碼裝置,其中所述一個或一個以上處理器進一步經配置以存取將基于塊的LSC指示符映射到基于掃描的LSC指示符的數據結構。
16.根據權利要求12所述的視頻解碼裝置,其中所述一個或一個以上處理器進一步經配置以: 執行根據所述掃描次序掃描經過所述塊中的位置的循環操作,直到達到具有所述坐標的位置為止;以及 針對所述塊的在具有所述坐標的所述位置之前的每一位置遞增所述基于掃描的LSC指示符。
17.根據權利要求12所述的視頻解碼裝置,其中所述一個或一個以上處理器經配置以使用所述基于掃描的LSC指示符確定所述有效性映射是否包含用于所述變換系數的有效性旗標。
18.根據權利要求17所述的視頻解碼裝置, 其中所述一個或一個以上處理器經配置以接收有效性映射的上下文自適應二進制算術譯碼CABAC版本,且使用所述基于掃描的LSC指示符來至少部分地通過以下操作對所述有效性映射進行解碼: 基于所述基于掃描的LSC指示符選擇上下文模型;以及 在對所述有效性映射進行解碼的CABAC操作期間使用所述上下文模型;且 其中所述一個或一個以上處理器進一步經配置以: 接收用于所述塊的等級信息的經編碼版本;以及 使用所述有效性映射來對所述等級信息進行解碼。
19.根據權利要求18所述的視頻解碼裝置,其中所述一個或一個以上處理器進一步經配置以: 確定所述塊的幀內預測模式; 基于所述塊的所述幀內預測模式確定所述掃描次序; 根據所述掃描次序將所述等級信息映射到所述塊; 對所述塊中的變換系數執行逆量化操作以產生經逆量化的塊; 對所述經逆量化的塊執行逆變換操作以產生殘余數據; 執行產生預測數據的幀內預測操作;以及 執行使用所述殘余數據和所述預測數據來產生重建的塊的重建操作,所述重建的塊是所述視頻數據的幀的一部分。`
20.根據權利要求12所述的視頻解碼裝置,其中所述掃描次序為對角線掃描次序、水平掃描次序、垂直掃描次序,或Z形掃描次序。
21.根據權利要求12所述的視頻解碼裝置,其中所述一個或一個以上處理器進一步經配置以基于所述掃描次序選擇轉換操作,且使用所述選定轉換操作來將所述基于塊的LSC指示符轉換為所述基于掃描的LSC指示符。
22.根據權利要求12所述的視頻解碼裝置, 其中所述塊包含多個子塊; 其中所述一個或一個以上處理器經配置以至少部分地通過以下操作對所述有效性映射進行解碼: 基于所述基于掃描的LSC指示符從所述多個子塊當中識別最后有效子塊,即含有所述LSC的所述最后有效子塊;以及 執行處理所述最后有效子塊和所述子塊中的根據以所述最后有效子塊開始的第一反轉掃描次序在所述最后有效子塊之前出現的子塊的第一譯碼遍次; 其中所述一個或一個以上處理器經配置使得對于在所述第一譯碼遍次期間處理的所述子塊中的每一者,所述一個或一個以上處理器執行根據第二反轉掃描次序處理所述子塊中的變換系數的第二譯碼遍次;且 其中所述一個或一個以上處理器經配置使得對于在所述第二譯碼遍次期間處理的每一變換系數,所述一個或一個以上處理器基于所述基于掃描的LSC指不符確定所述有效性映射是否包含用于所述變換系數的有效性旗標。
23.一種視頻解碼裝置,其包括: 用于將基于塊的最后有效系數LSC指示符轉換成基于掃描的LSC指示符的裝置,所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標,所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置;以及 用于基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼的裝置。
24.根據權利要求23所述的解碼裝置,其包括: 用于基于所述基于掃描的LSC指示符選擇上下文模型的裝置; 用于在對所述有效性映射進行解碼的上下文自適應二進制算術譯碼CABAC解碼操作期間使用所述上下文模型的裝置; 用于接收用于所述塊的經編碼等級信息的裝置;以及 用于使用所述有效性映射來對所述等級信息進行解碼的裝置。
25.根據權利要求23所述的解碼裝置,其包括用于執行非迭代算法的裝置,所述非迭代算法從所述基于塊的LSC指示符導出所述基于掃描的LSC指示符。
26.根據權利要求23所述的解碼裝置,其包括用于存取將基于塊的LSC指示符映射到基于掃描的LSC指示符的數據結構的裝置。
27.根據權利要求23所述的解碼裝置,其包括: 用于執行根據所述掃描次序掃描經過所述變換系數塊中的位置的循環操作,直到達到具有所述坐標的位置為止的裝置;以及 用于針對所述變換系數塊的在具有所述坐標的所述位置之前的每一位置遞增所述基于掃描的LSC指示符的裝置。
28.根 據權利要求23所述的解碼裝置,其包括: 其中所述塊包含多個子塊; 其中所述用于對所述有效性映射進行解碼的裝置包括用于進行以下操作的裝置:基于所述基于掃描的LSC指示符從所述多個子塊當中識別最后有效子塊,即含有所述LSC的所述最后有效子塊;以及 執行處理所述最后有效子塊和所述子塊中的根據以所述最后有效子塊開始的第一反轉掃描次序在所述最后有效子塊之前出現的子塊的第一譯碼遍次; 其中對于在所述第一譯碼遍次期間處理的所述子塊中的每一者,所述用于對所述有效性映射進行解碼的裝置執行根據第二反轉掃描次序處理所述子塊中的變換系數的第二譯碼遍次;且 其中對于在所述第二譯碼遍次期間處理的每一變換系數,所述用于對所述有效性映射進行解碼的裝置基于所述基于掃描的LSC指示符確定所述有效性映射是否包含用于所述變換系數的有效性旗標。
29.—種包括上面存儲有指令的計算機可讀存儲媒體的計算機程序產品,所述指令配置一個或一個以上處理器以: 將基于塊的最后有效系數LSC指示符轉換成基于掃描的LSC指示符,所述基于塊的LSC指示符根據掃描次序指示變換系數塊的最后有效系數的坐標,所述基于掃描的LSC指示符根據所述掃描次序指示所述LSC的序數位置;以及 基于所述基于掃描的LSC指示符對用于所述塊的有效性映射進行解碼。
30.根據權利要求29所述的計算機程序產品,其中所述指令配置所述一個或一個以上處理器以: 基于所述基于掃描的LSC指示符選擇上下文模型;在對所述有效性映射進行解碼的上下文自適應二進制算術譯碼CABAC解碼操作期間使用所述上下文模型;以及 使用所述有效性映射來對所述等級信息進行解碼。
31.根據權利要求29所述的計算機程序產品,其中所述指令配置所述一個或一個以上處理器以執行從所述基于塊的LSC指示符導出所述基于掃描的LSC指示符的非迭代算法。
32.根據權利要求29所述的計算機程序產品,其中所述指令配置所述一個或一個以上處理器以存取將基于塊的LSC指示符映射到基于掃描的LSC指示符的數據結構。
33.根據權利要求29所述的計算機程序產品,其中所述指令配置所述一個或一個以上處理器以: 執行根據所述掃描次序掃描經過所述塊中的位置的循環操作,直到達到具有所述坐標的位置為止;以及 針對所述塊的在具有所述坐標的所述位置之前的每一位置遞增所述基于掃描的LSC指示符。
34.根據權利要求29所述的計算機程序產品, 其中所述變換系數塊包含多個子塊; 其中所述指令配置所述一個或一個以上處理器以: 基于所述基于掃描的LSC指示符從所述多個子塊當中識別最后有效子塊,即含有所述LSC的所述最后有效子塊;以及 執行處理所述最后有效子塊和所述子塊中的根據以所述最后有效子塊開始的第一反轉掃描次序在所述最后有效子塊之前出現的子塊的第一譯碼遍次; 其中所述指令配置所述一個或一個以上處理器使得對于在所述第一譯碼遍次期間處理的所述子塊中的每一者,所述一個或一個以上處理器執行根據第二反轉掃描次序處理所述子塊中的變換系數的第二譯碼遍次;且 其中所述指令配置所述一個或一個以上處理器使得對于在所述第二譯碼遍次期間處理的每一變換系數,所述一個或一個以上處理器基于所述基于掃描的LSC指不符確定所述有效性映射是否包含用于所述變換系數的有效性旗標。
【文檔編號】H04N19/169GK103621086SQ201280031357
【公開日】2014年3月5日 申請日期:2012年6月28日 優先權日:2011年6月28日
【發明者】霍埃爾·索賴羅哈斯, 瑞珍·雷克斯曼·喬許, 馬爾塔·卡切維奇 申請人:高通股份有限公司