• / 57
  • 下載費用:30 金幣  

用大宏塊進行視頻譯碼.pdf

摘要
申請專利號:

CN200980139258.7

申請日:

2009.09.29

公開號:

CN102172025B

公開日:

2015.01.07

當前法律狀態:

授權

有效性:

有權

法律詳情: 專利權的轉移IPC(主分類):H04N 19/00登記生效日:20171113變更事項:專利權人變更前權利人:高通股份有限公司變更后權利人:維洛媒體國際有限公司變更事項:地址變更前權利人:美國加利福尼亞州變更后權利人:愛爾蘭都柏林|||授權|||實質審查的生效IPC(主分類):H04N 7/26申請日:20090929|||公開
IPC分類號: H04N19/00(2014.01)I; H04N19/61(2014.01)I 主分類號: H04N19/00
申請人: 高通股份有限公司
發明人: 陳培松; 葉琰; 馬爾塔·卡切維奇
地址: 美國加利福尼亞州
優先權: 2008.10.03 US 61/102,787; 2009.01.13 US 61/144,357; 2009.04.03 US 61/166,631; 2009.09.18 US 12/562,412
專利代理機構: 北京律盟知識產權代理有限責任公司 11287 代理人: 宋獻濤
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN200980139258.7

授權公告號:

|||102172025B||||||

法律狀態公告日:

2017.12.01|||2015.01.07|||2011.10.12|||2011.08.31

法律狀態類型:

專利申請權、專利權的轉移|||授權|||實質審查的生效|||公開

摘要

本發明描述用于使用大于由常規視頻編碼和解碼標準規定的宏塊的宏塊來編碼和解碼數字視頻數據的技術。舉例來說,所述技術包括使用包含大于16×16像素(例如64×64像素)的宏塊來編碼和解碼視頻流。在一個實例中,一種設備包括視頻編碼器,所述視頻編碼器經配置以:編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的所述大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。當所述經編碼塊不包括至少一個非零系數時,所述編碼器可將所述經譯碼塊模式值設定為0,或當所述經編碼塊包括非零系數時,所述編碼器可將所述經譯碼塊模式值設定為1。

權利要求書

1.一種方法,其包含:用視頻編碼器編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的所述大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。2.根據權利要求1所述的方法,其進一步包含:當所述經編碼塊不包括至少一個非零系數時,將所述經譯碼塊模式值設定為0;當所述經編碼塊包括至少一個非零系數時,將所述經譯碼塊模式值設定為1;以及當所述經譯碼塊模式值為1時,產生包含用于所述經編碼塊的經編碼視頻數據、所述塊類型語法信息和所述經譯碼塊模式值的經編碼視頻位流。3.根據權利要求1所述的方法,其進一步包含:當所述經編碼塊不包括至少一個非零系數時,產生用于所述經譯碼塊模式值的單一位并將所述單一位的值設定為0;以及當所述經編碼塊包括至少一個非零系數時,產生所述經譯碼塊模式值的第一位并將所述第一位設定為1,產生用于所述經譯碼塊模式值的四個分區位,所述四個分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,并將所述四個分區位設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值。4.根據權利要求3所述的方法,其進一步包含:當所述經編碼塊包括至少一個非零系數時,識別所述經編碼塊的16×16像素分區,產生用于所述16×16像素分區的分區經譯碼塊模式值以作為所述所產生的經譯碼塊模式值的一部分,并在所述四個分區位之后將所述分區經譯碼塊模式附加到所述經譯碼塊模式值。5.根據權利要求4所述的方法,其進一步包含:當所述經編碼塊包括至少一個非零系數時,產生經譯碼塊模式值包含產生第一luma_16×8位和第二luma_16×8位,所述第一luma_16×8位表示所述塊的所述16×16分區的16×8分區是否包括至少一個非零系數,且所述第二luma_16×8位表示所述塊的所述16×16分區的第二16×8分區是否包括至少一個非零系數。6.根據權利要求4所述的方法,其中所述視頻塊具有至少64×64像素的大小。7.根據權利要求1所述的方法,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。8.根據權利要求1所述的方法,其進一步包含:產生用于所述經編碼塊的量化參數修改值,其中編碼所述視頻塊包含根據所述量化參數修改值來量化所述視頻塊;以及包括所述量化參數修改值以作為用于所述經編碼塊的語法信息。9.一種設備,其包含視頻編碼器,所述視頻編碼器經配置以編碼具有大于16×16像素的大小的視頻塊,產生指示所述塊的所述大小的塊類型語法信息,并產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。10.根據權利要求9所述的設備,其中視頻編碼器經配置以在所述經編碼塊不包括至少一個非零系數時將所述經譯碼塊模式值設定為0,在所述經編碼塊包括至少一個非零系數時將所述經譯碼塊模式值設定為1,并在所述經譯碼塊模式值為1時產生包含用于所述經編碼塊的經編碼視頻數據、所述塊類型語法信息和所述經譯碼塊模式值的經編碼視頻位流。11.根據權利要求9所述的設備,其中所述視頻編碼器經配置以:當所述經編碼塊不包括至少一個非零系數時,產生用于所述經譯碼塊模式值的單一位并將所述單一位的值設定為0;且當所述經編碼塊包括至少一個非零系數時,產生所述經譯碼塊模式值的第一位并將所述第一位設定為1,產生用于所述經譯碼塊模式值的四個分區位,所述四個分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,并將所述四個分區位設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值。12.根據權利要求11所述的設備,其中所述視頻編碼器經配置以在所述經編碼塊包括至少一個非零系數時,識別所述經編碼塊的16×16像素分區,產生用于所述16×16像素分區的分區經譯碼塊模式值以作為所述所產生的經譯碼塊模式值的一部分,并在所述四個分區位之后將所述分區經譯碼塊模式值附加到所述經譯碼塊模式值。13.根據權利要求12所述的設備,其中所述視頻編碼器經配置以在所述經編碼塊包括至少一個非零系數時,產生經譯碼塊模式值包含產生第一luma_16×8位和第二luma_16×8位,所述第一luma_16×8位表示所述塊的所述16×16分區的16×8分區是否包括至少一個非零系數,且所述第二luma_16×8位表示所述塊的所述16×16分區的第二16×8分區是否包括至少一個非零系數。14.根據權利要求9所述的設備,其中所述視頻塊具有至少64×64像素的大小。15.根據權利要求9所述的設備,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。16.根據權利要求9所述的設備,其中所述設備包含無線通信裝置。17.一種設備,其包含:用于編碼具有大于16×16像素的大小的視頻塊的裝置;用于產生指示所述塊的所述大小的塊類型語法信息的裝置;以及用于產生用于所述經編碼塊的經譯碼塊模式值的裝置,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。18.根據權利要求17所述的設備,其進一步包含:用于在所述經編碼塊不包括至少一個非零系數時將所述經譯碼塊模式值設定為0的裝置;用于在所述經編碼塊包括至少一個非零系數時將所述經譯碼塊模式值設定為1的裝置;以及用于在所述經譯碼塊模式值為1時產生包含用于所述經編碼塊的經編碼視頻數據、所述塊類型語法信息和所述經譯碼塊模式值的經編碼視頻位流的裝置。19.根據權利要求17所述的設備,其進一步包含:當所述經編碼塊不包括至少一個非零系數時,用于產生用于所述經譯碼塊模式值的單一位并將所述單一位的值設定為0的裝置;以及當所述經編碼塊包括至少一個非零系數時,用于產生所述經譯碼塊模式值的第一位并將所述第一位設定為1的裝置;用于產生用于所述經譯碼塊模式值的四個分區位的裝置,所述四個分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者;以及用于將所述四個分區位設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值的裝置。20.根據權利要求19所述的設備,其進一步包含:當所述經編碼塊包括至少一個非零系數時,用于識別所述經編碼塊的16×16像素分區的裝置;用于產生用于所述16×16像素分區的分區經譯碼塊模式值以作為所述所產生的經譯碼塊模式值的一部分的裝置;以及用于在所述四個分區位之后將所述分區經譯碼塊模式值附加到所述經譯碼塊模式值的裝置。21.根據權利要求20所述的設備,其進一步包含:當所述經編碼塊包括至少一個非零系數時,用于產生經譯碼塊模式值的裝置包含產生第一luma_16×8位和第二luma_16×8位,所述第一luma_16×8位表示所述塊的所述16×16分區的16×8分區是否包括至少一個非零系數,且所述第二luma_16×8位表示所述塊的所述16×16分區的第二16×8分區是否包括至少一個非零系數。22.根據權利要求17所述的設備,其中所述視頻塊具有至少64×64像素的大小。23.根據權利要求17所述的設備,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。24.一種計算機可讀存儲媒體,其經編碼有用于致使視頻編碼設備執行以下操作的指令:用視頻編碼器編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的所述大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。25.根據權利要求24所述的計算機可讀存儲媒體,其進一步包含用于致使所述視頻編碼設備執行以下操作的指令:當所述經編碼塊不包括至少一個非零系數時,將所述經譯碼塊模式值設定為0;當所述經編碼塊包括至少一個非零系數時,將所述經譯碼塊模式值設定為1;以及當所述經譯碼塊模式值為1時,產生包含用于所述經編碼塊的經編碼視頻數據、所述塊類型語法信息和所述經譯碼塊模式值的經編碼視頻位流。26.根據權利要求24所述的計算機可讀存儲媒體,其進一步包含用于致使所述視頻編碼設備執行以下操作的指令:當所述經編碼塊不包括至少一個非零系數時,產生用于所述經譯碼塊模式值的單一位并將所述單一位的值設定為0;以及當所述經編碼塊包括至少一個非零系數時,產生所述經譯碼塊模式值的第一位并將所述第一位設定為1,產生用于所述經譯碼塊模式值的四個分區位,所述四個分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,并將所述四個分區位設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值。27.根據權利要求26所述的計算機可讀存儲媒體,其進一步包含用于致使所述視頻編碼設備執行以下操作的指令:當所述經編碼塊包括至少一個非零系數時,識別所述經編碼塊的16×16像素分區,產生用于所述16×16像素分區的分區經譯碼塊模式值以作為所述所產生的經譯碼塊模式值的一部分,并在所述四個分區位之后將所述分區經譯碼塊模式值附加到所述經譯碼塊模式值。28.根據權利要求27所述的計算機可讀存儲媒體,其進一步包含用于致使所述視頻編碼設備執行以下操作的指令:當所述經編碼塊包括至少一個非零系數時,針對所述經譯碼塊模式值產生第一luma_16×8位和第二luma_16×8位,所述第一luma_16×8位表示所述塊的所述16×16分區的16×8分區是否包括至少一個非零系數,且所述第二luma_16×8位表示所述塊的所述16×16分區的第二16×8分區是否包括至少一個非零系數。29.根據權利要求24所述的計算機可讀存儲媒體,其中所述視頻塊具有至少64×64像素的大小。30.根據權利要求24所述的計算機可讀存儲媒體,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。31.一種方法,其包含:用視頻解碼器接收具有大于16×16像素的大小的經編碼視頻塊;接收指示所述經編碼塊的所述大小的塊類型語法信息;接收用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。32.根據權利要求31所述的方法,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為0,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值為1,所述方法進一步包含在所述經譯碼塊模式值為1時接收用于所述經編碼塊的經編碼視頻數據。33.根據權利要求31所述的方法,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為等于0的單一位,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式包括等于1的第一位和四個分區位,所述分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,其中將所述四個分區位設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值,且其中當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值包括在所述四個分區位之后附加到所述經譯碼塊模式值的用于16×16像素分區的分區經譯碼塊模式值。34.根據權利要求31所述的方法,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。35.根據權利要求31所述的方法,其中所述視頻塊具有至少64×64像素的大小。36.根據權利要求31所述的方法,其進一步包含:接收量化參數修改值,其中解碼所述經編碼塊包含根據所述量化參數修改值將所述經編碼塊解量化。37.一種設備,其包含視頻解碼器,所述視頻解碼器經配置以:接收具有大于16×16像素的大小的經編碼視頻塊;接收指示所述經編碼塊的所述大小的塊類型語法信息;接收用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。38.根據權利要求37所述的設備,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為0,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值為1,所述視頻解碼器經配置以在所述經譯碼塊模式值為1時接收用于所述經編碼塊的經編碼視頻數據。39.根據權利要求37所述的設備,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為等于0的單一位,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式包括等于1的第一位和四個分區位,所述分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,其中所述四個分區位經設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值,且其中當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值包括在所述四個分區位之后附加到所述經譯碼塊模式值的用于16×16像素分區的分區經譯碼塊模式值。40.根據權利要求37所述的設備,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。41.根據權利要求37所述的設備,其中所述視頻塊具有至少64×64像素的大小。42.根據權利要求37所述的設備,其中所述設備包含無線通信裝置。43.一種設備,其包含:用于接收具有大于16×16像素的大小的經編碼視頻塊的裝置;用于接收指示所述經編碼塊的所述大小的塊類型語法信息的裝置;用于接收用于所述經編碼塊的經譯碼塊模式值的裝置,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及用于基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊的裝置。44.根據權利要求43所述的設備,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為0,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值為1,所述設備進一步包含用于在所述經譯碼塊模式值為1時接收用于所述經編碼塊的經編碼視頻數據的裝置。45.根據權利要求43所述的設備,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為等于0的單一位,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式包括等于1的第一位和四個分區位,所述分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,其中所述四個分區位經設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值,且其中當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值包括在所述四個分區位之后附加到所述經譯碼塊模式值的用于16×16像素分區的分區經譯碼塊模式值。46.根據權利要求43所述的設備,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。47.根據權利要求43所述的設備,其中所述視頻塊具有至少64×64像素的大小。48.一種計算機可讀存儲媒體,其包含用于致使視頻解碼器執行以下操作的指令:用視頻編碼器接收具有大于16×16像素的大小的經編碼視頻塊;接收指示所述經編碼塊的所述大小的塊類型語法信息;接收用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。49.根據權利要求48所述的計算機可讀存儲媒體,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為0,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值為1,方法進一步包含在所述經譯碼塊模式值為1時接收用于所述經編碼塊的經編碼視頻數據。50.根據權利要求48所述的計算機可讀存儲媒體,其中當所述經編碼塊不包括至少一個非零系數時,所述經譯碼塊模式值為等于0的單一位,且當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式包括等于1的第一位和四個分區位,所述分區位中的每一者對應于所述經編碼塊的四個相等大小的分區中的不同一者,其中所述四個分區位經設定為表示所述四個相等大小的分區中的所述對應一者是否包括至少一個非零系數的相應值,且其中當所述經編碼塊包括至少一個非零系數時,所述經譯碼塊模式值包括在所述四個分區位之后附加到所述經譯碼塊模式值的用于16×16像素分區的分區經譯碼塊模式值。51.根據權利要求48所述的計算機可讀存儲媒體,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且當所述經編碼塊包括至少一個非零系數時,指示所述經編碼塊的任何第一層級分區是否包括至少一個非零系數,且當所述經編碼塊的所述第一層級分區中的至少一者包括至少一個非零系數時,指示所述第一層級分區的任何第二層級分區是否包括至少一個非零系數,且其中所述經譯碼塊模式值包括對應于所述經編碼塊、所述經編碼塊的所述第一層級分區和所述第一層級分區的所述第二層級分區的位模式。52.根據權利要求48所述的計算機可讀存儲媒體,其中所述視頻塊具有至少64×64像素的大小。

說明書

用大宏塊進行視頻譯碼

本申請案主張2008年10月3日申請的第61/102,787號美國臨時申請案、2009年1月13日申請的第61/144,357號美國臨時申請案和2009年4月3日申請的第61/166,631號美國臨時申請案的權益,所述申請案中的每一者以全文引用的方式并入本文中。

本申請案涉及均與本申請案同一天申請、均具有相同標題“使用大宏塊的視頻譯碼(VIDEO?CODING?WITH?LARGE?MACROBLOCKS)”的美國專利申請案(暫時通過代理人案號090033U2、090033U3、090033U4來引用),所述申請案均轉讓給本受讓人且其全文在此以引用的方式明確地并入本文中以用于所有目的。

技術領域

本發明涉及數字視頻譯碼,且更特定來說,涉及基于塊的視頻譯碼。

背景技術

可將數字視頻能力并入較廣范圍的裝置中,包括數字電視、數字直播系統、無線廣播系統、個人數字助理(PDA)、膝上型或桌上型計算機、數碼相機、數字記錄裝置、視頻游戲裝置、視頻游戲控制臺、蜂窩式或衛星無線電電話等。數字視頻裝置實施視頻壓縮技術,例如由MPEG-2、MPEG-4、ITU-T?H.263或ITU-T?H.264/MPEG-4第10部分高級視頻譯碼(AVC)界定的標準和所述標準的擴展部分中所描述的那些視頻壓縮技術,以更有效地發射和接收數字視頻信息。

視頻壓縮技術執行空間預測和/或時間預測以減少或移除視頻序列中所固有的冗余。對于基于塊的視頻譯碼,可將一視頻幀或切片分割成若干宏塊。可進一步分割每一宏塊。使用關于相鄰宏塊的空間預測編碼經幀內譯碼的(I)幀或切片中的宏塊。經幀間譯碼的(P或B)幀或切片中的宏塊可使用關于同一幀或切片中的相鄰宏塊的空間預測或關于其它參考幀的時間預測。

發明內容

一般來說,本發明描述用于使用大宏塊編碼數字視頻數據的技術。大宏塊大于一般由現有視頻編碼標準規定的宏塊。大多數視頻編碼標準規定使用16×16像素陣列的形式的宏塊。根據本發明,編碼器和解碼器可利用大小大于16×16像素的大宏塊。作為實例,大宏塊可具有32×32、64×64或更大的像素陣列。

視頻編碼依賴于空間和/或時間冗余來支持視頻數據的壓縮。以較高空間分辨率和/或較高幀速率產生的視頻幀可支持較多冗余。如本發明中所描述,使用大宏塊可準許視頻譯碼技術利用隨著空間分辨率和/或幀速率增加而產生的較大冗余度。根據本發明,視頻譯碼技術可利用多種特征來支持對大宏塊的譯碼。

如本發明中所描述,大宏塊譯碼技術可將大宏塊分割成若干分區,且針對選定分區使用不同分區大小和不同譯碼模式(例如,不同的空間(I)模式或時間(P或B)模式)。作為另一實例,一種譯碼技術可利用分層經譯碼塊模式(coded?block?pattern,CBP)值來有效地識別大宏塊內的具有非零系數的經譯碼的宏塊和分區。作為另一實例,一種譯碼技術可比較通過使用大宏塊與小的宏塊進行譯碼而產生的速率-失真量度以選擇產生更有利的結果的宏塊大小。

在一個實例中,本發明提供一種方法,其包含:用視頻編碼器編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的所述大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。

在另一實例中,本發明提供一種設備,其包含視頻編碼器,所述視頻編碼器經配置以:編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的所述大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。

在另一實例中,本發明提供一種計算機可讀媒體,其經編碼有用于致使視頻編碼設備執行以下操作的指令:用視頻編碼器編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的所述大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。

在一額外實例中,本發明提供一種方法,其包含:用視頻解碼器接收具有大于16×16像素的大小的經編碼視頻塊;接收指示所述經編碼塊的所述大小的塊類型語法信息;接收用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。

在另一實例中,本發明提供一種設備,其包含視頻解碼器,所述視頻解碼器經配置以:接收具有大于16×16像素的大小的經編碼視頻塊;接收指示所述經編碼塊的所述大小的塊類型語法信息;接收用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。

在另一實例中,本發明提供一種計算機可讀媒體,其包含用以致使視頻解碼器執行以下操作的指令:接收具有大于16×16像素的大小的經編碼視頻塊;接收指示所述經編碼塊的所述大小的塊類型語法信息;接收用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數;以及基于所述塊類型語法信息和用于所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。

在另一實例中,本發明提供一種方法,其包含:用視頻編碼器接收具有大于16×16像素的大小的視頻塊;將所述塊分割成若干分區;使用第一編碼模式編碼所述分區中的一者;使用不同于所述第一編碼模式的第二編碼模式編碼所述分區中的另一者;以及產生指示所述塊的所述大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息。

在一額外實例中,本發明提供一種設備,其包含視頻編碼器,所述視頻編碼器經配置以:接收具有大于16×16像素的大小的視頻塊;將所述塊分割成若干分區;使用第一編碼模式編碼所述分區中的一者;使用不同于所述第一編碼模式的第二編碼模式編碼所述分區中的另一者;產生指示所述塊的所述大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息。

在另一實例中,本發明提供一種計算機可讀媒體,其經編碼有用以致使視頻編碼器執行以下操作的指令:接收具有大于16×16像素的大小的視頻塊;將所述塊分割成若干分區;使用第一編碼模式編碼所述分區中的一者;使用不同于所述第一編碼模式的第二編碼模式編碼所述分區中的另一者;以及產生指示所述塊的所述大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息。

在另一實例中,本發明提供一種方法,其包含:用視頻解碼器接收具有大于16×16像素的大小的視頻塊,其中將所述塊分割成若干分區,使用第一編碼模式編碼所述分區中的一者且使用不同于所述第一編碼模式的第二編碼模式編碼所述分區中的另一者;接收指示所述塊的所述大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息;以及基于所述塊類型語法信息來解碼所述視頻塊。

在另一實例中,本發明提供一種設備,其包含視頻解碼器,所述視頻解碼器經配置以:接收具有大于16×16像素的大小的視頻塊,其中所述塊經分割成若干分區,所述分區中的一者是使用第一編碼模式而被編碼且所述分區中的另一者是使用一不同于所述第一編碼模式的第二編碼模式而被編碼;接收指示所述塊的所述大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息;以及基于所述塊類型語法信息來解碼所述視頻塊。

在一額外實例中,本發明提供一種計算機可讀媒體,其經編碼有用以致使視頻解碼器執行以下操作的指令:用視頻解碼器接收具有大于16×16像素的大小的視頻塊,其中所述塊經分割成若干分區,所述分區中的一者是使用第一編碼模式而被編碼且所述分區中的另一者是使用不同于所述第一編碼模式的第二編碼模式而被編碼;接收指示所述塊的所述大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息;以及基于所述塊類型語法信息來解碼所述視頻塊。

在另一實例中,本發明提供一種方法,其包含:用數字視頻編碼器接收視頻譯碼單元;確定使用具有16×16像素的大小的第一視頻塊編碼所述視頻譯碼單元的第一速率-失真量度;確定使用具有大于16×16像素的大小的第二視頻塊編碼所述視頻譯碼單元的第二速率-失真量度,在所述第一速率-失真量度小于第二速率-失真量度時使用所述第一視頻塊來編碼所述視頻譯碼單元;以及在所述第二速率-失真量度小于所述第一速率-失真量度時使用所述第二視頻塊來編碼所述視頻譯碼單元。

在一額外實例中,本發明提供一種設備,其包含視頻編碼器,所述視頻編碼器經配置以:接收視頻譯碼單元;確定使用具有16×16像素的大小的第一視頻塊編碼所述視頻譯碼單元的第一速率-失真量度;確定使用具有大于16×16像素的大小的第二視頻塊編碼所述視頻譯碼單元的第二速率-失真量度;在所述第一速率-失真量度小于第二速率-失真量度時使用所述第一視頻塊來編碼所述視頻譯碼單元;在所述第二速率-失真量度小于所述第一速率-失真量度時使用所述第二視頻塊來編碼所述視頻譯碼單元。

在另一實例中,本發明提供一種計算機可讀媒體,其經編碼有用以致使視頻編碼器執行以下操作的指令:接收視頻譯碼單元;確定使用具有16×16像素的大小的第一視頻塊編碼所述視頻譯碼單元的第一速率-失真量度;確定使用具有大于16×16像素的大小的第二視頻塊編碼所述視頻譯碼單元的第二速率-失真量度;在所述第一速率-失真量度小于第二速率-失真量度時使用所述第一視頻塊來編碼所述視頻譯碼單元;以及在所述第二速率-失真量度小于所述第一速率-失真量度時使用所述第二視頻塊來編碼所述視頻譯碼單元。

在另一實例中,本發明提供一種方法,其包含:用視頻編碼器編碼包含多個視頻塊的經譯碼單元,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;以及產生包括最大大小值的用于所述經譯碼單元的語法信息,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小。

在另一實例中,本發明提供一種設備,其包含視頻編碼器,所述視頻編碼器經配置以:編碼包含多個視頻塊的經譯碼單元,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;以及產生包括最大大小值的用于所述經譯碼單元的語法信息,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小。

在另一實例中,本發明提供一種設備,其包含包含以下裝置的設備:用于編碼包含多個視頻塊的經譯碼單元的裝置,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;以及用于產生包括最大大小值的用于所述經譯碼單元的語法信息的裝置,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小。

在另一實例中,本發明提供一種計算機可讀存儲媒體,其經編碼有用以致使可編程處理器執行以下操作的指令:編碼包含多個視頻塊的經譯碼單元,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;以及產生包括最大大小值的用于所述經譯碼單元的語法信息,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小。

在另一實例中,本發明提供一種方法,其包含:用視頻解碼器接收包含多個視頻塊的經譯碼單元,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;接收包括最大大小值的用于所述經譯碼單元的語法信息,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小;根據所述最大大小值選擇塊類型語法解碼器;以及使用所述選定塊類型語法解碼器解碼所述經譯碼單元中的所述多個視頻塊中的每一者。

在另一實例中,本發明提供一種設備,其包含視頻解碼器,所述視頻解碼器經配置以:接收包含多個視頻塊的經譯碼單元,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;接收包括最大大小值的用于所述經譯碼單元的語法信息,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小;根據所述最大大小值選擇塊類型語法解碼器;以及使用所述選定塊類型語法解碼器解碼所述經譯碼單元中的所述多個視頻塊中的每一者。

在另一實例中,本發明提供:用于接收包含多個視頻塊的經譯碼單元的裝置,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;用于接收包括最大大小值的用于所述經譯碼單元的語法信息的裝置,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小;用于根據所述最大大小值選擇塊類型語法解碼器的裝置;以及用于使用所述選定塊類型語法解碼器解碼所述經譯碼單元中的所述多個視頻塊中的每一者的裝置。

在另一實例中,本發明提供一種計算機可讀存儲媒體,其經編碼有用于致使可編程處理器執行以下操作的指令:接收包含多個視頻塊的經譯碼單元,其中所述多個視頻塊中的至少一者包含大于16×16像素的大小;接收包括最大大小值的用于所述經譯碼單元的語法信息,其中所述最大大小值指示所述經譯碼單元中的所述多個視頻塊中的最大者的大小;根據所述最大大小值選擇塊類型語法解碼器;以及使用所述選定塊類型語法解碼器解碼所述經譯碼單元中的所述多個視頻塊中的每一者。

在以下附圖和描述中闡述一個或一個以上實例的細節。將從所述描述和圖式并從權利要求書明白其它特征、目標和優點。

附圖說明

圖1為說明使用大宏塊編碼和解碼數字視頻數據的實例視頻編碼和解碼系統的方框圖。

圖2為說明實施用于譯碼大宏塊的技術的視頻編碼器的一實例的方框圖。

圖3為說明實施用于譯碼大宏塊的技術的視頻解碼器的一實例的方框圖。

圖4A為說明在大宏塊的各種層級中的分割的概念圖。

圖4B為說明將不同譯碼模式指派到大宏塊的不同分區的概念圖。

圖5為說明大宏塊的各種層級的分層視圖的概念圖。

圖6為說明用于設定64×64像素的大宏塊的經譯碼塊模式(CBP)值的實例方法的流程圖。

圖7為說明用于設定64×64像素的大宏塊的32×32像素分區的CBP值的實例方法的流程圖。

圖8為說明用于設定64×64像素的大宏塊的32×32像素分區的16×16像素分區的CBP值的實例方法的流程圖。

圖9為說明用于確定二位luma16×8_CBP值的實例方法的流程圖。

圖10為說明64×64像素的大宏塊的一實例布置的方框圖。

圖11為說明用于計算N×N像素的大視頻塊的最佳分割和編碼方法的實例方法的流程圖。

圖12為說明具有各種分區的實例64×64像素宏塊和用于每一分區的選定編碼方法的方框圖。

圖13為說明用于確定用于編碼視頻序列的幀的宏塊的最佳大小的實例方法的流程圖。

圖14為說明實例無線通信裝置的方框圖,所述無線通信裝置包括使用大宏塊編碼數字視頻數據的視頻編碼器/解碼器(CODEC)。

圖15為說明大宏塊的分層CBP表示的實例陣列表示的方框圖。

圖16為說明對應于圖15的分層CBP表示的實例樹結構的方框圖。

圖17為說明用于使用經譯碼單元的語法信息來指示和選擇用于所述經譯碼單元的視頻塊的基于塊的語法編碼器和解碼器的實例方法的流程圖。

具體實施方式

本發明描述用于使用大宏塊編碼和解碼數字視頻數據的技術。大宏塊大于一般由現有視頻編碼標準規定的宏塊。大多數視頻編碼標準規定使用16×16像素陣列的形式的宏塊。根據本發明,編碼器和/或解碼器可利用大小大于16×16像素的大宏塊。作為實例,大宏塊可具有32×32、64×64或可能更大的像素陣列。

一般來說,如本文中所使用的術語“宏塊”可指代包含表達為N×N像素的經界定大小的像素陣列的數據結構,其中N為正整數值。宏塊可界定:四個亮度塊,每一亮度塊包含(N/2)×(N/2)像素的陣列;兩個色度塊,每一色度塊包含N×N像素的陣列;以及標頭,其包含宏塊類型信息和經譯碼塊模式(CBP)信息,如下文更詳細地論述。

常規視頻譯碼標準通常規定經界定的宏塊大小為16×16像素陣列。根據本發明中所描述的各種技術,宏塊可包含N×N像素陣列,其中N可大于16。同樣地,常規視頻譯碼標準規定經幀間編碼的宏塊通常經指派有單一運動向量。根據本發明中所描述的各種技術,多個運動向量可經指派有用于N×N宏塊的經幀間編碼的分區,如下文更詳細地描述。對“大宏塊”或類似短語的引用一般指代具有大于16×16的像素陣列的宏塊。

在一些情況下,大宏塊可支持譯碼效率的改進和/或數據發射開銷的減少,同時維持或可能改進圖像質量。舉例來說,使用大宏塊可準許視頻編碼器和/或解碼器利用以增加的空間分辨率(例如,每幀1280×720或1920×1080像素)和/或增加的幀速率(例如,每秒30幀或60幀)產生視頻數據所提供的增加的冗余。

作為一說明,具有每幀1280×720像素的空間分辨率和每秒60幀的幀速率的數字視頻序列在空間上比具有每幀176×144像素的空間分辨率和每秒15幀的幀速率的數字視頻序列大36倍,且在時間上比具有每幀176×144像素的空間分辨率和每秒15幀的幀速率的數字視頻序列快4倍。通過增加的宏塊大小,視頻編碼器和/或解碼器可更好地利用增加的空間和/或時間冗余來支持視頻數據的壓縮。

而且,通過使用較大宏塊,針對給定幀或切片,可編碼較小數目個塊,從而減少需要發射的開銷信息的量。換句話說,較大宏塊可準許針對每一幀或切片譯碼的宏塊的總數目的減少。如果(例如)幀的空間分辨率增加4倍,則對于所述幀中的像素,將需要4倍的16×16宏塊。在此實例中,在64×64宏塊的情況下,減少了處置增加的空間分辨率所需的宏塊的數目。在每一幀或切片的減少數目個宏塊的情況下,例如,可減少例如語法信息、運動向量數據等的譯碼信息的累積量。

在本發明中,宏塊的大小一般指代宏塊中所含有的像素的數目,例如,64×64、32×32、16×16等。因此,大宏塊(例如,64×64或32×32)可能在其含有比16×16宏塊的像素數目大的數目個像素的意義上是大的。然而,由大宏塊的垂直和水平尺寸界定的空間區域(即,作為由視頻幀的垂直和水平尺寸界定的區域的部分)可大于或可不大于常規16×16宏塊的區域。在一些實例中,大宏塊的區域可與常規的16×16宏塊相同或類似。然而,大宏塊具有以宏塊內的像素的較高數目和較高空間密度為特征的較高空間分辨率。

可至少部分基于幀中的像素的數目(即,幀中的空間分辨率)來配置宏塊的大小。如果幀具有較高數目個像素,則可將大宏塊配置為具有較高數目個像素。作為一說明,視頻編碼器可經配置以針對以每秒30幀顯示的1280×720像素幀而利用32×32像素宏塊。作為另一說明,視頻編碼器可經配置以針對以每秒60幀顯示的1280×720像素幀而利用64×64像素宏塊。

由編碼器編碼的每一宏塊可能需要描述宏塊的一個或一個以上特性的數據。所述數據可指示(例如)用于表示宏塊的大小、分割宏塊的方式,和應用于宏塊和/或其分區的譯碼模式(空間或時間)的宏塊類型數據。另外,所述數據可包括運動向量差異(mvd)數據以及表示宏塊和/或其分區的運動向量信息的其它語法元素。而且,所述數據可包括經譯碼塊模式(CBP)值以及表示預測后的殘余信息的其它語法元素。宏塊類型數據可提供于大宏塊的單一宏塊標頭中。

如上文所提及,通過利用大宏塊,編碼器可減少每一幀或切片的宏塊的數目,且借此減少針對每一幀或切片需要發射的凈開銷的量。而且,通過利用大宏塊,針對特定幀或切片,宏塊的總數目可減小,此可減少向用戶顯示的視頻中的塊狀假影(blocky?artifact)。

本發明中所描述的視頻編碼技術可利用一個或一個以上特征來支持對大宏塊的譯碼。舉例來說,可將大宏塊分割成若干較小分區。可將不同譯碼模式(例如,不同的空間(I)或時間(P或B)譯碼模式)應用于大宏塊內的選定分區。而且,可利用分層經譯碼塊模式(CBP)值來有效地識別具有表示殘余數據的非零變換系數的經譯碼的宏塊和分區。另外,可比較使用大宏塊大小與小宏塊大小進行譯碼的速率-失真量度以選擇產生有利結果的宏塊大小。此外,包含變化大小的宏塊的經譯碼單元(例如,幀、切片、序列,或圖片群組)可包括指示所述經譯碼單元中的最大宏塊的大小的語法元素。如下文更詳細地描述,大宏塊包含不同于標準的16×16像素塊的塊層級語法。因此,通過指示經譯碼單元中的最大宏塊的大小,編碼器可向解碼器發信號通知將應用于所述經譯碼單元的宏塊的塊層級語法解碼器。

針對大宏塊中的不同分區使用不同譯碼模式可被稱作大宏塊的混合模式譯碼。代替均勻地譯碼大宏塊以使得所有分區具有相同的幀內或幀間譯碼模式,可譯碼大宏塊以使得一些分區具有不同譯碼模式,例如不同的幀內譯碼模式(例如,I_16×16、I_8×8、I_4×4)或幀內和幀間譯碼模式。

如果將大宏塊劃分成兩個或兩個以上分區,則(例如)可用第一模式譯碼至少一個分區且可用不同于所述第一模式的第二模式譯碼另一分區。在一些情況下,第一模式可為第一I模式且第二模式可為不同于所述第一I模式的第二I模式。在其它情況下,第一模式可為I模式且第二模式可為P或B模式。因此,在一些實例中,大宏塊可包括一個或一個以上在時間上(P或B)譯碼的分區和一個或一個以上在空間上(I)譯碼的分區,或一個或一個以上具有不同I模式的在空間上譯碼的分區。

一個或一個以上分層經譯碼塊模式(CBP)值可用于有效地描述大宏塊中的任何分區是否具有至少一個非零變換系數,且如果有,則描述哪些分區具有至少一個非零變換系數。變換系數編碼大宏塊的殘余數據。大宏塊層級CBP位指示大宏塊中的任何分區是否包括非零的、經量化的系數。如果大宏塊中的任何分區不包括非零、經量化的系數,則不需要考慮所述分區中的任一者是否具有非零系數,因為已知整個大宏塊不具有非零系數。在此情況下,可使用預測宏塊來解碼不具有殘余數據的宏塊。

或者,如果宏塊層級CBP值指示大宏塊中的至少一個分區具有非零系數,則可分析分區層級CBP值以識別所述分區中的哪一者包括至少一個非零系數。解碼器接著可檢索具有至少一個非零系數的分區的適當殘余數據,且使用所述殘余數據和預測塊數據解碼所述分區。在一些情況下,一個或一個以上分區可具有非零系數,且因此包括具有適當指示的分區層級CBP值。大宏塊與所述分區中的至少一些分區均可大于16×16像素。

為了選擇產生有利速率-失真量度的宏塊大小,可針對大宏塊(例如,32×32或64×64)與小宏塊(例如,16×16)兩者分析速率-失真量度。舉例來說,編碼器可比較經譯碼單元(例如,幀或切片)的16×16宏塊、32×32宏塊與64×64宏塊之間的速率-失真量度。編碼器可接著選擇產生最好的速率-失真的宏塊大小,且使用所述選定宏塊大小(即,具有最好的速率-失真的宏塊大小)編碼所述經譯碼單元。

所述選擇可基于在三個或三個以上遍次(例如,使用16×16像素宏塊的第一遍次、使用32×32像素宏塊的第二遍次,和使用64×64像素宏塊的第三遍次)中編碼幀或切片,和比較每一遍次的速率-失真量度。以此方式,編碼器可通過改變宏塊大小并選擇產生給定譯碼單元(例如,切片或幀)的最好的或最佳速率-失真的宏塊大小來優化速率-失真。編碼器可進一步將用于經譯碼單元的識別在經譯碼單元中所使用的宏塊的大小的語法信息(例如)作為幀標頭或切片標頭的一部分進行發射。如下文更詳細地論述,用于經譯碼單元的語法信息可包含最大大小指示符,其指示經譯碼單元中所使用的宏塊的最大大小。以此方式,編碼器可向解碼器通知預期將哪些語法用于經譯碼單元的宏塊。當宏塊的最大大小包含16×16像素時,解碼器可預期標準H.264語法且根據H.264-指定語法來解析宏塊。然而,當宏塊的最大大小大于16×16(例如,包含64×64像素)時,解碼器可預期與較大宏塊的處理有關的經修改的語法元素和/或額外語法元素(如本發明描述),且根據所述經修改的語法或額外語法來解析宏塊。

對于一些視頻幀或切片,在給定相對低的失真的情況下,大宏塊可呈現實質的位速率節省且借此產生最好的速率-失真結果。然而,對于其它視頻幀或切片,較小宏塊可呈現較少失真,從而在速率-失真成本分析中重要性超過位速率。因此,在不同情況下,(例如)視視頻內容和復雜性而定,64×64、32×32或16×16可適合于不同視頻幀或切片。

圖1為說明實例視頻編碼和解碼系統10的方框圖,視頻編碼和解碼系統10可利用用于使用大宏塊(即,含有比16×16宏塊多的像素的宏塊)編碼/解碼數字視頻數據的技術。如圖1中所展示,系統10包括經由通信信道16將經編碼的視頻發射到目的目的裝置14的源裝置12。源裝置12和目的裝置14可包含較廣范圍的裝置中的任一者。在一些情況下,源裝置12和目的裝置14可包含無線通信裝置,例如無線手持機、所謂的蜂窩式或衛星無線電電話,或可在通信信道16上(在此情況下,通信信道16為無線的)傳送視頻信息的任何無線裝置。然而,本發明的涉及包含比由常規視頻編碼標準規定的宏塊多的像素的大宏塊的使用的技術未必限于無線應用或設定。舉例來說,這些技術可適用于空中電視廣播、有線電視發射、衛星電視發射、因特網視頻發射、經編碼到存儲媒體上的經編碼的數字視頻,或其它情況。因此,通信信道16可包含適合于發射經編碼的視頻數據的無線媒體或有線媒體的任何組合。

在圖1的實例中,源裝置12可包括視頻源18、視頻編碼器20、調制器/解調器(調制解調器)22和發射器24。目的裝置14可包括接收器26、調制解調器28、視頻解碼器30,和顯示裝置32。根據本發明,源裝置12的視頻編碼器20可經配置以應用用于在視頻編碼過程中使用具有大于由常規視頻編碼標準規定的宏塊大小的大小的大宏塊的技術中的一者或一者以上。類似地,目的裝置14的視頻解碼器30可經配置以應用用于在視頻解碼過程中使用大于由常規視頻編碼標準規定的宏塊大小的宏塊大小的技術中的一者或一者以上。

圖1的所說明的系統10僅為一個實例。如本發明中所描述的用于使用大宏塊的技術可由任何數字視頻編碼和/或解碼裝置來執行。源裝置12和目的裝置14僅為所述譯碼裝置(在所述譯碼裝置中,源裝置12產生用于發射到目的裝置14的經譯碼的視頻數據)的實例。在一些實例中,裝置12、14可以大體上對稱的方式操作以使得裝置12、14中的每一者包括視頻編碼和解碼組件。因此,系統10可支持視頻裝置12、14之間的單向或雙向視頻發射,以(例如)用于視頻串流、視頻回放、視頻廣播或視頻電話。

源裝置12的視頻源18可包括視頻俘獲裝置,例如攝像機、含有先前所俘獲的視頻的視頻存檔,和/或來自視頻內容提供者的視頻饋入(video?feed)。作為另一替代方案,視頻源18可產生基于計算機圖形的數據作為源視頻,或產生實況視頻、經存檔的視頻與計算機產生的視頻的組合。在一些情況下,如果視頻源18為攝像機,則源裝置12與目的裝置14可形成所謂的相機電話或視頻電話。然而,如上文所提及,一般來說,本發明中所描述的技術可適用于視頻譯碼,且可適用于無線或有線應用。在每一情況下,可由視頻編碼器20來編碼經俘獲的、經預先俘獲的或計算機產生的視頻。經編碼的視頻信息可接著由調制解調器22根據通信標準來調制,且經由發射器24而發射到目的裝置14。調制解調器22可包括各種混頻器、濾波器、放大器或經設計以用于信號調制的其它組件。發射器24可包括經設計以用于發射數據的電路,包括放大器、濾波器,和一個或一個以上天線。

目的裝置14的接收器26在信道16上接收信息,且調制解調器28解調所述信息。同樣,視頻編碼過程可實施本文中所描述的技術中的一者或一者以上以將大宏塊(例如,大于16×16)用于視頻數據的幀間(即,時間)編碼和/或幀內(即,空間)編碼。由視頻解碼器30執行的視頻解碼過程還可在解碼過程期間使用所述技術。在信道16上傳送的信息可包括由視頻編碼器20界定的語法信息,所述語法信息還被視頻解碼器30使用,所述語法信息包括描述大宏塊的特性和/或處理的語法元素,如下文更詳細地論述。可將語法信息包括于幀標頭、切片標頭、序列標頭(例如,相對于H.264,通過使用經譯碼的視頻序列所符合的簡檔和層級)或宏塊標頭中的任一者或全部中。顯示裝置32向用戶顯示經解碼的視頻數據,且可包含例如陰極射線管(CRT)、液晶顯示器(LCD)、等離子顯示器、有機發光二極管(OLED)顯示器或另一類型的顯示裝置的多種顯示裝置中的任一者。

在圖1的實例中,通信信道16可包含任何無線或有線通信媒體(例如,射頻(RF)頻譜或一個或一個以上物理傳輸線),或無線與有線媒體的任何組合。通信信道16可形成基于包的網絡(例如,局域網、廣域網,或例如因特網等全球網絡)的一部分。通信信道16一般表示用于將視頻數據從源裝置12發射到目的裝置14的任何合適的通信媒體或不同通信媒體的集合,包括有線或無線媒體的任何合適組合。通信信道16可包括路由器、交換機、基站,或可用于促進從源裝置12到目的裝置14的通信的任何其它裝備。

視頻編碼器20和視頻解碼器30可根據例如ITU-T?H.264標準(或者經描述為MPEG-4第10部分,高級視頻譯碼(AVC))的視頻壓縮標準而操作。然而,本發明的技術不限于任何特定譯碼標準。其它實例包括MPEG-2和ITU-T?H.263。雖然圖1中未展示,但在一些方面中,視頻編碼器20和視頻解碼器30可各自與音頻編碼器和解碼器集成,且可包括適當的MUX-DEMUX單元或其它硬件和軟件,以處置共同數據流或單獨數據流中的音頻與視頻兩者的編碼。如果可適用,則MUX-DEMUX單元可遵從ITUH.223多路復用器協議,或例如用戶數據報協議(UDP)等其它協議。

ITU-T?H.264/MPEG-4(AVC)標準由ITU-T視頻譯碼專家組(VCEG)與ISO/IEC動畫專家組(MPEG)一起制定,作為被稱為聯合視頻小組(JVT)的共同伙伴關系的產物。在一些方面中,本發明中所描述的技術可適用于一般遵從H.264標準的裝置。H.264標準描述于ITU-T研究組的2005年3月公布的ITU-T推薦H.264,用于通用視聽服務的高級視頻譯碼(Advanced?Video?Coding?for?generic?audiovisual?services)中,其在本文中可被稱作H.264標準或H.264規范,或H.264/AVC標準或規范。聯合視頻小組(JVT)不斷致力于對H.264/MPEG-4AVC的擴展。

視頻編碼器20和視頻解碼器30各自可經實施為例如一個或一個以上微處理器、數字信號處理器(DSP)、專用集成電路(ASIC)、現場可編程門陣列(FPGA)、離散邏輯、軟件、硬件、固件或其任何組合的多種合適編碼器電路中的任一者。視頻編碼器20和視頻解碼器30中的每一者可包括于一個或一個以上編碼器或解碼器中,視頻編碼器20和視頻解碼器30中的任一者可作為組合式編碼器/解碼器(CODEC)的一部分而集成于相應相機、計算機、移動裝置、訂戶裝置、廣播裝置、機頂盒、服務器等中。

視頻序列通常包括一系列視頻幀。視頻編碼器20對個別視頻幀內的視頻塊操作以便編碼視頻數據。一視頻塊可對應于一宏塊或一宏塊的一分區。一視頻塊可進一步對應于一分區的一分區。視頻塊可具有固定或不同的大小,且大小可根據指定譯碼標準或根據本發明的技術而不同。每一視頻幀可包括多個切片。每一切片可包括多個宏塊,所述多個宏塊可布置成若干分區,所述分區還被稱作子塊。

作為一實例,ITU-T?H.264標準支持各種塊大小(例如,針對亮度分量的16乘16、8乘8或4乘4,和針對色度分量的8×8)的幀內預測,以及各種塊大小(例如,針對亮度分量的16×16、16×8、8×16、8×8、8×4、4×8和4×4,和針對色度分量的對應縮放的大小)的幀間預測。在本發明中,“×”與“乘”可互換地使用,以指代依據垂直和水平尺寸的塊的像素尺寸,例如,16×16像素或16乘16像素。一般來說,16×16塊將具有在垂直方向上的16個像素和在水平方向上的16個像素。同樣地,N×N塊一般具有在垂直方向上的N個像素和在水平方向上的N個像素,其中N表示可大于16的正整數值。一塊中的像素可布置成若干行和若干列。

小于16乘16的塊大小可稱作16乘16宏塊的分區。同樣地,對于N×N塊,小于N×N的塊大小可稱作N×N塊的分區。本發明的技術描述大于常規16×16像素宏塊的宏塊(例如,32×32像素宏塊、64×64像素宏塊,或更大宏塊)的幀內譯碼和幀間譯碼。視頻塊可包含像素域中的像素數據的塊,或(例如)在對表示經譯碼的視頻塊與預測視頻塊之間的像素差異的殘余視頻塊數據應用例如離散余弦變換(DCT)、整數變換、小波變換或概念上類似的變換等變換之后的在變換域中的變換系數的塊。在一些情況下,視頻塊可包含變換域中的經量化的變換系數的塊。

較小視頻塊可提供較好的分辨率,且可用于視頻幀的包括高細節水平的位置。一般來說,可將宏塊和有時稱作子塊的各種分區視為視頻塊。另外,可將切片視為多個視頻塊,例如宏塊和/或子塊。每一切片可為視頻幀的可獨立解碼的單元。或者,幀本身可為可解碼的單元,或可將幀的其它部分界定為可解碼的單元。術語“經譯碼單元”或“譯碼單元”可指代視頻幀的任何可獨立解碼的單元,例如完整幀、幀的切片、圖片群組(GOP)(還稱作序列),或根據可適用的譯碼技術界定的另一可獨立解碼的單元。

在用于產生預測數據和殘余數據的幀內預測或幀間預測譯碼之后,且在用于產生變換系數的任何變換(例如,H.264/AVC中所使用的4×4或8×8整數變換或離散余弦變換DCT)之后,可執行對變換系數的量化。量化一般指代將變換系數量化以可能地減少用于表示系數的數據量的過程。量化過程可減少與一些系數或全部系數相關聯的位深度。舉例來說,在量化期間,可將n位值向下舍入到m位值,其中n大于m。

在量化之后,可(例如)根據內容自適應可變長度譯碼(CAVLC)、上下文自適應二進制算術譯碼(CABAC)或另一熵譯碼方法來執行經量化數據的熵譯碼。經配置以用于熵譯碼的處理單元或另一處理單元可執行其它處理功能,例如對經量化系數的零游程長度譯碼和/或例如CBP值、宏塊類型、譯碼模式、經譯碼單元(例如,幀、切片、宏塊,或序列)的最大宏塊大小等的語法信息的產生。

根據本發明的各種技術,視頻編碼器20可使用大于由常規視頻編碼標準規定的宏塊的宏塊來編碼數字視頻數據。在一個實例中,視頻編碼器20可用視頻編碼器編碼具有大于16×16像素的大小的視頻塊,產生指示所述塊的大小的塊類型語法信息,并產生所述經編碼塊的CBP值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。宏塊塊類型語法信息可提供于大宏塊的宏塊標頭中。宏塊塊類型語法信息可指示宏塊在幀或切片中的地址或位置,或識別宏塊的位置的宏塊編號、應用于宏塊的譯碼模式的類型、宏塊的量化值、宏塊的任何運動向量信息,和宏塊的CBP值。

在另一實例中,視頻編碼器20可接收具有大于16×16像素的大小的視頻塊,將所述塊分割成若干分區,使用第一編碼模式編碼所述分區中的一者,使用不同于所述第一編碼模式的第二編碼模式編碼所述分區中的另一者,并產生指示所述塊的大小并識別所述分區和用于編碼所述分區的編碼模式的塊類型語法信息。

在一額外實例中,視頻編碼器20可接收視頻譯碼單元(例如,幀或切片),確定使用具有16×16像素的大小的第一視頻塊編碼所述視頻譯碼單元的第一速率-失真量度,確定使用具有大于16×16像素的大小的第二視頻塊編碼所述視頻譯碼單元的第二速率-失真量度,在所述第一速率-失真量度小于第二速率-失真量度時使用所述第一視頻塊編碼所述視頻譯碼單元,且在所述第二速率-失真量度小于所述第一速率-失真量度時使用所述第二視頻塊編碼所述視頻譯碼單元。

在一個實例中,視頻解碼器30可接收具有大于16×16像素的大小的經編碼視頻塊,接收指示所述經編碼塊的大小的塊類型語法信息,接收所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數,且基于所述塊類型語法信息和所述經編碼塊的所述經譯碼塊模式值來解碼所述經編碼塊。

在另一實例中,視頻解碼器30可接收具有大于16×16像素的大小的視頻塊,其中所述塊經分割成若干分區,所述分區中的一者經幀內編碼且所述分區中的另一者經幀內編碼,接收指示所述塊的大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息,且基于所述塊類型語法信息解碼所述視頻塊。

圖2為說明視頻編碼器50的一實例的方框圖,視頻編碼器50可實施與本發明一致的用于使用大宏塊的技術。視頻編碼器50可對應于源裝置12的視頻編碼器20或不同裝置的視頻編碼器。視頻編碼器50可執行對視頻幀內的塊(包括大宏塊,或大宏塊的分區或子分區)的幀內譯碼和幀間譯碼。幀內譯碼依賴于空間預測來減少或移除給定視頻幀內的視頻的空間冗余。幀間譯碼依賴于時間預測來減少或移除視頻序列的鄰近幀內的視頻的時間冗余。

幀內模式(I模式)可指代若干基于空間的壓縮模式中的任一者,且例如預測(P模式)或雙向(B模式)的幀間模式可指代若干基于時間的壓縮模式中的任一者。本發明的技術可在幀間譯碼與幀內譯碼兩者期間應用。在一些情況下,本發明的技術還可適用于編碼非視頻數字圖片。即,數字靜態圖片編碼器可利用本發明的技術以類似于編碼視頻序列中的視頻幀中的經幀內譯碼的宏塊的方式使用大宏塊對數字靜態圖片進行幀內譯碼。

如圖2中所展示,視頻編碼器50接收待編碼的視頻幀內的當前視頻塊。在圖2的實例中,視頻編碼器50包括運動補償單元35、運動估計單元36、幀內預測單元37、模式選擇單元39、參考幀存儲裝置34、求和器48、變換單元38、量化單元40,和熵譯碼單元46。對于視頻塊重構,視頻編碼器50還包括逆量化單元42、逆變換單元44,和求和器51。還可包括解塊濾波器(圖2中未展示)以將塊邊界濾波,以從經重構的視頻移除成塊性假影。在需要時,解塊濾波器通常對求和器51的輸出進行濾波。

在編碼過程期間,視頻編碼器50接收待譯碼的視頻幀或切片。可將所述幀或切片劃分成多個視頻塊,包括大宏塊。運動估計單元36和運動補償單元35相對于一個或一個以上參考幀中的一個或一個以上塊執行對所接收的視頻塊的幀間預測譯碼以提供時間壓縮。幀內預測單元37相對于與待譯碼的塊相同的幀或切片中的一個或一個以上相鄰塊執行對所接收的視頻塊的幀內預測譯碼以提供空間壓縮。

模式選擇單元39可(例如)基于誤差結果而選擇譯碼模式(幀內或幀間)中的一者,且將所得的經幀內譯碼或經幀間譯碼的塊提供到求和器48以產生殘余塊數據,且提供到求和器51以重構經編碼塊以用作參考幀。根據本發明的技術,待編碼的視頻塊可包含大于由常規譯碼標準規定的宏塊(即,大于16×16像素宏塊)的宏塊。舉例來說,大視頻塊可包含64×64像素宏塊或32×32像素宏塊。

運動估計單元36與運動補償單元35可高度集成,但出于概念目的而單獨說明。運動估計是產生估計視頻塊的運動的運動向量的過程。運動向量(例如)可指示預測參考幀(或其它經譯碼單元)內的預測塊相對于當前幀(或其它經譯碼單元)內正被譯碼的當前塊的位移。預測塊是經發現在像素差異方面密切地匹配待譯碼的塊的塊,其可通過絕對差總和(SAD)、平方差總和(SSD)或其它差異量度來確定。

運動向量還可指示大宏塊的分區的位移。在關于具有一個32×64分區和兩個32×32分區的64×64像素宏塊的一個實例中,第一運動向量可指示32×64分區的位移,第二運動向量可指示32×32分區中的第一者的位移,且第三運動向量可指示32×32分區中的第二者的位移,所有位移均相對于參考幀中的對應分區。還可將所述分區視為視頻塊(在那些術語用于本發明中時)。運動補償可涉及基于運動估計所確定的運動向量來獲取或產生預測塊。同樣,運動估計單元36與運動補償單元35可在功能上集成。

運動估計單元36通過將經幀間譯碼的幀的視頻塊與參考幀存儲裝置34中的參考幀的視頻塊進行比較來計算經幀間譯碼的幀的視頻塊的運動向量。運動補償單元35還可內插參考幀(例如,I幀或P幀)的子整數像素。ITU?H.264標準將參考幀稱作“列表”。因此,還可將存儲于參考幀存儲裝置34中的數據視為列表。運動估計單元36將來自參考幀存儲裝置34的一個或一個以上參考幀(或列表)的塊與當前幀(例如,P幀或B幀)的待編碼的塊進行比較。當參考幀存儲裝置34中的參考幀包括用于子整數像素的值時,由運動估計單元36計算的運動向量可指代參考幀的子整數像素位置。運動估計單元36將經計算的運動向量發送到熵譯碼單元46和運動補償單元35。由運動向量識別的參考幀塊可稱作預測塊。運動補償單元35計算參考幀的預測塊的誤差值。

運動補償單元35可基于預測塊計算預測數據。視頻編碼器50通過從正經譯碼的原始視頻塊減去來自運動補償單元35的預測數據而形成殘余視頻塊。求和器48表示執行此減法運算的組件。變換單元38對殘余塊應用例如離散余弦變換(DCT)或概念上類似的變換的變換,從而產生包含殘余變換系數值的視頻塊。變換單元38可執行概念上類似于DCT的其它變換,例如由H.264標準界定的變換。還可使用小波變換、整數變換、子頻帶變換或其它類型的變換。在任何情況下,變換單元38對殘余塊應用變換,從而產生殘余變換系數的塊。所述變換可將殘余信息從像素值域轉換到變換域(例如,頻域)。

量化單元40將殘余變換系數量化以進一步減小位速率。量化過程可減少與一些系數或全部系數相關聯的位深度。在一個實例中,量化單元40可根據亮度量化參數(在本發明中稱作QPY)而建立用于每一64×64像素宏塊的不同程度的量化。量化單元40可基于量化參數修正符(其在本文中稱作“MB64_delta_QP”)和先前經編碼的64×64像素宏塊而進一步修改在64×64宏塊的量化期間所使用的亮度量化參數。

每一64×64像素的大宏塊可包含在-26與+25之間(包括-26與+25)的范圍內的個別MB64_delta_QP值。一般來說,視頻編碼器50可基于用于發射特定塊的經編碼版本的所要位速率而建立用于所述特定塊的MB64_delta_QP值。第一64×64像素宏塊的MB64_delta_QP值可等于包括第一64×64像素宏塊的幀或切片的QP值(例如,在幀/切片標頭中)。可根據下式來計算用于當前64×64像素宏塊的QPY:

QPY=(QPY,PREV+MB64_delta_QP+52)%52

其中QPY,PREV指代在當前切片/幀的解碼次序中的前一64×64像素宏塊的QPY值,且其中“%”指代模數運算符,使得N%52傳回在0與51之間(包括0與51)的結果,從而對應于N除以52的余數值。對于幀/切片中的第一宏塊,可將QPY,PREV設定為等于在幀/切片標頭中發送的幀/切片QP。

在一個實例中,量化單元40假定:當未針對特定64×64像素宏塊(包括“跳躍”型宏塊,例如,P_Skip和B_Skip宏塊類型)界定MB64_delta_QP值時,MB64_delta_QP值等于零。在一些實例中,可界定額外delta_QP值(一般稱作量化參數修改值)以用于64×64像素宏塊內的分區的較細粒度量化控制,例如用于64×64像素宏塊的每一32×32像素分區的MB32_delta_QP值。在一些實例中,64×64宏塊的每一分區可經指派一個別量化參數。代替針對64×64宏塊使用單一QP,針對每一分區使用個別化的量化參數可實現宏塊的更有效量化,(例如)以便更好地調整對非同質區域的量化。可將每一量化參數修改值作為語法信息與對應的經編碼塊包括在一起,且解碼器可通過根據量化參數修改值解量化(即,逆量化)經編碼塊來解碼經編碼塊。

在量化之后,熵譯碼單元46將經量化的變換系數進行熵譯碼。舉例來說,熵譯碼單元46可執行內容自適應可變長度譯碼(CAVLC)、上下文自適應二進制算術譯碼(CABAC),或另一熵譯碼技術。在由熵譯碼單元46進行熵譯碼之后,可將經編碼的視頻發射到另一裝置或將其存檔以用于稍后發射或檢索。經譯碼的位流可包括經熵譯碼的殘余變換系數塊、所述塊的運動向量、每一64×64像素宏塊的MB64_delta_QP值,和包括(例如)宏塊類型識別符值、指示經譯碼單元中的宏塊的最大大小的經譯碼單元標頭、QPY值、經譯碼塊模式(CBP)值、識別宏塊或子塊的分割方法的值,和變換大小旗標值的其它語法元素,如下文更詳細地論述。在上下文自適應二進制算術譯碼的情況下,上下文可基于相鄰宏塊。

在一些情況下,除熵譯碼之外,視頻編碼器50的熵譯碼單元46或另一單元可經配置以執行其它譯碼功能。舉例來說,熵譯碼單元46可經配置以確定大宏塊和分區的CBP值。熵譯碼單元46可應用分層CBP方案以提供大宏塊的指示宏塊中的任何分區是否包括非零變換系數值的CBP值,且如果是,則提供用于指示大宏塊內的特定分區是否具有非零變換系數值的其它CBP值。而且,在一些情況下,熵譯碼單元46可執行對大宏塊或子分區中的系數的游程長度譯碼。具體來說,熵譯碼單元46可應用曲折掃描或其它掃描模式以掃描宏塊或分區中的變換系數,且編碼零的游程以用于進一步壓縮。熵譯碼單元46還可用適當的語法元素建構標頭信息以用于在經編碼視頻位流中進行發射。

逆量化單元42和逆變換單元44分別應用逆量化和逆變換,以重構像素域中的殘余塊,(例如)以用于稍后用作參考塊。運動補償單元35可通過將殘余塊加到參考幀存儲裝置34的幀中的一者的預測塊來計算參考塊。運動補償單元35還可對經重構的殘余塊應用一個或一個以上內插濾波器以計算子整數像素值。求和器51將經重構的殘余塊加到由運動補償單元35產生的經運動補償的預測塊以產生用于存儲于參考幀存儲裝置34中的經重構的視頻塊。經重構的視頻塊可由運動估計單元36和運動補償單元35用作用于對后續視頻幀中的塊進行幀間譯碼的參考塊。大宏塊可包含64×64像素宏塊、32×32像素宏塊,或大于由常規視頻譯碼標準規定的大小的其它宏塊。

圖3為說明視頻解碼器60的一實例的方框圖,視頻解碼器60解碼以本發明中所描述的方式編碼的視頻序列。經編碼的視頻序列可包括大于由常規視頻編碼標準規定的大小的經編碼的宏塊。舉例來說,經編碼的宏塊可為32×32像素或64×64像素宏塊。在圖3的實例中,視頻解碼器60包括熵解碼單元52、運動補償單元54、幀內預測單元55、逆量化單元56、逆變換單元58、參考幀存儲裝置62和求和器64。視頻解碼器60在一些實例中可執行一般與關于視頻編碼器50(圖2)所描述的編碼遍次互逆的解碼遍次。運動補償單元54可基于從熵解碼單元52接收的運動向量產生預測數據。

熵解碼單元52對所接收的位流進行熵解碼以產生經量化的系數和語法元素(例如,運動向量、CBP值、QPY值、變換大小旗標值、MB64_delta_QP值)。熵解碼單元52可解析位流以識別經譯碼單元(例如,幀、切片和/或宏塊標頭)中的語法信息。包含多個宏塊的經譯碼單元的語法信息可指示經譯碼單元中的宏塊(例如,16×16像素、32×32像素、64×64像素,或其它較大大小的宏塊)的最大大小。(例如)視塊的譯碼模式而定,將塊的語法信息從熵譯碼單元52轉發到運動補償單元54或幀內預測單元55。解碼器可使用經譯碼單元的語法中的最大大小指示符來選擇用于所述經譯碼單元的語法解碼器。通過使用針對所述最大大小而指定的語法解碼器,解碼器可接著適當地解譯和處理包括于所述經譯碼單元中的大宏塊。

運動補償單元54可使用在位流中所接收的運動向量來識別參考幀存儲裝置62中的參考幀中的預測塊。幀內預測單元55可使用在位流中所接收的幀內預測模式以從空間上鄰近的塊形成預測塊。逆量化單元56將提供于位流中且由熵解碼單元52解碼的經量化的塊系數逆量化(即,解量化)。逆量化過程可包括(例如)如通過H.264解碼標準界定的常規過程。逆量化過程還可包括使用由編碼器50針對每一64×64宏塊計算的用以確定量化的程度且同樣應該應用的逆量化的程度的量化參數QPY。

逆變換單元58對變換系數應用逆變換(例如,逆DCT、逆整數變換,或概念上類似的逆變換過程),以便產生像素域中的殘余塊。運動補償單元54產生經運動補償的塊,可能執行基于內插濾波器的內插。待用于具有子像素精度的運動估計的內插濾波器的識別符可包括在語法元素中。運動補償單元54可使用如由視頻編碼器50在視頻塊的編碼期間所使用的內插濾波器來計算參考塊的子整數像素的內插值。運動補償單元54可根據所接收的語法信息來確定由視頻編碼器50使用的內插濾波器且使用所述內插濾波器來產生預測塊。

運動補償單元54使用一些語法信息來確定用于編碼經編碼視頻塊的(多個)幀的宏塊的大小、描述經編碼視頻序列的幀的每一宏塊經分割的方式的分割信息、指示每一分區經編碼的方式的模式、用于每一經幀間編碼的宏塊或分區的一個或一個以上參考幀(或列表),和用于解碼經編碼視頻序列的其它信息。

求和器64將殘余塊與由運動補償單元54或幀內預測單元產生的對應預測塊求和以形成經解碼的塊。在需要時,還可應用解塊濾波器以對經解碼的塊進行濾波以便移除成塊性假影。接著將經解碼的視頻塊存儲于參考幀存儲裝置62中,參考幀存儲裝置62提供用于后續運動補償的參考塊且還產生用于在顯示裝置(例如,圖1的裝置32)上呈現的經解碼視頻。經解碼視頻塊可各自包含64×64像素宏塊、32×32像素宏塊,或其它大于標準的宏塊。一些宏塊可包括具有多種不同分區大小的分區。

圖4A為說明大宏塊的各種分區層級中的實例分割的概念圖。每一分區層級的塊包括對應于特定層級的若干像素。還針對每一層級展示四個分割模式,其中第一分割模式包括整個塊,第二分割模式包括相等大小的兩個水平分區,第三分割模式包括相等大小的兩個垂直分區,且第四分割模式包括四個相等大小的分區。可針對每一分區層級的每一分區選擇所述分割模式中的一者。

在圖4A的實例中,層級0對應于亮度樣本和相關聯的色度樣本的64×64像素宏塊分區。層級1對應于亮度樣本和相關聯的色度樣本的32×32像素塊。層級2對應于亮度樣本和相關聯的色度樣本的16×16像素塊,且層級3對應于亮度樣本和相關聯的色度樣本的8×8像素塊。

在其它實例中,可引入額外層級以利用更大或更小數目個像素。舉例來說,層級0可開始于128×128像素宏塊、256×256像素宏塊或其它較大大小的宏塊。最高編號的層級在一些實例中可精細到單一像素(即,1×1塊)。因此,從最低層級到最高層級,可將分割逐步子分割,使得宏塊被分割,分區被進一步分割,所得分區被再進一步分割,等等。在一些情況中,低于層級0的分區(即,分區的分區)可稱作子分區。

當使用四個相等大小的子塊分割一個層級處的塊時,可根據下一個層級的分割模式來分割子塊中的任一者或全部。即,對于在層級x處經分割成四個相等大小的子塊(N/2)×(N/2)的N×N塊,可根據層級x+1的分割模式中的任一者進一步分割(N/2)×(N/2)子塊中的任一者。因此,可根據圖4A中所展示的層級1處的模式(例如,32×32、32×16與32×16、16×32與16×32,或16×16、16×16、16×16與16×16)中的任一者進一步分割層級0處的64×64像素宏塊的32×32像素子塊。同樣地,在由經分割的32×32像素子塊產生四個16×16像素子塊的情況下,可根據圖4A中所展示的層級2處的模式中的任一者進一步分割16×16像素子塊中的每一者。在由經分割的16×16像素子塊產生四個8×8像素子塊的情況下,可根據圖4A中所展示的層級3處的模式中的任一者進一步分割8×8像素子塊中的每一者。

通過使用圖4A中所展示的分區的實例四個層級,可通過實施本發明的架構和技術的編碼器來自適應地表示大的同質區域和細小的零星改變。舉例來說,視頻編碼器50可(例如)基于速率-失真分析確定不同宏塊的不同分割層級,以及對所述分區應用的編碼模式。而且,如下文更詳細地描述,視頻編碼器50可(例如)基于速率-失真量度結果或其它考慮事項而使用空間(P編碼或B編碼)或時間(I編碼)預測來不同地編碼最終分區中的至少一些分區。

代替均勻地編碼大宏塊而使得所有分區均具有相同的幀內譯碼模式或幀間譯碼模式,可譯碼大宏塊以使得一些分區具有不同譯碼模式。舉例來說,可用相對于同一宏塊中的其它(至少一個)分區來說不同的幀內譯碼模式(例如,I_16×16、I_8×8、I_4×4)譯碼一些(至少一個)分區。而且,可對一些(至少一個)分區進行幀內譯碼而對同一宏塊中的其它(至少一個)分區進行幀間譯碼。

舉例來說,對于具有四個16×16分區的32×32塊,視頻編碼器50可使用空間預測來編碼16×16分區中的一些分區,且使用時間預測來編碼其它16×16分區。作為另一實例,對于具有四個16×16分區的32×32塊,視頻編碼器50可使用第一預測模式(例如,I_16×16、I_8×8、I_4×4中的一者)來編碼16×16分區中的一者或一者以上,且使用不同的空間預測模式(例如,I_16×16、I_8×8、I_4×4中的一者)來編碼一個或一個以上其它16×16分區。

圖4B為說明將不同譯碼模式指派到大宏塊的不同分區的概念圖。具體來說,圖4B說明將I_16×16幀內譯碼模式指派到大的32×32宏塊的左上部16×16塊、將I_8×8幀內譯碼模式指派到大的32×32宏塊的右上部和左下部16×16塊和將I_4×4幀內譯碼模式指派到大的32×32宏塊的右下部16×16塊。在一些情況下,圖4B中所說明的譯碼模式可為用于亮度譯碼的H.264幀內譯碼模式。

以所描述的方式,可有選擇地進一步分割每一分區,且可使用時間預測或空間預測并使用選定的時間譯碼模式或空間譯碼模式選擇性地譯碼每一最終分區。因此,有可能用混合模式譯碼大宏塊,以使得宏塊中的一些分區經幀內譯碼且同一宏塊中的其它分區經幀間譯碼,或用不同的幀內譯碼模式或不同的幀間譯碼模式譯碼同一宏塊中的一些分區。

視頻編碼器50可根據宏塊類型進一步界定每一分區。可將宏塊類型作為語法元素包括于經編碼位流中,例如作為宏塊標頭中的語法元素。一般來說,宏塊類型可用于識別宏塊經分割的方式,和用于編碼宏塊的分區中的每一者的相應方法或模式,如上文所論述。用于編碼分區的方法可不僅包括幀內譯碼和幀間譯碼,而且還包括特定模式的幀內譯碼(例如,I_16×16、I_8×8、I_4×4)或幀間譯碼(例如,P_或B_16×16、16×8、8×16、8×8、8×4、4×8和4×4)。

如下文針對P塊關于表1的實例和針對B塊關于表2的實例更詳細地論述,可根據表示具有64×64像素的宏塊的MB64_type語法元素界定分區層級0塊。可針對任何MB[N]_type(其中,[N]指代具有N×N像素的塊,其中N為可大于16的正整數)形成類似類型的界定。當N×N塊具有大小為(N/2)×(N/2)的四個分區時(如圖4A上的最后一列中所展示),所述四個分區中的每一者可接收其自身類型的界定(例如,MB[N/2]_type)。舉例來說,對于具有四個32×32像素分區的64×64像素塊(MB64_type的類型),視頻編碼器50可針對四個32×32像素分區中的每一者引入MB32_type。這些宏塊類型語法元素可輔助解碼器60解碼大宏塊和大宏塊的各種分區,如本發明中所描述。每一N×N像素宏塊(其中N大于16)一般對應于唯一類型的界定。因此,編碼器可產生適合于特定宏塊的語法,且向解碼器指示經譯碼單元(例如,幀、切片,或宏塊的序列)中的宏塊的最大大小。以此方式,解碼器可接收將應用于經譯碼單元的宏塊的語法解碼器的指示。此還確保解碼器可與現有譯碼標準(例如,H.264)向后兼容,因為編碼器可指示將應用于宏塊的語法解碼器的類型(例如,標準的H.264或根據本發明的技術針對較大宏塊的處理而指定的類型)。

一般來說,對于對應類型,每一MB[N]_type界定可表示對應類型(例如,64×64)的塊中的像素的數目、塊的參考幀(或參考列表)、塊的分區的數目、塊的每一分區的大小、每一分區經編碼的方式(例如,幀內或幀間和特定模式),和當分區經幀間譯碼時塊的每一分區的參考幀(或參考列表)。對于16×16和更小的塊,視頻編碼器50在一些實例中可使用常規類型的界定作為塊的類型(例如,由H.264標準指定的類型)。在其它實例中,視頻編碼器50可對16×16和更小的塊應用新界定的塊類型。

視頻編碼器50可評估使用正常宏塊大小和分區的常規幀間或幀內譯碼方法(例如,由ITU?H.264規定的方法)和由本發明描述的使用較大宏塊和分區的幀間或幀內譯碼方法,且比較每一方法的速率-失真特性以確定哪種方法產生最好的速率-失真性能。視頻編碼器50接著可基于譯碼方法的最佳或可接受的速率-失真結果來選擇最好的譯碼方法(包括幀間或幀內模式、宏塊大小(大的、較大或正常),和分割),且將其應用于待譯碼的塊。作為一說明,視頻編碼器50可基于當視頻編碼器使用64×64宏塊、32×32宏塊或16×16宏塊大小時所產生的速率-失真結果而選擇使用64×64宏塊、32×32宏塊或16×16宏塊來編碼特定幀或切片。

一般來說,可使用兩種不同方法來設計使用大宏塊的幀內模式。作為一個實例,在幀內譯碼期間,可直接基于相鄰塊對塊執行空間預測。根據本發明的技術,視頻編碼器50可直接基于塊的相鄰像素產生空間預測32×32塊,且直接基于塊的相鄰像素產生空間預測64×64塊。以此方式,與16×16幀內塊相比,可以較大規模執行空間預測。因此,這些技術在一些實例中可導致一些位速率節省,例如,每一幀或切片使用較小數目個塊或分區。

作為另一實例,視頻編碼器50可將四個N×N塊分組在一起以產生(N*2)×(N*2)塊,且接著編碼所述(N*2)×(N*2)塊。通過使用現有H.264幀內譯碼模式,視頻編碼器50可將四個經幀內譯碼的塊分組在一起,借此形成大的經幀內譯碼的宏塊。舉例來說,可將四個經幀內譯碼的塊(每一者具有16×16的大小)分組在一起以形成大的32×32的經幀內譯碼的塊。視頻編碼器50可使用不同編碼模式(例如,根據H.264的I_16×16、I_8×8或I_4×4)編碼四個對應的N×N塊中的每一者。以此方式,可通過視頻編碼器50向每一16×16塊指派其自身的空間預測模式,(例如)以促進有利的編碼結果。

視頻編碼器50可根據上文所論述的兩種不同方法中的任一者設計幀內模式,且分析所述不同方法以確定哪種方法提供更好的編碼結果。舉例來說,視頻編碼器50可應用不同的幀內模式方法,且將其置于單一候選池中以允許其彼此競爭以達到最好的速率-失真性能。通過使用不同方法之間的速率-失真比較,視頻編碼器50可確定如何編碼每一分區和/或宏塊。具體來說,視頻編碼器50可選擇針對給定宏塊產生最好的速率-失真性能的譯碼模式,且應用那些譯碼模式來編碼所述宏塊。

圖5為說明大宏塊的各種分區層級的分層視圖的概念圖。圖5還表示如關于圖4A所描述的大宏塊的各種分區層級之間的關系。如圖5的實例中所說明,一分區層級的每一塊可具有對應的經譯碼塊模式(CBP)值。所述CBP值形成描述一塊或宏塊的語法信息的一部分。在一個實例中,CBP值各自為指示在變換和量化運算之后在給定塊中是否存在任何非零變換系數值的一位語法值。

在一些情況下,預測塊可能在像素內容上非常接近于待譯碼的塊,使得全部殘余變換系數被量化成零,在所述情況下,可能不需要發射用于所述經譯碼塊的變換系數。而是,可將用于塊的CBP值設定為0以指示經譯碼塊不包括非零系數。或者,如果塊包括至少一個非零系數,則可將CBP值設定為1。解碼器60可使用CBP值來識別經譯碼的殘余塊(即,具有一個或一個以上非零變換系數)與未經譯碼的塊(即,不包括非零變換系數)。

根據本發明中所描述的技術中的一些,編碼器可基于大宏塊(包括其分區)是否具有至少一個非零系數而分層地將CBP值指派到那些宏塊,且將CBP值指派到所述分區以指示哪些分區具有非零系數。大宏塊的分層CBP可促進對大宏塊的處理以迅速地識別經譯碼的大宏塊和未經譯碼的大宏塊,且準許識別大宏塊的每一分區層級的經譯碼分區以確定是否有必要使用殘余數據來解碼所述塊。

在一個實例中,層級零處的64×64像素宏塊可包括包含CBP64值(例如,一位值)的語法信息,所述CBP64值用以指示整個64×64像素宏塊(包括任何分區)是否具有非零系數。在一個實例中,視頻編碼器50將CBP64位“設定”(例如)到值“1”,以表示64×64像素宏塊包括至少一個非零系數。因此,當將CBP64值設定(例如)到值“1”時,64×64像素宏塊在其中某處包括至少一個非零系數。在另一實例中,視頻編碼器50將CBP64值“清除”(例如)到值“0”,以表示64×64像素宏塊具有全零系數。因此,當將CBP64值清除(例如)到值“0”時,指示64×64像素宏塊為具有全零系數。具有為“0”的CBP64值的宏塊一般不需要在位流中發射殘余數據,而具有為“1”的CBP64值的宏塊一般需要在位流中發射殘余數據以用于解碼所述宏塊。

具有全零系數的64×64像素宏塊不需要包括用于其分區或子塊的CBP值。即,因為64×64像素宏塊具有全零系數,所以所述分區中的每一者也必定具有全零系數。相反地,包括至少一個非零系數的64×64像素宏塊可進一步包括用于下一分區層級處的分區的CBP值。舉例來說,具有值1的CBP64可包括用于64×64塊的每一32×32分區的呈一位值CBP32的形式的額外語法信息。即,在一個實例中,64×64像素宏塊的每一32×32像素分區(例如,圖5中的層級1的四個分區塊)經指派有CBP32值作為64×64像素宏塊的語法信息的一部分。與CBP64值一樣,每一CBP32值可包含一位,所述位在對應的32×32像素塊具有至少一個非零系數時被設定為值1,且在對應的32×32像素塊具有全零系數時被清除到值0。編碼器可進一步在包含多個宏塊的經譯碼單元(例如,幀、切片或序列)的語法中指示經譯碼單元中的宏塊的最大大小,以向解碼器指示如何解譯每一宏塊的語法信息(例如,將哪個語法解碼器用于處理經譯碼單元中的宏塊)。

以此方式,具有全零系數的64×64像素宏塊可使用單一位來表示宏塊具有全零系數的事實,而具有至少一個非零系數的64×64像素宏塊可包括包含至少五個位的CBP語法信息:用于表示64×64像素宏塊具有非零系數的第一位,和各自表示宏塊的四個32×32像素分區中的對應一者是否包括至少一個非零系數的四個額外位。在一些實例中,當四個額外位中的前三者為零時,可不包括第四額外位,解碼器可將其解譯為最后分區為一。即,在前三個位為零時且在表示較高層級階層的位具有值1時,編碼器可確定最后位具有值1。舉例來說,可將CBP64前綴值“10001”縮短到“1000”,因為第一位指示四個分區中的至少一者具有非零系數,且接下來三個零指示前三個分區具有全零系數。因此,解碼器可(例如)從位串“1000”推斷出:最后分區包括非零系數,而不具有向解碼器通知所述事實的顯式位。即,解碼器可將CBP64前綴“1000”解譯為“10001”。

同樣地,當32×32像素分區包括至少一個非零系數時,可將一位CBP32設定為值“1”,且當全部系數具有零值時,將一位CBP32設定為值“0”。如果32×32像素分區具有為“1”的CBP值,則那個32×32分區的在下一個分區層級處的分區可經指派有CBP值,以指示相應分區是否包括任何非零系數。因此,可在每一分區層級處以分層方式指派CBP值,直到不存在其它分區層級或不存在包括非零系數的分區為止。

以上述方式,編碼器和/或解碼器可利用分層的CBP值來表示大宏塊(例如,64×64或32×32)和其分區是否包括至少一個非零系數或全零系數。因此,編碼器可:編碼數字視頻流的經譯碼單元的大宏塊,以使得所述大宏塊包含大于16×16像素;產生識別所述塊的大小的塊類型語法信息;產生用于所述塊的CBP值,以使得所述CBP值識別所述塊是否包括至少一個非零系數;以及在可適用時產生用于所述塊的各種分區層級的額外CBP值。

在一個實例中,分層的CBP值可包含位陣列(例如,位向量),所述位陣列的長度視前綴的值而定。所述陣列可進一步表示CBP值的階層(例如,樹結構),如圖5中所展示。所述陣列可以寬度優先(breadth-first)方式表示樹的節點,其中每一節點對應于陣列中的一位。在一個實例中,當樹的節點具有經設定為“1”的位時,所述節點具有四個分支(對應于四個分區),且當所述位被清除到“0”時,所述節點不具有分支。

在此實例中,為了識別從特定節點X分岔的節點的值,編碼器和/或解碼器可通過計算下式來確定表示從節點x分岔的節點的從節點Y開始的四個連續位:

y=(4*Σi=0xtree[i])-3]]>

其中tree[]對應于具有為0的開始索引的位陣列,i為到陣列tree[]中的整數索引,x對應于tree[]中的節點X的索引,且y對應于為節點X的第一分支節點的節點Y的索引。三個后續陣列位置(即,y+1、y+2,和y+3)對應于節點X的其它分支節點。

編碼器(例如,視頻編碼器50(圖2))可使用現有方法(例如,由ITU?H.264規定的用于設定16×16塊的CBP值的方法)指派具有至少一個非零系數的32×32像素分區的16×16像素分區的CBP值,以作為64×64像素宏塊的語法的一部分。編碼器還可基于分區的大小、對應于分區的塊的類型(例如,色度塊或亮度塊),或分區的其它特性而選擇具有至少一個非零系數的32×32像素分區的分區的CBP值。參看圖8和圖9進一步詳細論述用于設定32×32像素分區的分區的CBP值的實例方法。

圖6到圖9為說明根據本發明的技術的用于設定各種經譯碼塊模式(CBP)值的實例方法的流程圖。雖然圖6到圖9的實例方法是相對于64×64像素宏塊而論述的,但應理解,類似技術可適用于指派其它大小的宏塊的分層CBP值。雖然圖6到圖9的實例是相對于視頻編碼器50(圖2)而論述的,但應理解,其它編碼器可使用類似方法來將CBP值指派到大于標準的宏塊。同樣地,解碼器可利用類似的、但互逆的方法來解譯宏塊的特定CBP值的意義。舉例來說,如果在位流中所接收的經幀間譯碼的宏塊具有為“0”的CBP值,則解碼器可不接收所述宏塊的殘余數據,且可僅產生由運動向量識別的預測塊作為經解碼的宏塊,或由相對于所述宏塊的分區的運動向量而識別的預測塊群組。

圖6為說明用于設定一實例64×64像素宏塊的CBP64值的實例方法的流程圖。可對大于64×64的宏塊應用類似方法。最初,視頻編碼器50接收64×64像素宏塊(100)。運動估計單元36和運動補償單元35可接著分別產生用于編碼所述宏塊的一個或一個以上運動向量和一個或一個以上殘余塊。變換單元38的輸出一般包含用于經幀內譯碼的塊或經幀間譯碼的塊的殘余塊的殘余變換系數值陣列,所述陣列由量化單元40量化以產生一系列經量化的變換系數。

熵譯碼單元46可提供熵譯碼和與熵譯碼分離的其它譯碼功能。舉例來說,除CAVLC、CABAC或其它熵譯碼功能外,視頻編碼器50的熵譯碼單元46或另一單元可確定用于大宏塊和分區的CBP值。具體來說,熵譯碼單元46可通過首先確定64×64像素宏塊是否具有至少一個非零的、經量化的變換系數來確定所述宏塊的CBP64值(102)。當熵譯碼單元46確定所有變換系數具有零值時(102的“否”分支),熵譯碼單元46清除64×64宏塊的CBP64值(例如,將用于CBP64值的位復位到“0”)(104)。當熵譯碼單元46識別出64×64宏塊的至少一個非零系數時(102的“是”分支),熵譯碼單元46設定CBP64值(例如,將用于CBP64值的位設定為“1”)(106)。

當宏塊具有全零系數時,熵譯碼單元46不需要建立用于宏塊的分區的任何額外CBP值,此可減少開銷。然而,在一個實例中,當宏塊具有至少一個非零系數時,熵譯碼單元46進行到確定用于64×64像素宏塊的四個32×32像素分區中的每一者的CBP值(108)。熵譯碼單元46可將關于圖7所描述的方法利用四次,每次針對所述四個分區中的一者,以建立四個CBP32值,每一CBP32值對應于64×64宏塊的四個32×32像素分區中的不同一者。以此方式,當宏塊具有全零系數時,熵譯碼單元46可發射具有值“0”的單一位以指示宏塊具有全零系數,而當宏塊具有至少一個非零系數時,熵譯碼單元46可發射五個位:用于宏塊的一位,和各自對應于宏塊的四個分區中的一者的四個位。另外,當分區包括至少一個非零系數時,可在經編碼位流中發送用于分區的殘余數據。與上文所論述的CBP64的實例一樣,當四個額外位中的前三者為零時,第四額外位可能不必要,因為解碼器可確定其具有值1。因此,在一些實例中,編碼器可僅發送三個0(即,“000”)而不是三個0和一個1(即,“0001”)。

圖7為說明用于設定64×64像素宏塊的32×32像素分區的CBP32值的實例方法的流程圖。最初,對于下一個分區層級,熵譯碼單元46接收宏塊的32×32像素分區(例如,關于圖6參看的四個分區中的一者)(110)。熵譯碼單元46接著通過首先確定32×32像素分區是否包括至少一個非零系數來確定用于所述分區的CBP32值(112)。當熵譯碼單元46確定用于分區的所有系數具有零值時(112的“否”分支),熵譯碼單元46清除CBP32值(例如,將用于CBP32值的位復位到“0”)(114)。當熵譯碼單元46識別出分區的至少一個非零系數時(112的“是”分支),熵譯碼單元46設定CBP32值(例如,將用于CBP32值的位設定為值“1”)(116)。

在一個實例中,當分區具有全零系數時,熵譯碼單元46不會建立用于所述分區的任何額外CBP值。然而,當分區包括至少一個非零系數時,熵譯碼單元46確定用于宏塊的32×32像素分區的四個16×16像素分區中的每一者的CBP值。熵譯碼單元46可利用關于圖8所描述的方法來建立各自對應于四個16×16像素分區中的一者的四個CBP16值。

以此方式,當分區具有全零系數時,熵譯碼單元46可設定具有值“0”的位以指示分區具有全零系數,而當分區具有至少一個非零系數時,熵譯碼單元46可包括五個位:用于分區的一個位,和各自對應于宏塊的分區的四個子分區中的不同一者的四個位。因此,當前一分區層級中的分區具有至少一個非零變換系數值時,每一額外分區層級可呈現四個額外CBP位。作為一個實例,如果64×64宏塊具有為1的CBP值,且四個32×32分區具有分別為1、0、1和1的CBP值,則直到那個點的總的CBP值為11011。可添加用于32×32分區的額外分區(例如,16×16分區)的額外CBP位。

圖8為說明用于設定64×64像素宏塊的32×32像素分區的16×16像素分區的CBP16值的實例方法的流程圖。對于特定16×16像素分區,視頻編碼器50可利用如由視頻譯碼標準(例如,ITU?H.264)規定的CBP值,如下文所論述。對于其它16×16分區,視頻編碼器50可利用根據本發明的其它技術的CBP值。最初,如圖8中所展示,熵譯碼單元46接收16×16分區(例如,關于圖7所描述的32×32分區的16×16分區中的一者)(120)。

熵譯碼單元46可接著確定16×16像素分區的運動分區是否大于8×8像素塊(122)。一般來說,運動分區描述其中運動較為集中的分區。舉例來說,可將僅具有一個運動向量的16×16像素分區視為一16×16運動分區。類似地,對于具有各自具有一個運動向量的兩個8×16分區的16×16像素分區,可將兩個8×16分區中的每一者視為一8×16運動分區。在任何情況下,在圖8的實例中,當運動分區不大于8×8像素塊時(122的“否”分支),熵譯碼單元46以與由ITU?H.264規定的方式相同的方式將CBP值指派到16×16像素分區(124)。

當存在16×16像素分區的大于8×8像素塊的運動分區時(122的“是”分支),熵譯碼單元46使用步驟125之后的步驟建構和發送lumacbp16值(125)。在圖8的實例中,為了建構lumacbp16值,熵譯碼單元46確定分區的16×16像素亮度分量是否具有至少一個非零系數(126)。在圖8的實例中,當16×16像素亮度分量具有全零系數時(126的“否”分支),熵譯碼單元46指派根據ITU?H.264的經譯碼塊模式色度部分的CBP16值(128)。

當熵譯碼單元46確定16×16像素亮度分量具有至少一個非零系數時(126的“是”分支),熵譯碼單元46確定16×16像素分區的變換大小旗標(130)。變換大小旗標一般指示正用于所述分區的變換。由變換大小旗標表示的變換可包括4×4變換、8×8變換、16×16變換、16×8變換或8×16變換中的一者。變換大小旗標可包含整數值,其對應于識別可能變換中的一者的所列舉值。熵譯碼單元46可接著確定變換大小旗標是否表示變換大小大于或等于16×8(或8×16)(132)。

在圖8的實例中,當變換大小旗標不指示變換大小大于或等于16×8(或8×16)時(132的“否”分支),熵譯碼單元46將一值指派到根據ITU?H.264的CBP16(134)。當變換大小旗標指示變換大小大于或等于16×8(或8×16)時(132的“是”分支),熵譯碼單元46接著確定16×16像素分區的類型是否為兩個16×8像素分區或兩個8×16像素分區(136)。

在圖8的實例中,當16×16像素分區的類型不是兩個16×8像素分區且不是兩個8×16像素分區時(138的“否”分支),熵譯碼單元46指派根據由ITU?H.264規定的色度經譯碼塊分區的CBP16值(140)。當16×16像素分區的類型為兩個16×8或兩個8×16像素分區時(138的“是”分支),熵譯碼單元46還使用由ITU?H.264規定的色度經譯碼塊模式,但另外向CBP16值指派二位luma16×8_CBP值(例如,根據關于圖9所描述的方法)(142)。

圖9為說明用于確定二位luma16×8_CBP值的實例方法的流程圖。熵譯碼單元46接收經進一步分割成兩個16×8或兩個8×16像素分區的16×16像素分區(150)。熵譯碼單元46一般根據16×16像素分區的對應子塊是否包括至少一個非零系數來指派luma16×8_CBP的每一位。

熵譯碼單元46確定16×16像素分區的第一子塊是否具有至少一個非零系數,以確定第一子塊是否具有至少一個非零系數(152)。當第一子塊具有全零系數時(152的“否”分支),熵譯碼單元46清除luma16×8_CBP的第一位(例如,將luma16×8_CBP[0]指派為值“0”)(154)。當第一子塊具有至少一個非零系數時(152的“是”分支),熵譯碼單元46設定luma16×8_CBP的第一位(例如,將luma16×8_CBP[0]指派為值“1”)(156)。

熵譯碼單元46還確定16×16像素分區的第二子分區是否具有至少一個非零系數(158)。當第二子分區具有全零系數時(158的“否”分支),熵譯碼單元46清除luma16×8_CBP的第二位(例如,將luma16×8_CBP[1]指派為值“0”)(160)。當第二子塊具有至少一個非零系數時(158的“是”分支),熵譯碼單元46接著設定luma16×8_CBP的第二位(例如,將luma16×8_CBP[1]指派為值“1”)(162)。

以下偽碼提供關于圖8和圖9所描述的方法的一個實例實施方案:

在所述偽碼中,“lumacbp16”對應于附加指示整個16×16亮度塊是否具有非零系數的一位旗標的運算。當“lumacbp16”等于1時,存在至少一個非零系數。函數“Transform_size_flag”指代具有指示所使用的變換(例如,4×4變換、8×8變換、16×16變換(用于等于或大于16×16的運動分區)、16×8變換(用于P_16×8)或8×16變換(用于P_8×16)中的一者)的結果的所執行的計算。TRANSFORM_SIZE_GREATER_THAN_16×8為用于指示變換大小大于或等于16×8或8×16的所列舉值(例如,“2”)。將transform_size_flag的結果并入64×64像素宏塊的語法信息中。

“Luma16×8_cbp”指代產生二位數的計算,其中每一位指示兩個分區P_16×8或P_8×16中的一者是否具有非零系數。將由luma16×8_cbp產生的二位數并入64×64像素宏塊的語法中。可以與如由ITU?H.264規定的CodedBlockPatternChroma相同的方式計算值“chroma_cbp”。將所計算的chroma_cbp值并入64×64像素宏塊的語法信息中。可以與ITU?H.264中所界定的CBP相同的方式計算函數h264_cbp。將所計算的H264_cbp值并入64×64像素宏塊的語法信息中。

一般來說,根據圖6到圖9的方法可包括:用視頻編碼器編碼具有大于16×16像素的大小的視頻塊;產生指示所述塊的大小的塊類型語法信息;以及產生用于所述經編碼塊的經譯碼塊模式值,其中所述經譯碼塊模式值指示所述經編碼塊是否包括至少一個非零系數。

圖10為說明64×64像素宏塊的一實例布置的方框圖。圖10的宏塊包含在圖10中經標記為A、B、C和D的四個32×32分區。如關于圖4A所論述,在一個實例中,可以以下四種方式中的任一者分割一塊:不具有子分區的整個塊(64×64)、兩個相等大小的水平分區(32×64和32×64)、兩個相等大小的垂直分區(64×32和64×32),或四個相等大小的正方形分區(32×32、32×32、32×32和32×32)。

在圖10的實例中,整個塊分區包含塊A、B、C和D中的每一者;兩個相等大小的水平分區中的第一者包含A和B,而兩個相等大小的水平分區中的第二者包含C和D;兩個相等大小的垂直分區中的第一者包含A和C,而兩個相等大小的垂直分區中的第二者包含B和D;且四個相等大小的正方形分區對應于A、B、C和D中的每一者中的一者。類似分區方案可用于任何大小的塊,例如,大于64×64像素、32×32像素、16×16像素、8×8像素,或其它大小的視頻塊。

當對一視頻塊進行幀內譯碼時,各種方法可用于分割所述視頻塊。此外,可對分區中的每一者進行不同地幀內譯碼(即,用不同模式,例如不同的幀內模式)。舉例來說,可將32×32分區(例如,圖10的分區A)進一步分割成大小為16×16像素的四個相等大小的塊。作為一個實例,ITU?H.264描述用于對16×16宏塊進行幀內編碼的三種不同方法,包括在16×16層級處的幀內譯碼、在8×8層級處的幀內譯碼,和在4×4層級處的幀內譯碼。然而,ITU?H.264規定使用相同幀內譯碼模式編碼16×16宏塊的每一分區。因此,根據ITU?H.264,如果16×16宏塊的一個子塊將在4×4層級處被幀內譯碼,則16×16宏塊的每個子塊都必須在4×4層級處被幀內譯碼。

另一方面,根據本發明的技術配置的編碼器可應用混合模式方法。對于幀內譯碼,例如,大宏塊可具有用不同譯碼模式編碼的各種分區。作為一說明,(例如,如圖4B中所展示)在32×32分區中,一個16×16分區可在4×4像素層級處被幀內譯碼,而其它16×16分區可在8×8像素層級處被幀內譯碼,且一個16×16分區可在16×16層級處被幀內譯碼。

當將把一視頻塊分割成用于幀內譯碼的四個相等大小的子塊時,待進行幀內譯碼的第一塊可為左上部塊,隨后是緊接在第一塊右方的塊,隨后是緊接在第一塊下方的塊,且最后是第一塊的右下方的塊。參考圖10的實例塊,幀內譯碼的次序將從A進行到B到C且最后到D。雖然圖1O描繪64×64像素宏塊,但對不同大小的經分割塊的幀內譯碼可遵循此相同排序。

當一視頻塊將作為P幀或P切片的一部分被幀間譯碼時,可將所述塊分割成四個上文所描述的分區中的任一者,所述四個分區中的每一者可被單獨編碼。即,可根據不同編碼模式(幀內編碼(I譯碼)或參考單一參考幀/切片/列表的幀間編碼(P譯碼))編碼所述塊的每一分區。以下表1概述用于大小為N×N的塊的每一潛在可能分區的幀間編碼信息。在表1參看“M”的位置,M=N/2。在下文的表1中,L0指代“列表0”(即,參考幀/切片/列表)。當決定如何最好地分割N×N塊時,編碼器(例如,視頻編碼器50)可基于拉格朗日乘數分析每一MB_N_type(即,每一分區類型)的速率-失真成本信息(如關于圖11更詳細地論述),從而選擇最低成本作為最好的分割方法。

表1

在以上表1中,“MB_N_type”列的元素為N×N塊的每一分區類型的關鍵。“MB_N_type的名稱”列的元素為N×N塊的不同分割類型的名稱。名稱中的“P”指代使用P譯碼(即,參考單一幀/切片/列表)來幀間譯碼塊。名稱中的“L0”指代用作P譯碼的參考幀或切片的參考幀/切片/列表(例如,“列表0”)。“N×N”指代分區為整個塊,“N×M”指代分區為寬度N和高度M的兩個分區,“M×N”指代分區為寬度M和高度N的兩個分區,“M×M”指代分區為各自具有寬度M和高度M的四個相等大小的分區。

在表1中,PN_Skip暗示“跳過”所述塊,(例如)因為由譯碼產生的塊具有全零系數。“預測模式部分1”列的元素指代用于分區的子分區1的參考幀/切片/列表,而“預測模式部分2”列的元素指代用于分區的子分區2的參考幀/切片/列表。因為P_L0_N×N僅具有單一分區,所以“預測模式部分2”的對應元素為“N/A”,因為不存在第二子分區。對于PN_M×M,存在可經單獨編碼的四個分區塊。因此,用于PN_M×M的兩個預測模式列包括“N/A”。與P_L0_N×N一樣,PN_Skip僅具有單一部分,因此“預測模式部分2”列的對應元素為“N/A”。

下文的表2包括類似于表1的列和元素的列和元素。然而,表2對應于使用雙向預測(B編碼)的經幀間譯碼的塊的各種編碼模式。因此,可通過第一幀/切片/列表(L0)與第二幀/切片/列表(L1)中的任一者或兩者來編碼每一分區。“BiPred”指代從L0與L1兩者預測的對應分區。在表2中,列標簽和值的意義類似于表1中所使用的列標簽和值的意義。

表2

圖11為說明用于計算N×N像素視頻塊的最佳分割和編碼方法的實例方法的流程圖。一般來說,圖11的方法包含計算如應用于(例如)圖4A中所展示的每一不同分割方法的每一不同編碼方法(例如,各種空間或時間模式)的成本,和選擇對于N×N像素視頻塊來說具有最好的速率-失真成本的編碼模式與分割方法的組合。一般可使用拉格朗日乘數與速率和失真值來計算成本,以使得速率-失真成本=失真+λ*速率,其中失真表示原始塊與經譯碼塊之間的誤差,且速率表示支持所述譯碼模式所必需的位速率。在一些情況下,可在宏塊、分區、切片或幀層級上確定速率和失真。

最初,視頻編碼器50接收待編碼的N×N視頻塊(170)。舉例來說,視頻編碼器50可接收64×64的大宏塊或其分區(例如,32×32或16×16分區),視頻編碼器50將針對所述宏塊或其分區選擇編碼和分割方法。視頻編碼器50接著計算使用多種不同譯碼模式(例如,不同的幀內譯碼模式和幀間譯碼模式)編碼N×N塊的成本(172)。為了計算在空間上編碼N×N塊的成本,視頻編碼器50可計算失真和用給定譯碼模式編碼N×N塊所需的位速率,且接著計算成本=失真(Mode,N×N)+λ*速率(Mode,N×N)。視頻編碼器50可使用指定譯碼技術編碼宏塊,且確定所得位速率成本和失真。可基于經譯碼的宏塊中的像素與原始宏塊中的像素之間的像素差異(例如,基于絕對差總和(SAD)量度、平方差總和(SSD)量度或其它像素差異量度)來確定失真。

視頻編碼器50可接著將N×N塊分割成兩個相等大小的非重疊的水平N×(N/2)分區。視頻編碼器50可計算使用各種譯碼模式編碼所述分區中的每一者的成本(176)。舉例來說,為了計算編碼第一N×(N/2)分區的成本,視頻編碼器50可計算編碼第一N×(N/2)分區的失真和位速率,且接著計算成本=失真(Mode,FIRSTPARTITION,N×(N/2))+λ*速率(Mode,FIRST?PARTITION,N×(N/2))。

視頻編碼器50可接著將N×N塊分割成兩個相等大小的非重疊的垂直(N/2)×N分區。視頻編碼器50可計算使用各種譯碼模式編碼所述分區中的每一者的成本(178)。舉例來說,為了計算編碼所述(N/2)×N分區中的第一者的成本,視頻編碼器50可計算編碼第一(N/2)×N分區的失真和位速率,且接著計算成本=失真(Mode,FIRST?PARTITION,(N/2)×N)+λ*速率(Mode,FIRST?PARTITION,(N/2)×N)。對于編碼所述(N/2)×N宏塊分區中的第二者的成本,視頻編碼器50可執行類似計算。

視頻編碼器50可接著將N×N塊分割成四個相等大小的非重疊的(N/2)×(N/2)分區。視頻編碼器50可計算使用各種譯碼模式編碼所述分區的成本(180)。為了計算編碼所述(N/2)×(N/2)分區的成本,視頻編碼器50可首先計算編碼左上部(N/2)×(N/2)分區的失真和位速率,且按照成本(Mode,UPPER-LEFT,(N/2)×(N/2))=失真(Mode,UPPER-LEFT,(N/2)×(N/2))+λ*速率(Mode,UPPER-LEFT,(N/2)×(N/2))得到其成本。視頻編碼器50可按以下次序類似地計算每一(N/2)×(N/2)塊的成本:(1)左上部分區,(2)右上部分區,(3)左下部分區,(4)右下部分區。在一些實例中,視頻編碼器50可對于所述(N/2)×(N/2)分區中的一者或一者以上對此方法進行遞歸調用以計算進一步分割和單獨編碼所述(N/2)×(N/2)分區中的每一者(例如,作為(N/2)×(N/4)分區、(N/4)×(N/2)分區,和(N/4)×(N/4)分區)的成本。

接下來,視頻編碼器50可確定分割與編碼模式的哪個組合產生根據速率和失真的最好的(即,最低)成本(182)。舉例來說,視頻編碼器50可比較編碼兩個鄰近(N/2)×(N/2)分區的最好的成本與編碼包含所述兩個鄰近(N/2)×(N/2)分區的N×(N/2)分區的最好的成本。當編碼所述兩個鄰近(N/2)×(N/2)分區的累計成本超過編碼包含所述兩個鄰近(N/2)×(N/2)分區的N×(N/2)分區的成本時,視頻編碼器50可選擇編碼N×(N/2)分區的較低成本選項。一般來說,視頻編碼器50可針對每一分區應用分割方法與編碼模式的每個組合以識別最低成本分割和編碼方法。在一些情況下,視頻編碼器50可經配置以評估分割與編碼模式組合的更有限集合。

在確定最好(例如,最低成本)的分割和編碼方法后即刻,視頻編碼器50可使用所述最好-成本確定的方法來編碼N×N宏塊(184)。在一些情況下,結果可為大宏塊具有使用不同譯碼模式譯碼的分區。對大宏塊應用混合模式譯碼以使得對大宏塊中的不同分區應用不同譯碼模式的能力可準許以減少的成本譯碼宏塊。

在一些實例中,用混合模式進行譯碼的方法可包括:用視頻編碼器50接收具有大于16×16像素的大小的視頻塊;將所述塊分割成若干分區;用第一編碼模式編碼所述分區中的一者;用不同于所述第一編碼模式的第二編碼模式編碼所述分區中的另一者;以及產生指示所述塊的大小并識別所述分區和用于編碼所述分區的所述編碼模式的塊類型語法信息。

圖12為說明具有各種分區的實例64×64像素的大宏塊和用于每一分區的不同選定編碼方法的方框圖。在圖12的實例中,每一分區經標記有“I”、“P”或“B”中的一者。經標記為“I”的分區為編碼器已(例如)基于速率-失真評估而選擇利用幀內譯碼的分區。經標記為“P”的分區為編碼器已(例如)基于速率-失真評估而選擇利用單一參考幀間譯碼的分區。經標記為“B”的分區為編碼器已(例如)基于速率-失真評估而選擇利用雙向預測幀間譯碼的分區。在圖12的實例中,同一大宏塊內的不同分區具有不同的譯碼模式,包括不同分區或子分區大小和不同的幀內譯碼模式或幀間譯碼模式。

大宏塊為由宏塊語法元素識別的宏塊,所述宏塊語法元素識別用于例如H.264譯碼標準的擴展的給定譯碼標準的宏塊類型(例如,mb64_type或mb32_type)。宏塊類型語法元素可作為宏塊標頭語法元素提供于經編碼視頻位流中。圖12中所說明的I譯碼、P譯碼和B譯碼的分區可根據不同的譯碼模式(例如,具有各種塊大小的幀內預測模式或幀間預測模式,包括用于大小大于16×16的大分區的大塊大小模式或用于大小小于或等于16×16的分區的H.264模式)而被譯碼。

在一個實例中,編碼器(例如,視頻編碼器50)可使用關于圖11所描述的實例方法來選擇用于圖12的實例的大宏塊的不同分區和子分區的各種編碼模式和分區大小。舉例來說,視頻編碼器50可接收64×64宏塊,執行圖11的方法,且因此產生具有各種分區大小和譯碼模式的圖12的實例宏塊。然而,應理解,分割和譯碼模式的選擇可通過應用圖11的方法而產生,例如,基于從其選擇宏塊的幀的類型,且基于針對其而執行所述方法的輸入的宏塊。舉例來說,當幀包含I幀時,每一分區將經幀內編碼。作為另一實例,當幀包含P幀時,每一分區可經幀內編碼或基于單一參考幀(即,無雙向預測)而經幀間譯碼。

出于說明的目的,假定圖12的實例宏塊是選自雙向預測幀(B幀)。在其它實例中,在宏塊是選自P幀的情況下,視頻編碼器50將不使用雙向預測來編碼分區。同樣地,在宏塊是選自I幀的情況下,視頻編碼器50將不使用幀間譯碼(P編碼或B編碼)來編碼分區。然而,在任何情況下,視頻編碼器50可針對宏塊的不同部分選擇各種分區大小,且選擇使用任何可用的編碼模式來編碼每一分區。

在圖12的實例中,假定基于速率-失真分析的分區與模式選擇的組合產生一個32×32經B譯碼的分區、一個32×32經P譯碼的分區、一個16×32經I譯碼的分區、一個32×16經B譯碼的分區、一個16×16經P譯碼的分區、一個16×8經P譯碼的分區、一個8×16經P譯碼的分區、一個8×8經P譯碼的分區、一個8×8經B譯碼的分區、一個8×8經I譯碼的分區,和具有各種譯碼模式的眾多較小子分區。圖12的實例是出于概念性說明對大宏塊中的分區的混合模式譯碼的目的而提供,且不應必定被視為表示特定的大的64×64宏塊的實際譯碼結果。

圖13為說明用于確定用于編碼視頻序列的幀或切片的宏塊的最佳大小的實例方法的流程圖。雖然相對于選擇幀的宏塊的最佳大小而進行描述,但類似于關于圖13所描述的方法的方法可用于選擇用于切片的宏塊的最佳大小。同樣地,雖然圖13的方法是相對于視頻編碼器50而進行描述,但應理解,任何編碼器可利用圖13的實例方法來確定用于編碼視頻序列的幀的宏塊的最佳(例如,最低成本)大小。一般來說,圖13的方法包含將編碼遍次執行三次,針對16×16宏塊、32×32宏塊和64×64宏塊中的每一者各執行一次,且視頻編碼器可計算每一遍次的速率-失真量度以確定哪個宏塊大小提供最好的速率-失真。

視頻編碼器50可首先在第一編碼遍次期間使用16×16像素宏塊來編碼幀(例如,使用函數編碼(幀,MB16_type))(190),以產生經編碼的幀F16。在第一編碼遍次之后,視頻編碼器50可基于16×16像素宏塊的使用而分別計算位速率和失真以作為R16和D16(192)。視頻編碼器50可接著使用拉格朗日乘數C16=D16+λ*R16來計算呈使用16×16像素宏塊的成本C16的形式的速率-失真量度(194)。可(例如)根據H.264標準來選擇用于16×16像素宏塊的譯碼模式和分區大小。

視頻編碼器50可接著在第二編碼遍次期間使用32×32像素宏塊來編碼幀(例如,使用函數編碼(幀,MB32_type))(196),以產生經編碼的幀F32。在第二編碼編次之后,視頻編碼器50可基于32×32像素宏塊的使用而分別計算位速率和失真以作為R32和D32(198)。視頻編碼器50可接著使用拉格朗日乘數C32=D32+λ*R32來計算呈使用32×32像素宏塊的成本C32的形式的速率-失真量度(200)。可(例如)使用如參考圖11和圖12所描述的速率和失真評估技術來選擇用于32×32像素宏塊的譯碼模式和分區大小。

視頻編碼器50可接著在第三編碼遍次期間使用64×64像素宏塊來編碼幀(例如,使用函數編碼(幀,MB64_type))(202),以產生經編碼的幀F64。在第三編碼遍次之后,視頻編碼器50可基于64×64像素宏塊的使用而分別計算位速率和失真以作為R64和D64(204)。視頻編碼器50可接著使用拉格朗日乘數C64=D64+λ*R64來計算呈使用64×64像素宏塊的成本C64的形式的速率-失真量度(206)。可(例如)使用如參考圖11和圖12所描述的速率和失真評估技術來選擇用于64×64像素宏塊的譯碼模式和分區大小。

接下來,視頻編碼器50可確定對于所述幀來說量度C16、C32和C64中的哪一者最低(208)。視頻編碼器50可選擇使用用產生最低成本的宏塊大小而編碼的幀(210)。因此,例如,當C16為最低時,視頻編碼器50可在位流中轉發用16×16宏塊編碼為經編碼的幀的幀F16以用于存儲或發射到解碼器。當C32為最低時,視頻編碼器50可轉發用32×32宏塊編碼的F32。當C64為最低時,視頻編碼器50可轉發用64×64宏塊編碼的F64。

在其它實例中,視頻編碼器50可以任何次序執行編碼遍次。舉例來說,視頻編碼器50可開始于64×64宏塊編碼遍次,然后執行32×32宏塊編碼遍次,且以16×16宏塊編碼遍次結束。而且,類似方法可用于編碼包含多個宏塊的其它經譯碼單元(例如,具有不同大小的宏塊的切片)。舉例來說,視頻編碼器50可應用類似于圖13的方法的方法來選擇用于編碼幀的切片(而不是完整幀)的最佳宏塊大小。

視頻編碼器50還可在特定經譯碼單元(例如,幀或切片)的標頭中發射所述經譯碼單元的宏塊的大小的識別符以供解碼器使用。根據圖13的方法,一種方法可包括:用數字視頻編碼器接收數字視頻流的經譯碼單元;計算對應于使用各自包含16×16像素的第一多個塊來編碼所述經譯碼單元的速率-失真的第一速率-失真量度;計算對應于使用各自包含大于16×16像素的第二多個塊來編碼所述經譯碼單元的速率-失真的第二速率-失真量度;以及確定對于所述經譯碼單元來說所述第一速率-失真量度和所述第二速率-失真量度中的哪一者最低。所述方法可進一步包括:當確定第一速率-失真量度為最低時,使用第一多個塊來編碼所述經譯碼單元,且當確定第二速率-失真量度為最低時,使用第二多個塊來編碼所述經譯碼單元。

圖14為說明包括視頻編碼器/解碼器CODEC?234的實例無線通信裝置230的方框圖,視頻編碼器/解碼器CODEC?234可使用本發明中所描述的多種技術中的任一者、使用大于標準的宏塊來編碼和/或解碼數字視頻數據。在圖14的實例中,無線通信裝置230包括攝像機232、視頻編碼器-解碼器(CODEC)234、調制器/解調器(調制解調器)236、收發器238、處理器240、用戶接口242、存儲器244、數據存儲裝置246、天線248,和總線250。

圖14中所說明的包括于無線通信裝置230中的組件可通過硬件、軟件和/或固件的任何合適的組合來實現。在所說明的實例中,所述組件經描繪為單獨單元。然而,在其它實例中,所述各種組件可集成于共同硬件和/或軟件內的組合單元中。作為一個實例,存儲器244可存儲可由處理器240執行的對應于視頻CODEC?234的各種功能的指令。作為另一實例,攝像機232可包括執行視頻CODEC?234的功能(例如,編碼和/或解碼視頻數據)的視頻CODEC。

在一個實例中,攝像機232可對應于視頻源18(圖1)。一般來說,攝像機232可記錄由傳感器陣列俘獲的視頻數據以產生數字視頻數據。攝像機232可經由總線250將原始的、所記錄的數字視頻數據發送到視頻CODEC?234以用于編碼,并接著發送到數據存儲裝置246以用于數據存儲。處理器240可經由總線250將關于記錄視頻的模式、記錄視頻的幀速率、結束記錄或改變幀速率模式的時間、將視頻數據發送到視頻CODEC234的時間或指示其它模式或參數的信號的信號發送到攝像機232。

用戶接口242可包含一個或一個以上接口(例如,輸入和輸出接口)。舉例來說,用戶接口242可包括觸摸屏、小鍵盤、按鈕、可充當取景器viewfinder的屏幕、麥克風、揚聲器,或其它接口。當攝像機232接收視頻數據時,處理器240可向攝像機232發信號以使其將視頻數據發送到用戶接口242以顯示在取景器上。

視頻CODEC?234可編碼來自攝像機232的視頻數據并解碼經由天線248、收發器238和調制解調器236接收的視頻數據。視頻CODEC?234另外或替代性地可解碼從數據存儲裝置246接收的先前編碼的數據以用于回放。視頻CODEC?234可使用大于由常規視頻編碼標準規定的宏塊的大小的宏塊來編碼和/或解碼數字視頻數據。舉例來說,視頻CODEC?234可使用包含64×64像素或32×32像素的大宏塊來編碼和/或解碼數字視頻數據。可用根據例如H.264標準的擴展等視頻標準的宏塊類型語法元素來識別大宏塊。

視頻CODEC?234可執行視頻編碼器50(圖2)和/或視頻解碼器60(圖3)中的任一者或兩者的功能,以及如本發明中所描述的任何其它編碼/解碼功能或技術。舉例來說,CODEC?234可將大宏塊分割成多種不同大小的較小分區,且針對選定的分區使用不同的譯碼模式(例如,空間(I)或時間(P或B))。分區大小和譯碼模式的選擇可基于所述分區大小和譯碼模式的速率-失真結果。CODEC?234還可利用分層的經譯碼塊模式(CBP)值來識別大宏塊內的具有非零系數的經譯碼宏塊和分區。另外,在一些實例中,CODEC?234可將大宏塊與小宏塊的速率-失真量度進行比較以選擇針對幀、切片或其它譯碼單元產生較有利結果的宏塊大小。

用戶可與用戶接口242交互以經由調制解調器236、收發器238和天線248將數據存儲裝置246中的所記錄的視頻序列發射到另一裝置(例如,另一無線通信裝置)。可根據例如MPEG-2、MPEG-3、MPEG-4、H.263、H.264或經受本發明中所描述的擴展或修改的其它視頻編碼標準等編碼標準來編碼所述視頻序列。舉例來說,還可使用大于標準的宏塊來編碼所述視頻序列,如本發明中所描述。無線通信裝置230還可接收經編碼的視頻片段且將所接收的視頻序列存儲于數據存儲裝置246中。

所接收的經編碼的視頻序列的宏塊可大于由常規視頻編碼標準指定的宏塊。為了顯示數據存儲裝置246中的經編碼視頻片段(例如,所記錄的視頻序列或所接收的視頻片段),視頻CODEC?234可解碼視頻序列并將視頻片段的經解碼幀發送到用戶接口242。當視頻序列包括音頻數據時,視頻CODEC?234可解碼音頻,或者無線通信裝置230可進一步包括用以解碼音頻的音頻編解碼器(未展示)。以此方式,視頻CODEC?234可執行編碼器的功能與解碼器的功能兩者。

圖14的無線通信裝置230的存儲器244可經編碼有計算機可讀指令,所述計算機可讀指令致使處理器240和/或視頻CODEC?234執行各種任務(除了存儲經編碼的視頻數據之外)。可將所述指令從例如數據存儲裝置246等數據存儲裝置加載到存儲器244中。舉例來說,所述指令可致使處理器240執行相對于視頻CODEC?234所描述的功能。

圖15為說明實例分層的經譯碼塊模式(CBP)260的方框圖。CBP?260的實例一般對應于用于64×64像素宏塊的語法信息的一部分。在圖15的實例中,CBP?260包含CBP64值262、四個CBP32值264、266、268、270,和四個CBP16值272、274、276、278。CBP?260的每一塊可包括一個或一個以上位。在一個實例中,當CBP64值262為具有值“1”(其指示大宏塊中存在至少一個非零系數)的位時,CBP?260包括用于大的64×64宏塊的四個32×32分區的四個CBP32值264、266、268、270,如圖15的實例中所展示。

在另一實例中,當CBP64值262為具有值“0”的位時,CBP?260可僅由CBP64組成,因為值“0”可指示對應于CBP?260的塊具有全零值系數。因此,那個塊的所有分區同樣將含有全零值系數。在一個實例中,當CBP64為具有值“1”的位,且CBP32值中的用于特定32×32分區的CBP32值為具有值“1”的位時,用于所述32×32分區的CBP32值具有表示CBP16值的四個分支,(例如)如相對于CBP32值266所展示。在一個實例中,當CBP32值為具有值“0”的位時,CBP32不具有任何分支。在圖15的實例中,CBP?260可具有五位前綴“10100”,其指示:CBP64值為1,且32×32分區中的一者具有為“1”的CBP32值,其中后續位對應于四個CBP16值272、274、276、278(對應于具有為“1”的CBP32值的32×32分區的16×16分區)。雖然在圖15的實例中僅將單一CBP32值展示為具有值“1”,但在其它實例中,兩個32×32分區、三個32×32分區或全部四個32×32分區可具有為“1”的CBP32值,在所述情況下,將需要具有對應的CBP16值的四個16×16分區的多個例子。

在圖15的實例中,可根據各種方法(例如,根據圖8和圖9的方法)來計算用于四個16×16分區的四個CBP16值272、274、276、278。CBP16值272、274、276、278中的任一者或全部可包括“lumacbp16”值、transform_size_flag,和/或luma16×8_cbp。還可根據如ITU?H.264中所界定的CBP值或如ITU?H.264中的CodedBlockPatternChroma、如關于圖8和圖9所論述來計算CBP16值272、274、276、278。在圖15的實例中,假定CBP16278具有值“1”,且其它CBP?16值272、274、276具有值“0”,則用于64×64宏塊的九位CBP值將為“101000001”,其中每一位對應于CBP/分區階層中的相應層級處的分區中的一者。

圖16為說明對應于CBP?260(圖15)的實例樹結構280的方框圖。CBP64節點282對應于CBP64值262,CBP32節點284、286、288、290各自對應于CBP32值264、266、268、270中的相應者,且CBP16節點292、294、296、298各自對應于CBP16值272、274、276、278中的相應者。以此方式,如本發明中所界定的經譯碼塊模式值可對應于分層CBP。樹中產生另一分支的每一節點對應于為“1”的相應CBP值。在圖15和圖16的實例中,CBP64282與CBP32286均具有值“1”,且產生具有可能為“1”的CBP值的進一步分區,即,在該處,下一個分區層級處的至少一個分區包括至少一個非零變換系數值。

圖17為說明用于使用經譯碼單元的語法信息來指示和選擇用于所述經譯碼單元的視頻塊的基于塊的語法編碼器和解碼器的實例方法的流程圖。一般來說,除編碼經譯碼單元的多個視頻塊之外以及結合編碼經譯碼單元的多個視頻塊,例如視頻編碼器20(圖1)的視頻編碼器可執行圖17的步驟300到310。經譯碼單元可包含視頻幀、切片,或圖片群組(還稱作一“序列”)。除解碼所述經譯碼單元的所述多個視頻塊之外以及結合解碼所述經譯碼單元的所述多個視頻塊,例如視頻解碼器30(圖1)的視頻解碼器可執行圖17的步驟312到316。

最初,視頻編碼器20可接收經譯碼單元(例如,幀、切片,或圖片群組)的各種大小的塊的集合(300)。根據本發明的技術,所述塊中的一者或一者以上可包含大于16×16像素(例如,32×32像素、64×64像素等)。然而,所述塊不需要各自包括相同數目個像素。一般來說,視頻編碼器20可使用相同的基于塊的語法來編碼所述塊中的每一者。舉例來說,視頻編碼器20可使用分層的經譯碼塊模式來編碼所述塊中的每一者,如上文所描述。

視頻編碼器20可基于所述經譯碼單元的所述塊集合中的最大塊(即,最大塊大小)而選擇待使用的基于塊的語法。最大塊大小可對應于所述經譯碼單元中所包括的最大宏塊的大小。因此,視頻編碼器20可確定所述集合中的最大大小的塊(302)。在圖17的實例中,視頻編碼器20還可確定所述集合中的最小大小的塊(304)。如上文所論述,一塊的分層的經譯碼塊模式具有對應于所述塊的分區是否具有非零的、經量化系數的長度。在一些實例中,視頻編碼器20可將最小大小值包括于用于經譯碼單元的語法信息中。在一些實例中,最小大小值指示所述經譯碼單元中的最小分區大小。以此方式,最小分區大小(例如,經譯碼單元中的最小塊)可用于確定分層的經譯碼塊模式的最大長度。

視頻編碼器20可接著根據對應于最大塊的語法來編碼所述經譯碼單元的集合的每一塊(306)。舉例來說,假定最大塊包含64×64像素塊,則視頻編碼器20可使用例如上文針對MB64_type所界定的語法的語法。作為另一實例,假定最大塊包含32×32像素塊,則視頻編碼器20可使用例如上文針對MB32_type所界定的語法的語法。

視頻編碼器20還產生經譯碼單元語法信息,所述經譯碼單元語法信息包括對應于經譯碼單元中的最大塊和經譯碼單元中的最小塊的值(308)。視頻編碼器20可接著將經譯碼單元(包括用于經譯碼單元和經譯碼單元的塊中的每一者的語法信息)發射到視頻解碼器30。

視頻解碼器30可從視頻編碼器20接收經譯碼單元和用于經譯碼單元的語法信息(312)。視頻解碼器30可基于經譯碼單元中的最大塊的經譯碼單元語法信息中的指示而選擇基于塊的語法解碼器(314)。舉例來說,假定經譯碼單元語法信息指示經譯碼單元中的最大塊包含64×64像素,則視頻解碼器30可選擇用于MB64_type塊的語法解碼器。視頻解碼器30可接著將選定的語法解碼器應用到經譯碼單元的塊以解碼經譯碼單元的塊(316)。視頻解碼器30還可基于最小的經編碼分區的經譯碼單元語法信息中的指示而確定塊何時不具有進一步單獨編碼的子分區。舉例來說,如果最大塊為64×64像素且最小塊也為64×64像素,則可確定不將64×64塊劃分成小于64×64大小的子分區。作為另一實例,如果最大塊為64×64像素且最小塊為32×32像素,則可確定將64×64塊劃分成不小于32×32的子分區。

以此方式,視頻解碼器30可保持與現有譯碼標準(例如,H.264)向后兼容。舉例來說,當經譯碼單元中的最大塊包含16×16像素時,視頻編碼器20可在經譯碼單元語法信息中指示此信息,且視頻解碼器30可應用基于標準H.264塊的語法解碼器。然而,當經譯碼單元中的最大塊包含大于16×16像素時,視頻編碼器20可在經譯碼單元語法信息中指示此信息,且視頻解碼器30可根據本發明的技術而選擇性地應用基于塊的語法解碼器以解碼經譯碼單元的塊。

在一個或一個以上實例中,可以硬件、軟件、固件或其任何組合來實施所描述的功能。如果以軟件來實施,則可將所述功能作為一個或一個以上指令或代碼存儲于計算機可讀媒體上或經由計算機可讀媒體進行傳輸。計算機可讀媒體包括計算機存儲媒體與通信媒體(包括促進將計算機程序從一處傳遞到另一處的任何媒體)兩者。存儲媒體可為可由計算機存取的任何可用媒體。以實例而非限制的方式,所述計算機可讀媒體可包含RAM、ROM、EEPROM、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置,或可用于載運或存儲呈指令或數據結構的形式的所要程序代碼并可由計算機存取的任何其它媒體。而且,將任何連接適當地稱為計算機可讀媒體。舉例來說,如果使用同軸電纜、光纖電纜、雙絞線、數字訂戶線(DSL)或例如紅外線、無線電和微波等無線技術從網站、服務器或其它遠程源發射軟件,則同軸電纜、光纖電纜、雙絞線、DSL或例如紅外線、無線電和微波等無線技術包括在媒體的定義中。如本文中所使用的磁盤和光盤包括壓縮光盤(CD)、激光光盤、光學光盤、數字多功能光盤(DVD)、軟盤和藍光光盤,其中磁盤通常以磁方式再現數據,而光盤用激光以光學方式再現數據。上述各者的組合也應包括在計算機可讀媒體的范圍內。

已描述了各種實例。這些和其它實例在所附權利要求書的范圍內。

關 鍵 詞:
用大宏塊 進行 視頻 譯碼
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:用大宏塊進行視頻譯碼.pdf
鏈接地址:http://www.rgyfuv.icu/p-6420392.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图