RU2575397C2 - Padding of segments in coded slice network abstraction layer units - Google Patents
Padding of segments in coded slice network abstraction layer units Download PDFInfo
- Publication number
- RU2575397C2 RU2575397C2 RU2014122537/08A RU2014122537A RU2575397C2 RU 2575397 C2 RU2575397 C2 RU 2575397C2 RU 2014122537/08 A RU2014122537/08 A RU 2014122537/08A RU 2014122537 A RU2014122537 A RU 2014122537A RU 2575397 C2 RU2575397 C2 RU 2575397C2
- Authority
- RU
- Russia
- Prior art keywords
- image
- segments
- slice
- block
- video
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000003860 storage Methods 0.000 claims description 31
- 238000005192 partition Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 238000013139 quantization Methods 0.000 description 26
- 239000013598 vector Substances 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 241000985610 Forpus Species 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Abstract
Description
ПЕРЕКРЕСТНЫЕ ССЫЛКИ НА РОДСТВЕННЫЕ ЗАЯВКИCROSS RELATIONS TO RELATED APPLICATIONS
Данная заявка претендует на приоритет предварительной заявки США № 61/557259, поданной 8 ноября 2011 года, содержание которой целиком включено сюда посредством ссылки. Данная заявка также претендует на приоритет предварительной заявки США № 61/555932, поданной 4 ноября 2011 года.This application claims priority to provisional application US No. 61/557259, filed November 8, 2011, the contents of which are fully incorporated here by reference. This application also claims the priority of provisional application US No. 61/555932, filed November 4, 2011.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF THE INVENTION
Настоящее изобретение относится к видеокодированию (то есть кодированию или декодированию видеоданных).The present invention relates to video coding (i.e., encoding or decoding of video data).
УРОВЕНЬ ТЕХНИКИBACKGROUND
Возможности цифрового видео могут быть включены в устройства самого широкого применения, в том числе цифровые телевизионные приемники, системы прямого цифрового вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), компьютеры типа «лэптоп» или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, устройства для проведения видео-телеконференций и т.п. Устройства цифрового видео реализуют различные методики сжатия видео, которые, например, описаны в стандартах, определенных как MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, стандарт усовершенствованного видеокодирования (AVC), стандарт высокоэффективного видеокодирования (HEVC), находящийся в процессе разработки, а также расширения указанных стандартов, для более эффективной передачи, приема и запоминания цифровой видеоинформации.Digital video capabilities can be incorporated into a wide range of applications, including digital television sets, direct digital broadcasting systems, wireless broadcasting systems, personal digital assistants (PDAs), laptop computers or desktop computers, digital cameras, digital recording devices , digital media players, video game devices, video game consoles, cellular or satellite radiotelephones, video teleconferencing devices, etc. Digital video devices implement various video compression techniques, which, for example, are described in standards defined as MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Standard video coding (AVC), a standard for high-performance video coding (HEVC), which is under development, as well as expanding these standards, for more efficient transmission, reception and storage of digital video information.
Согласно методикам сжатия видео выполняется пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание с целью уменьшения или исключения избыточности, свойственной видеопоследовательностям. Для видеокодирования на блочной основе видеослайс может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками кодирования (CU), и/или узлами кодирования. Видеоблоки в слайсе изображения с внутрикадровым кодированием (I) кодируют с использованием пространственного предсказания применительно к опорным отсчетам в соседних блоках одного и того же изображения. В видеоблоках в слайсе изображения с межкадровым кодированием (P или B) может использоваться пространственное предсказание в отношении опорных отсчетов в соседних блоках одного и того же изображения или временное предсказание в отношении опорных отсчетов других опорных изображений. Изображения могут называться кадрами, а опорные изображения могут называться опорными кадрами.According to video compression techniques, spatial (intra-frame) prediction and / or temporal (inter-frame) prediction is performed to reduce or eliminate the redundancy inherent in video sequences. For block-based video coding, a video slice may be divided into video blocks, which may also be called treeblocks, coding units (CUs), and / or coding units. Video blocks in the image slice with intraframe coding (I) are encoded using spatial prediction as applied to reference samples in neighboring blocks of the same image. In video blocks in the image slice with inter-frame coding (P or B), spatial prediction with respect to reference samples in neighboring blocks of the same image or temporal prediction with respect to reference samples of other reference images may be used. Images may be referred to as frames, and reference images may be referred to as reference frames.
СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION
В общем случае в изобретении описываются методики для кодирования и декодирования видеоданных. Видеокодер может разделить изображение на множество разделов изображения. Разделы изображения включают в себя неперекрывающиеся поднаборы древовидных блоков данного изображения. Примерные типы разделов изображения включают в себя тайлы и волны волновой параллельной обработки (WPP). Видеокодер может создать блок уровня абстракции сети (NAL) кодированного слайса, который содержит кодированные представления древовидных блоков, связанных с одним слайсом данного изображения. Видеокодер создает блок NAL кодированного слайса таким образом, что кодированные древовидные блоки группируются в блоке NAL кодированного слайса согласно разделам изображения, к которым относятся древовидные блоки. Видеокодер может заполнить один или более сегментов незначащей информацией, так чтобы каждый из сегментов начинался на границе байта. Видеодекодер может декодировать кодированные древовидные блоки блока NAL кодированного слайса.In general, the invention describes techniques for encoding and decoding video data. A video encoder can divide an image into multiple image sections. Sections of the image include non-overlapping subsets of treeblocks of the image. Exemplary types of image sections include tiles and wave parallel processing (WPP) waves. A video encoder can create a block of network abstraction layer (NAL) of a coded slice that contains encoded representations of tree blocks associated with a single slice of a given image. The video encoder creates the NAL block of the encoded slice so that the encoded tree blocks are grouped in the NAL block of the encoded slice according to the sections of the image to which the tree blocks belong. A video encoder can fill one or more segments with insignificant information, so that each of the segments starts at the byte boundary. The video decoder can decode the encoded tree blocks of the NAL block of the encoded slice.
Согласно одному аспекту изобретения описывается способ кодирования видеоданных. Способ содержит разделение изображения на множество разделов изображения. Изображение содержит множество древовидных блоков. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения. Способ также содержит создание блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом данного изображения, причем кодированные представления древовидных блоков сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения, где один или более из указанных сегментов заполнены незначащей информацией, так что каждый из сегментов начинается на границе байта.According to one aspect of the invention, a method for encoding video data is described. The method comprises dividing an image into multiple image sections. Image contains many tree blocks. Sections of the image are associated with non-overlapping subsets of tree blocks of the image. The method also comprises creating a NAL block of an encoded slice, which includes encoded representations of tree blocks associated with a slice of a given image, wherein encoded representations of tree blocks are grouped in a NAL block of an encoded slice into segments associated with different sections of the image, where one or more of segments are filled with insignificant information, so that each of the segments begins at the byte boundary.
Согласно другому аспекту описывается способ декодирования видеоданных. Способ содержит запоминание блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения. Указанное изображение разбивают на множество разделов изображения. Кодированные представления указанных древовидных блоков группируют в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из указанных сегментов начинается с границы байта. Способ также содержит декодирование кодированных представлений древовидных блоков.According to another aspect, a method for decoding video data is described. The method comprises storing a NAL unit of an encoded slice that includes encoded representations of tree blocks associated with an image slice. The specified image is divided into many sections of the image. The encoded representations of these treeblocks are grouped into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of these segments begins with a byte boundary. The method also comprises decoding the encoded representations of the tree blocks.
Согласно еще одному аспекту описывается устройство видеокодирования. Устройство видеокодирования содержит один или более процессоров, сконфигурированных для разделения изображения на множество разделов изображения. Изображение содержит множество древовидных блоков. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения. Указанные один или более процессоров также сконфигурированы для создания блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, которые связаны со слайсом данного изображения. Кодированные представления древовидных блоков, сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из сегментов начинается на границе байта.According to another aspect, a video coding apparatus is described. A video coding device comprises one or more processors configured to divide an image into multiple image sections. Image contains many tree blocks. Sections of the image are associated with non-overlapping subsets of tree blocks of the image. These one or more processors are also configured to create a NAL unit of an encoded slice that includes encoded representations of tree blocks that are associated with a slice of a given image. The encoded representations of the tree blocks are grouped in the NAL block of the encoded slice into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of the segments begins at the byte boundary.
Согласно следующему аспекту описывается устройство видеодекодирования, которое декодирует видеоданные. Устройство видеодекодирования содержит память, в которой запоминается блок NAL кодированного слайса, включающий в себя кодированные представления древовидных блоков, связанных со слайсом изображения. Указанное изображение разбивают на множество разделов изображения. Кодированные представления указанных древовидных блоков группируют в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из указанных сегментов начинается с границы байта. Устройство видеодекодирования также содержит один или более процессоров, которые сконфигурированы для декодирования кодированных представлений древовидных блоков.According to a further aspect, a video decoding apparatus that decodes video data is described. The video decoding device comprises a memory in which a NAL unit of the encoded slice is stored, including encoded representations of tree blocks associated with the image slice. The specified image is divided into many sections of the image. The encoded representations of these treeblocks are grouped into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of these segments begins with a byte boundary. The video decoding apparatus also comprises one or more processors that are configured to decode the encoded representations of the tree blocks.
Согласно еще одному аспекту описывается компьютерный программный продукт, который содержит один или более машиночитаемых носителей информации, хранящих команды, которые при их выполнении одним или более процессорами конфигурируют устройство видеокодирования для разделения изображения на множество разделов изображения. Изображение содержит множество древовидных блоков. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения. Указанные команды также конфигурируют устройство видеокодирования для создания блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, которые связаны со слайсом данного изображения. Кодированные представления древовидных блоков, сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из сегментов начинается на границе байта.According to yet another aspect, a computer program product is described that comprises one or more computer-readable storage media that store instructions that, when executed by one or more processors, configure a video coding device to divide an image into multiple image sections. Image contains many tree blocks. Sections of the image are associated with non-overlapping subsets of tree blocks of the image. These commands also configure the video coding device to create a NAL unit of the encoded slice, which includes encoded representations of tree blocks that are associated with the slice of the image. The encoded representations of the tree blocks are grouped in the NAL block of the encoded slice into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of the segments begins at the byte boundary.
Согласно еще одному аспекту описывается компьютерный программный продукт, который содержит один или более машиночитаемых носителей информации, хранящих команды, которые при их выполнении одним или более процессорами конфигурируют устройство видеодекодирования для запоминания блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения. Указанное изображение разбивают на множество разделов изображения. Кодированные представления указанных древовидных блоков группируют в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из указанных сегментов начинается с границы байта. Указанные команды также конфигурируют устройство видеодекодирования для декодирования кодированных представлений древовидных блоков.According to another aspect, a computer program product is described that comprises one or more computer-readable storage media that store instructions that, when executed by one or more processors, configure a video decoding device to store a NAL unit of the encoded slice, which includes encoded representations of tree blocks associated with image slice. The specified image is divided into many sections of the image. The encoded representations of these treeblocks are grouped into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of these segments begins with a byte boundary. These commands also configure a video decoding device for decoding encoded representations of treeblocks.
Согласно еще одному аспекту описывается устройство видеокодирования, которое выполняет кодирование видеоданных. Устройство видеокодирования содержит средство для разделения изображения на множество разделов изображения. Изображение содержит множество древовидных блоков. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения. Устройство видеокодирования также содержит средство для создания блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом данного изображения. Кодированные представления древовидных блоков, сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из сегментов начинается на границе байта.According to yet another aspect, a video coding apparatus that encodes video data is described. The video coding device comprises means for dividing an image into a plurality of image sections. Image contains many tree blocks. Sections of the image are associated with non-overlapping subsets of tree blocks of the image. The video coding apparatus also comprises means for creating a NAL unit of the encoded slice, which includes encoded representations of tree blocks associated with the slice of the image. The encoded representations of the tree blocks are grouped in the NAL block of the encoded slice into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of the segments begins at the byte boundary.
Согласно следующему аспекту описывается устройство видеодекодирования, которое декодирует видеоданные. Устройство видеодекодирования содержит средство для хранения блока NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения. Указанное изображение разделяют на множество разделов изображения. Кодированные представления указанных древовидных блоков группируют в сегменты, связанные с разными разделами изображения. Один или более из указанных сегментов заполняют незначащей информацией, так что каждый из указанных сегментов начинается с границы байта. Устройство видеодекодирования также содержит средство для декодирования кодированных представлений древовидных блоков.According to a further aspect, a video decoding apparatus that decodes video data is described. The video decoding device comprises means for storing a NAL unit of the encoded slice, which includes encoded representations of tree blocks associated with the image slice. The specified image is divided into many sections of the image. The encoded representations of these treeblocks are grouped into segments associated with different sections of the image. One or more of these segments is filled with insignificant information, so that each of these segments begins with a byte boundary. The video decoding device also comprises means for decoding the encoded representations of the tree blocks.
Детали одного или более примеров представлены на сопроводительных чертежах и излагаются в приведенном ниже описании. Другие признаки, цели и преимущества изобретения станут очевидными из упомянутого описания, чертежей и из формулы изобретения.Details of one or more examples are presented in the accompanying drawings and are set forth in the description below. Other features, objects, and advantages of the invention will become apparent from the foregoing description, drawings, and from the claims.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
Фиг. 1 - блок-схема, иллюстрирующая приведенную в качестве примера систему видеокодирования, в которой могут использоваться методики, описанные в настоящем изобретении;FIG. 1 is a block diagram illustrating an example video coding system in which the techniques described in the present invention can be used;
Фиг. 2 - блок-схема, иллюстрирующая приведенный в качестве примера видеокодер, который сконфигурирован для реализации методик, раскрытых в настоящем изобретении;FIG. 2 is a block diagram illustrating an example video encoder that is configured to implement the techniques disclosed in the present invention;
Фиг. 3 - блок-схема, иллюстрирующая приведенный в качестве примера видеодекодер, который сконфигурирован для реализации методик, раскрытых в настоящем изобретении;FIG. 3 is a block diagram illustrating an example video decoder that is configured to implement the techniques disclosed in the present invention;
Фиг. 4 - блок-схема, иллюстрирующая примерную операцию для создания данных для слайса изображения;FIG. 4 is a flowchart illustrating an example operation for creating data for an image slice;
Фиг. 5 - блок-схема, иллюстрирующая примерную операцию для декодирования блока NAL кодированного слайса;FIG. 5 is a flowchart illustrating an example operation for decoding a NAL unit of an encoded slice;
Фиг. 6 - концептуальная схема, иллюстрирующая волновую параллельную обработку;FIG. 6 is a conceptual diagram illustrating wave parallel processing;
Фиг. 7 - концептуальная схема, иллюстрирующая примерный порядок кодирования, когда изображение разделено на множество тайлов;FIG. 7 is a conceptual diagram illustrating an example encoding order when an image is divided into multiple tiles;
Фиг. 8 - концептуальная схема, иллюстрирующая приведенный в качестве примера блок NAL кодированного слайса.FIG. 8 is a conceptual diagram illustrating an exemplary NAL block of an encoded slice.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION
Изображение включает в себя множество древовидных блоков. Древовидные блоки связаны с двумерными видеоблоками в данном изображении. Видеокодер разделяет изображение на множество разделов изображения. Например, видеокодер может разделить изображение на тайлы или волны волновой параллельной обработки (WPP). Другими словами, в этом изобретении термин «раздел изображения» может использоваться для ссылок в общем случае на тайлы или волны WPP. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков изображения. Например, каждый древовидный блок данного изображения может быть связан ровно с одним из упомянутых разделов изображения.The image includes many tree blocks. Tree blocks are associated with two-dimensional video blocks in this image. A video encoder divides an image into multiple image sections. For example, a video encoder can split an image into tiles or wave parallel processing (WPP) waves. In other words, in this invention, the term "image section" can be used to refer generally to tiles or WPP waves. Image sections are associated with non-overlapping subsets of tree-like image blocks. For example, each tree-like block of a given image can be associated with exactly one of the mentioned image sections.
Видеокодер может создать блок уровня абстракции сети (NAL) кодированного слайса. Блок NAL кодированного слайса может включать в себя кодированные представления каждого древовидного блока, связанного со слайсом данного изображения. В данном описании изобретения возможны ссылки на кодированное представление древовидного блока в качестве кодированного древовидного блока. Кодированный древовидный блок может включать в себя последовательность бит, которая представляет видеоблок, связанный с древовидным блоком. Эта последовательность бит в кодированном древовидном блоке может представлять последовательность синтаксических элементов.The video encoder may create a block of network abstraction layer (NAL) of the encoded slice. A NAL unit of an encoded slice may include encoded representations of each tree block associated with a slice of a given image. In this description of the invention, references to a coded representation of a tree block as an encoded tree block are possible. An encoded tree block may include a sequence of bits that represents a video block associated with a tree block. This sequence of bits in a coded treeblock may represent a sequence of syntax elements.
Видеокодер может сгруппировать кодированные древовидные блоки в блоке NAL кодированного слайса в сегменты. Эти сегменты связаны с разными разделами изображения. Каждый из этих сегментов может представлять собой последовательный ряд бит, таких как биты, представляющие последовательность, состоящую из одного или более кодированных древовидных блоков и связанных с ними данных. Таким образом, каждый блок NAL кодированного слайса может включать в себя кодированный древовидный блок, связанный с первым разделом изображения, за которым следует кодированный древовидный бок, связанный со вторым разделом изображения, за которым следует кодированный древовидный блок, связанный с третьим разделом изображения, и т.д.The video encoder can group the encoded tree blocks in the NAL block of the encoded slice into segments. These segments are associated with different sections of the image. Each of these segments may be a sequential series of bits, such as bits representing a sequence consisting of one or more coded treeblocks and associated data. Thus, each NAL unit of the encoded slice may include an encoded tree block associated with the first section of the image, followed by an encoded tree side associated with the second section of the image, followed by an encoded tree block associated with the third section of the image, and t .d.
Согласно раскрытым здесь методикам, видеокодер может заполнить один или более указанных сегментов незначащей информацией так, чтобы каждый из сегментов начинался на границе байта. Когда видеокодер заполняет сегмент, он может присоединить биты заполнения к этому сегменту. Биты заполнения не имеют какое-либо семантическое значение, а предназначены для обеспечения того, чтобы следующий сегмент начинался с границы байта. Таким образом, видеокодер может обеспечить побайтовое выравнивание тайлов или волн WPP, когда эти тайлы или волны WPP включены в один блок NAL кодированного слайса в целях параллельной обработки.According to the techniques disclosed herein, a video encoder can fill one or more of these segments with insignificant information so that each of the segments starts at the byte boundary. When a video encoder fills a segment, it can attach fill bits to that segment. The padding bits do not have any semantic meaning, but are intended to ensure that the next segment starts at the byte boundary. In this way, the video encoder can provide byte alignment of WPP tiles or waves when these tiles or WPP waves are included in one NAL unit of the encoded slice for parallel processing purposes.
Видеодекодер может запомнить блок NAL кодированного слайса в памяти с байтовой адресацией. Видеодекодер может затем распределить два или более сегментов по разным потокам декодирования, которые действуют параллельно. Каждый поток декодирования декодирует кодированные древовидные блоки сегмента, распределенного для данного потока декодирования. Поскольку каждый сегмент начинается с границы байта, видеодекодер может предоставить адрес памяти для сегмента потоку декодирования при распределении данного сегмента для данного потока декодирования. Таким путем обеспечивается начало каждого сегмента с границы байта, что дает возможность видеодекодерам декодировать сегменты параллельно более простым способом, чем в случае, когда сегменты начинаются с позиций, не совпадающих с границей байта.The video decoder can store the NAL block of the encoded slice in byte-addressable memory. The video decoder may then distribute two or more segments into different decoding streams that operate in parallel. Each decoding stream decodes the encoded tree blocks of a segment allocated to a given decoding stream. Since each segment begins with a byte boundary, a video decoder can provide a memory address for a segment to a decoding stream when allocating a given segment for a given decoding stream. In this way, the start of each segment from the byte boundary is provided, which allows video decoders to decode the segments in parallel in a simpler way than when the segments begin from positions that do not coincide with the byte boundary.
В этом заключается их отличие от стандартных видеокодеров и стандартных видеодекодеров, которые не обеспечивают начало сегментов с границ байтов. Поскольку сегменты могут начинаться не с границ байтов, стандартный видеодекодер, использующий побайтовую адресацию памяти, возможно не сможет декодировать кодированные древовидные блоки в указанных сегментах в параллельном режиме. Стандартный видеодекодер может использовать побайтовую адресацию памяти либо побайтовую плюс побитовую адресацию, чтобы иметь возможность декодировать кодированные древовидные блоки в сегментах параллельно, но при этом усложняется техническая реализация и процесс вычислений.This is their difference from standard video encoders and standard video decoders, which do not provide the beginning of segments from byte boundaries. Since segments may not begin with byte boundaries, a standard video decoder using byte addressing of memory may not be able to decode encoded tree blocks in the indicated segments in parallel. A standard video decoder can use byte memory addressing or byte-by-bit plus bit-by-bit addressing in order to be able to decode coded tree blocks in segments in parallel, but the technical implementation and the calculation process are complicated.
На приложенных чертежах показан ряд примеров. Элементы на приложенных чертежах, обозначенные определенными ссылочными позициями, соответствуют элементам, указанным под теми же ссылочными позициями в нижеследующем описании. Здесь элементы с названиями, начинающимися с порядковых числительных (например, «первый», «второй», «третий» и т.д.) не обязательно предполагают, что эти элементы имеют определенный порядок. Скорее наоборот, указанные порядковые числительные используются здесь просто для ссылок на разные элементы одного и того же или подобного типа. Кроме того, в последующем описании термин «текущее изображение» может относиться к изображению, которое в данный момент подвергается кодированию или декодированию.The attached drawings show a number of examples. Elements in the accompanying drawings, denoted by certain reference numbers, correspond to elements indicated under the same reference positions in the following description. Here, elements with names beginning with ordinal numbers (for example, “first”, “second”, “third”, etc.) do not necessarily assume that these elements have a specific order. Rather, on the contrary, these ordinal numbers are used here simply to refer to different elements of the same or similar type. In addition, in the following description, the term “current image” may refer to an image that is currently being encoded or decoded.
На Фиг. 1 представлена блок-схема, где показан пример системы 10 видеокодирования, в которой могут быть использованы раскрытые здесь методики. Используемый здесь термин «видеокодер» относится собственно как к видеокодерам, так и к видеодекодерам. В этом описании термины «видеокодирование» или «кодирование» могут относиться в общем к видеокодированию и видеодекодированию.In FIG. 1 is a flowchart showing an example of a
Как показано на Фиг. 1 система 10 видеокодирования включает в себя устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 создает кодированные видеоданные. Соответственно устройство-источник 12 может называться устройством видеокодирования. Устройство-адресат 14 может декодировать кодированные видеоданные, созданные устройством-источником 12. Соответственно устройство-адресат 14 может называться устройством видеодекодирования. Устройство-источник 12 и устройство-адресат 14 могут представлять собой примеры устройств видеокодирования.As shown in FIG. 1, a
Устройство-источник 12 и устройство-адресат 14 могут содержать любое из самых разных устройств, в том числе, настольные компьютеры, мобильные вычислительные устройства, компьютеры типа «ноутбук» (например, «лэптоп»), планшетные компьютеры, телевизионные приставки, телефонные трубки, так называемые «смартфоны», телевизионные приемники, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, автокомпьютеры или т.п. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы средствами беспроводной связи.The
Устройство-адресат 14 может принимать кодированные видеоданные от устройства-источника 12 через канал 16. Канал 16 может содержать среду или устройство любого типа, способное перемещать кодированные видеоданные от устройства-источника 12 на устройство-адресат 14. В одном примере канал 16 может содержать среду связи, позволяющую устройству-источнику 12 передавать кодированные видеоданные непосредственно на устройство-адресат 14 в режиме реального времени. Кодированные видеоданные могут быть модулированы устройством-источником 12 в соответствии со стандартом связи, таким как протокол беспроводной связи, и могут передаваться на устройство-адресат 14. Среда связи может содержать любой носитель проводной или беспроводной связи, например, радиочастотный (RF) спектр или одно или более физических линий передачи. Среда связи может составлять часть сети пакетной передачи, такой как локальная сеть, региональная сеть или глобальная сеть, например Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для осуществления связи между устройством-источником 12 и устройством-адресатом 14.The
В другом примере канал 16 может соответствовать носителю информации, хранящему кодированные видеоданные, созданные устройством-источником 12. В этом примере устройство-адресат 14 может иметь доступ к указанному носителю информации через диски или карты. Указанный носитель информации может включать в себя самые разные носители информации локального доступа, такие как диски типа Blu-ray, диски DVD, диски CD, флэш-память, либо любую другой подходящий цифровой носитель информации для хранения кодированных видеоданных. В еще одном примере канал 16 может включать в себя файловый сервер или другое промежуточное запоминающее устройство, которое может хранить кодированное видео, созданное устройством-источником 12. Устройство-адресат 14 в этом примере может обращаться к кодированным видеоданным, запомненным на файловом сервере или другом промежуточном запоминающем устройстве, используя потоковую передачу или загрузку видеоданных. Файловый сервер может представлять собой сервер любого типа, способный запоминать и хранить кодированные видеоданные и передавать их на устройство-адресат 14. Примеры файловых серверов включают в себя Web-серверы (например, для Web-сайта), серверы Протокола пересылки файлов (FTP), подключенные к сети запоминающие устройства (NAS) и локальные накопители на дисках. Устройство-адресат 14 может иметь доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, в том числе Интернет соединение. Такие соединения могут включать в себя беспроводные каналы (например, Wi-Fi соединения), проводные соединения (например, DSL, кабельный модем и т.д.), либо комбинацию обоих видов соединений, которая подходит для доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных от файлового сервера может быть реализована в виде потоковой передачи, передачи с выгрузкой или их комбинации.In another example,
Раскрытые здесь методики не обязательно ограничиваются беспроводными приложениями или установками. Эти методики можно применить к видеокодированию для поддержки любого из разнообразных мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для запоминания на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или другие приложения. В некоторых примерах система 10 видеокодирования может быть сконфигурирована для поддержки однонаправленной или двунаправленной передачи видео для поддержки приложений, таких как потоковое видео, видео воспроизведение, видеовещание и/или видеотелефония.The techniques disclosed herein are not necessarily limited to wireless applications or installations. These techniques can be applied to video coding to support any of a variety of multimedia applications, such as terrestrial television broadcasting, cable television, satellite television, streaming video, for example, via the Internet, digital video encoding for storage on a storage medium, digital video decoding, stored on a storage medium, or other applications. In some examples,
В примере по Фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых случаях выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12 источник 18 видео может включать в себя такой источник, как устройство фиксации видео, например, видеокамеру, видеоархив, содержащий ранее зафиксированное видео, интерфейс подачи видео для приема видео от провайдера видеоконтента и/или системы компьютерной графики для создания видеоданных или комбинации указанных источников.In the example of FIG. 1,
Зафиксированное в данный момент, предварительно зафиксированное или созданное компьютером видео может быть кодировано видеокодером 20. Кодированные видеоданные могут передаваться непосредственно на устройство-адресат 14 через выходной интерфейс 22 устройства-источника 12. Кодированные видеоданные также могут запоминаться на носителе данных или файловом сервере для обращения к ним в будущем со стороны устройства-адресата 14 для декодирования и/или воспроизведения.Currently captured, pre-captured, or computer-generated video can be encoded by
В примере на Фиг. 1 устройство-адресат 14 включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых случаях входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства-адресата 14 принимает кодированные видеоданные через канал 16. Кодированные видеоданные могут включать в себя разнообразные синтаксические элементы, созданные видеокодером 20, которые представляют видеоданные. Указанные синтаксические элементы могут быть включены в кодированные видеоданные, передаваемые через среду связи, запоминаемые на носителе данных или запоминаемые на файловом сервере.In the example of FIG. 1,
Устройство 32 отображения может являться составной частью (или быть внешним) устройства-адресата 14. В некоторых примерах устройство-адресат 14 может включать в себя интегрированное в него устройство отображения, а также быть сконфигурировано для взаимодействия с внешним устройством отображения. В других примерах устройством-адресатом 14 может быть устройство отображения. В общем случае устройство 32 отображения отображает пользователю декодированные видеоданные. Устройство 32 отображения может содержать любое из разнообразных устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.The
Видеокодер 20 и видеодекодер 30 могут функционировать согласно стандарту сжатия видео, такому как стандарт высокоэффективного видеокодирования (HEVC), разрабатываемый в настоящее время, и может соответствовать тестовой модели HEVC (HM). Последний проект стандарта HEVC, называемый «HEVC Working Draft 6» или «WD6» описан в документе JCTVC-H1003, Bross и др., «High efficiency video coding (HEVC) text specification draft 6» Объединенной команды разработчиков систем видеокодирования (JCT-VC) стандартов ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 8th Meeting: SanJose, California USA, February, 2012, который по состоянию на 1 мая 2012 года можно скачать из:http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip., и содержание которого целиком включено сюда по ссылке. В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать согласно другим коммерческим или промышленным стандартам, таким как стандарт ITU-T H.264, также называемый MPEG-4, часть 10, AVC (усовершенствованное видеокодирование) или расширениям указанных стандартов, когда в них включены методики разделения изображения на тайлы или волны волновой параллельной обработки. Однако методики, раскрытые в этом изобретении, не ограничиваются каким-либо конкретным стандартом или методикой кодирования. Другие примеры стандартов и методик сжатия видео включают в себя MPEG-2 и ITU-T H.263 и патентованные форматы сжатия или форматы сжатия из открытых источников, такие как VP8 и родственные форматы при использовании методик разделения изображения на тайлы или волны волновой параллельной обработки.
Хотя это на Фиг. 1 не показано, согласно некоторым аспектам видеокодер 20 и видеодекодер 30 могут быть интегрированы каждый с аудиокодером и аудиодекодером и могут включать в себя соответствующие блоки MUX-DMUX (мультиплексор-демультиплексор) или другие аппаратные и программные средства для кодирования как аудио, так и видео в общем потоке данных или в отдельных потоках данных. В некоторых примерах, если это имеет место, блоки MUX-DMUX могут соответствовать Протоколу мультиплексора ITU H.223 или другим протоколам, таким как Протокол дэйтаграмм пользователя (UDP).Although this is in FIG. 1 is not shown, in some aspects,
Следует заметить, что Фиг. 1 является просто примером, и раскрытые здесь методики можно применить к установкам видеокодирования (например, видеокодирования или видеодекодирования), которые не обязательно включают какой-либо обмен данными между устройством кодирования и устройством декодирования. В других примерах данные могут извлекаться из локальной памяти, поступать в виде потока через сеть или т.п. Устройство кодирования может кодировать и запоминать данные в памяти, и/или устройство декодирования может извлекать и декодировать данные из памяти. Во многих примерах кодирование и декодирование выполняется устройствами, которые не осуществляют обмен данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.It should be noted that FIG. 1 is just an example, and the techniques disclosed herein can be applied to video encoding settings (eg, video encoding or video decoding), which do not necessarily include any kind of data exchange between the encoding device and the decoding device. In other examples, data may be retrieved from local memory, received as a stream through a network, or the like. An encoding device may encode and store data in memory, and / or a decoding device may extract and decode data from memory. In many examples, encoding and decoding is performed by devices that do not exchange data with each other, but simply encode data into memory and / or extract and decode data from memory.
Видеокодер 20 и видеодекодер 30 могут быть реализованы каждый в виде любых подходящих схем кодера или декодера, таких как один или более микропроцессоров, цифровые процессоры сигналов (DSP), прикладные специализированные интегральные схемы ASIC, вентильные матрицы, программируемые пользователем (FPGA), дискретные логические схемы, аппаратные средства, или любые их комбинации. При частичной реализации указанных методик программными средствами устройство может хранить команды программного обеспечения на подходящем считываемом компьютером носителе длительного хранения для выполнения этих команд аппаратными средствами с использованием одного или более процессоров, реализующих раскрытые в изобретении методики. Как видеокодер 20, так и видеодекодер 30 могут быть включены в состав одного или более кодеров или декодеров, либо каждый из них может быть интегрирован в объединенном кодере/декодере («CODEC») в соответствующем устройстве.
Как кратко упоминалось выше, видеокодер 20 кодирует видеоданные. Эти видеоданные могут содержать одно или более изображений. Каждое из этих изображений представляет собой неподвижное изображение, образующее часть видео. В некоторых случаях изображение может называться «кадром» видео или «полем» видео. Когда видеокодер 20 кодирует видеоданные, он может создать битовый поток. Этот битовый поток может включать в себя последовательность бит, которые образуют кодированное представление видеоданных. Битовый поток может включать в себя кодированные изображения и связанные с ними данные. Кодированное изображение является кодированным представлением изображения.As briefly mentioned above,
Для создания битового потока видеокодер 20 может выполнить операции кодирования для каждого изображения в видеоданных. Когда видеокодер 20 выполняет операции кодирования для изображений, он может создать ряд кодированных изображений и связанных с ними данных. Эти связанные с изображениями данные могут включать в себя наборы параметров последовательности, наборы параметров изображения, наборы параметров адаптации и другие синтаксические структуры. Набор параметров последовательности (SPS) может содержать параметры, применяемые к нулю или более последовательностям изображений. Последовательности изображений также могут называться кодированными видеопоследовательностями, как в стандартах H.264/AVC и HEVC. Набор параметров изображения (PPS) может содержать параметры, применяемые к нулю или более изображениям. Набор параметров адаптации (APS) может содержать параметры, применяемые к нулю или более изображениям. Параметрами в наборе APS могут быть параметры, вероятность изменения которых выше, чем у параметров в наборе PPS.To create a bitstream,
Для создания кодированного изображения видеокодер 20 может разделить изображение на видеоблоки одинакового размера. Видеоблок может представлять собой двумерную матрицу отсчетов. Каждый из видеоблоков связан с древовидным блоком. В некоторых случаях древовидный блок может называться самым крупным блоком кодирования (LCU) или древовидным блоком кодирования. Древовидные блоки стандарта HEVC могут во многих отношениях быть подобными макроблокам предшествующих стандартов, таких как H.264/AVC. Однако древовидный блок не обязательно ограничен конкретным размером и может включать в себя один или более блоков кодирования (CU). Видеокодер 20 может использовать разбиение квадродерева для выделения видеоблоков древовидных блоков в видеоблоки, связанные с блоками CU, отсюда название «древовидные блоки».To create an encoded image,
В некоторых примерах видеокодер 20 может разбить изображение на множество слайсов. Каждый из слайсов может включать в себя целое число последовательно закодированных древовидных блоков. В некоторых случаях каждый из слайсов может включать в себя целое число последовательно закодированных блоков CU. В качестве части выполнения операции кодирования изображения, видеокодер 20 может выполнять операции кодирования на каждом слайсе данного изображения. При выполнении видеокодером 20 операции кодирования на слайсе видеокодер 20 может создать кодированные данные, связанные с данным слайсом. Кодированные данные, связанные с данным слайсом, могут называться «кодированным слайсом».In some examples,
Для создания кодированного слайса видеокодер 20 может выполнить операции кодирования на каждом древовидном блоке в слайсе. При выполнении видеокодером 20 операции кодирования на древовидной блоке он может создать кодированный древовидный блок. Кодированный древовидный блок может содержать данные, представляющие кодированную версию древовидного блока.To create a coded slice,
При создании кодированного слайса видеокодер 20 может выполнить операцию кодирования на древовидных блоках в этом слайсе согласно порядку растрового сканирования. Другими словами, видеокодер 20 может кодировать древовидные блоки слайса в порядке слева направо через самую верхнюю строку древовидных блоков в слайсе, затем слева направо через следующую, лежащую ниже строку древовидных блоков и так далее, пока видеокодер 20 не выполнит кодирование всех древовидных блоков в данном слайсе.When creating an encoded slice,
В результате кодирования согласно порядку растрового сканирования будут кодированы древовидные блоки, находящиеся над и слева от данного древовидного блока, а древовидные блоки, находящиеся ниже и правее данного древовидного блока, пока останутся не кодированными. Затем видеокодер 20 может получить доступ к информации, созданной в результате кодирования древовидных блоков, находящихся выше и слева от данного древовидного блока при кодировании данного древовидного блока. Однако видеокодер 20 не может получить доступ к информации, созданной в результате кодирования древовидных блоков, находящихся ниже и справа от данного древовидного блока при кодировании данного древовидно блока.As a result of encoding, according to the order of raster scanning, tree blocks located above and to the left of this tree block will be encoded, and tree blocks located below and to the right of this tree block will remain unencrypted. Then,
Для создания кодированного древовидного блока видеокодер 20 может рекурсивно выполнять разбиение квадродерева на видеоблоке древовидного блока для разделения видеоблока на последовательно уменьшающиеся видеоблоки. Каждый из последовательно уменьшающихся видеоблоков может быть связан со своим блоком CU. Например, видеокодер 20 может разбить видеоблок древовидного блока на четыре подблока одинакового размера, разбить один или более из указанных подблоков на четыре элемента подблока одинакового размера и т.д. Выделенный таким образом блок CU может представлять собой блок CU, чей видеоблок разбит на видеоблоки, связанные с другими блоками CU. Неразбитый блок CU - это блок CU, чей видеоблок не разбит на видеоблоки, связанные с другими блоками CU.To create a coded tree block,
Один или более синтаксических элементов в битовом потоке могут указывать максимальное количество возможных разбиений указанного видеоблока древовидного блока, которые выполняются видеокодером 20. Видеоблок блока CU может иметь форму квадрата. Размер видеоблока блока CU может находиться в диапазоне от 8×8 пикселей до размера видеоблока древовидного блока (то есть, размера древовидного блока), составляющего максимум 64×64 пикселя или больше.One or more syntax elements in the bitstream may indicate the maximum number of possible partitions of the indicated video block of the tree block that are performed by
Видеокодер 20 может выполнять операции кодирования каждого блока CU древовидного блока согласно порядку z-сканирования. Другими словами, видеокодер 20 может кодировать левый верхний блок CU, правый верхний блок CU, левый нижний блок CU, а затем правый нижний блок CU в указанном порядке. При выполнении операции кодирования на выделенном блоке CU видеокодер 20 может кодировать блоки CU, связанные с подблоками видеоблока выделенного блока CU, согласно порядку z-сканирования. Другими словами, видеокодер 20 может кодировать блок CU, связанный с левым нижним подблоком, а затем блок CU, связанный с правым нижним подблоком в указанном порядке.
В результате кодирования блоков CU древовидного блока согласно порядку z-сканирования могут оказаться кодированными блоки CU выше, выше и левее, выше и правее, левее и ниже и левее от данного блока CU. Не кодированными останутся блоки CU ниже справа от данного блока CU. Затем видеокодер 20 получает возможность доступа к информации, созданной посредством кодирования некоторых блоков CU, являющихся соседними по отношению к данному блоку CU, при кодировании данного блока CU. Однако видеокодер 20 может оказаться неспособным обращаться к информации, созданной путем кодирования других блоков CU, являющихся соседними по отношению к данному блоку CU, при кодировании данного блока CU.As a result of encoding the CU blocks of the tree block according to the z-scan order, the CU blocks may be encoded above, above and to the left, above and to the right, to the left and below and to the left of the given CU. Uncoded will remain the CUs below to the right of this CU. Then,
Когда видеокодер 20 выполняет кодирование неразделенного блока CU, видеокодер 20 может создать один или более блоков предсказания (PU) для этого блока CU. Каждый из блоков PU блока CU может быть связан с другим видеоблоком в видеоблоке блока CU. Видеокодер 20 может создать предсказанный видеоблок для каждого блока PU блока CU. Предсказанный видеоблок блока PU может представлять собой блок отсчетов. Видеокодер 20 может использовать внутрикадровое предсказание или межкадровое предсказание для создания предсказанного видеоблока для PU.When
Когда видеокодер 20 использует внутрикадровое предсказание для создания предсказанного видеоблока блока PU, видеокодер 20 может создать предсказанный видеоблок блока PU на основе декодированных отсчетов изображения, связанных с данным блоком PU. Если видеокодер 20 использует внутрикадровое предсказание для создания предсказанных видеоблоков блока PU блока CU, блок CU является блоком CU с внутрикадровым предсказанием. Когда видеокодер использует межкадровое предсказание для создания предсказанного видеоблока блока PU, видеокодер 20 может создать предсказанный видеоблок блока PU на основе декодированных отсчетов одного или более изображений, отличных от изображения, связанного с данным PU. Если видеокодер 20 использует межкадровое предсказание для создания предсказанных видеоблоков блоков PU блока CU, то блок CU представляет собой блок CU с межкадровым предсказанием.When
Кроме того, когда видеокодер 20 использует межкадровое предсказание для создания предсказанного видеоблока для блока PU, видеокодер 20 может создать информацию о движении для данного блока PU. Информация о движении для блока PU может указывать один или более опорных блоков блока PU. Каждый опорный блок блока PU может представлять собой видеоблок в опорном изображении. Опорным изображением может быть изображение, отличное от изображения, связанного с блоком PU. В некоторых случаях опорный блок блока PU также может называться «опорным образцом» блока PU. Видеокодер 20 может создать предсказанный видеоблок для блока PU на основе опорных блоков данного PU.In addition, when
После создания видеокодером 20 предсказанных видеоблоков для одного или более PU блока CU видеокодер 20 может создать остаточные данные для блока CU на основе предсказанных видеоблоков для блоков PU блока CU. Остаточные данные для блока CU могут указывать разность между отсчетами в предсказанных видеоблоках для блоков PU блока CU и исходном видеоблоке блока CU.After the
Кроме того, в качестве части процесса выполнения операции кодирования на неразделенном блоке CU, видеокодер 20 может выполнить рекурсивное разбиение по квадродереву на остаточных данных блока CU для разделения остаточных данных блока CU на один или более блоков остаточных данных (то есть, остаточных видеоблоков), связанных с блоками преобразования (TU) блока CU. Каждый блок TU блока CU может быть связан с другим остаточным видеоблоком.In addition, as part of the process of performing the encoding operation on an unpartitioned CU,
Видеокодер 20 может применить одно или более преобразований к остаточным видеоблокам, связанным с блоками TU, для создания блоков коэффициентов преобразования, связанных с блоками TU. Концептуально блок коэффициентов преобразования может представлять собой двумерную (2D) матрицу коэффициентов преобразования.
После создания блока коэффициентов преобразования видеокодер 20 может реализовать процесс квантования на блоке коэффициентов преобразования. Обычно квантование относится к процессу, в котором выполняется квантование коэффициентов преобразования с целью возможного сокращения объема данных, используемых для представления коэффициентов преобразования, что обеспечивает дополнительное сжатие. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами преобразования. Например, n-битный коэффициент преобразования можно округлить до m-битного коэффициента преобразования в процесс квантования, где n больше m.After creating a block of transform coefficients,
Видеокодер 20 может связать каждый блок CU со значением параметра квантования (QP). Значение QP, связанное с блоком CU, может определить, каким образом видеокодер 20 выполняет квантование блоков коэффициентов преобразования, связанных с данным блоком CU. Видеокодер 20 может отрегулировать степень квантования, применяемого к блокам коэффициентов преобразования, связанным с блоком CU, путем регулировки значения QP, связанного с данным блоком CU.
После квантования блока коэффициентов преобразования видеокодером 20 он создает наборы синтаксических элементов, которые представляют коэффициенты трансформации в квантованном блоке коэффициентов трансформации. Видеокодер 20 может применить операции энтропийного кодирования, такие как операции контекстно-адаптивного бинарного арифметического кодирования (CABAC) к некоторым из этих синтаксических элементов.After quantizing the transform coefficient block by
Битовый поток, созданный видеокодером 20, может включать в себя ряд блоков уровня абстракции сети (NAL). Каждый из блоков NAL может представлять собой синтаксическую структуру, содержащую индикацию о типе данных в блоке NAL, и байты, содержащие данные. Например, блок NAL может содержать данные, представляющие набор параметров последовательности, набор параметров изображения, кодированный слайс, одно или более сообщений с дополнительной расширенной информацией (SEI), ограничитель блока доступа, данные фильтра, или другой тип данных. Данные в блоке NAL могут включать в себя различные синтаксические структуры.The bitstream generated by
Видеодекодер 30 может принимать битовый поток, созданный видеокодером 20. Этот битовый поток может включать в себя кодированное представление видеоданных, кодированных видеокодером 20. Принимая битовый поток, видеодекодер 30 может выполнить операцию синтаксического анализа этого битового потока. При выполнении операции синтаксического анализа видеодекодер 30 может выделить синтаксические элементы из битового потока. Видеодекодер 30 может восстановить изображения видеоданных на основе синтаксических элементов, извлеченных из битового потока. Процесс восстановления видеоданных на основе синтаксических элементов в общем случае является обратным по отношению к процессу, выполняемому видеокодером 20 для создания синтаксических элементов.
После извлечения видеодекодером 30 синтаксических элементов, связанных с блоком CU, видеодекодер 30 может создать предсказанные видеоблоки для блоков PU блока CU на основе этих синтаксических элементов. Вдобавок, видеодекодер 30 может выполнить обратное квантование блоков коэффициентов преобразования, связанных с блоками TU данного блока CU. Видеодекодер 30 может выполнить обратное преобразование блоков коэффициентов преобразования для восстановления остаточных видеоблоков, связанных с блоками TU данного блока CU. После создания предсказанных видеоблоков и восстановления остаточных видеоблоков видеодекодер 30 может восстановить видеоблок блока CU на основе предсказанных видеоблоков и остаточных видеоблоков. Видеодекодер 30 может таким путем восстановить видеоблоки блоков CU на основе указанных синтаксических элементов в битовом потоке.After the
Видеокодер 20 может разделить текущее изображение на множество разделов изображения. Разделы изображения могут быть связаны с неперекрывающимися поднаборами древовидных блоков текущего изображения. Видеокодер 20 может разделить текущее изображение на множество разделов изображений различными путями. Как описано ниже, видеокодер 20 может разделить текущее изображение на множество тайлов или множество волн волновой параллельной обработки (WPP). Используемый в настоящем изобретении термин «раздел изображения» относится в общем как к тайлам, так и к волнам WPP. Процесс разделения текущего изображения на разделы изображения может называться «разбиением» текущего изображения на разделы изображения.
Как упоминалось выше, видеокодер 20 может разделить текущее изображение на один или более тайлов. Каждый тайл может содержать целое число древовидных блоков в текущем изображении. Видеокодер 20 может разделить текущее изображение на тайлы путем определения двух или боле вертикальных границ тайла и двух или более горизонтальных границ тайла. Каждая вертикальная сторона текущего изображения может рассматриваться как вертикальная граница тайла. Каждую горизонтальную сторону текущего изображения можно считать горизонтальной границей тайла. Например, если видеокодер 20 определяет четыре вертикальные границы тайлов и три горизонтальных границы тайлов для текущего изображения, то текущее изображение делится на шесть тайлов.As mentioned above,
Видеокодер, такой как видеокодер 20 или видеодекодер 30, может кодировать тайлы текущего изображения согласно порядку растрового сканирования. Кроме того, при кодировании тайла видеокодером видеокодер может закодировать каждый древовидный блок в данном тайле согласно порядку растрового сканирования. Видеокодер может таким путем закодировать каждый древовидный блок данного тайла текущего изображения, прежде чем кодировать какой-либо древовидный блок другого тайла этого изображения. Следовательно, порядок кодирования видеокодером древовидных блоков текущего изображения, может отличаться, когда видеокодер разделяет текущее изображение на множество тайлов, от случая, когда видеокодер не разделяет текущее изображение на множество тайлов.A video encoder, such as
Кроме того, в некоторых случаях видеокодер может использовать информацию, связанную с соседними в пространстве блоками CU для выполнения внутрикадрового предсказания на данном блоке CU в текущем изображении, коль скоро данный блок CU и соседние в пространстве блоки CU относятся к одному и тому же тайлу. Соседние в пространстве блоки CU - это блоки CU, относящиеся к текущему слайсу текущего изображения. В некоторых случаях видеокодер может использовать информацию, связанную с соседними в пространстве блоками CU, для выбора контекста для кодирования синтаксического элемента данного блока CU по алгоритму CABAC, коль скоро данный блок CU и соседние в пространстве блоки CU находятся в одном и том же тайле. Из-за указанных ограничений видеокодер способен выполнять параллельное кодирование древовидных блоков множества тайлов.In addition, in some cases, the video encoder may use information associated with spatially adjacent CUs to perform intra-frame prediction on a given CU in the current image, as long as the given CU and spatially adjacent CUs belong to the same tile. Space neighboring CUs are CUs related to the current slice of the current image. In some cases, a video encoder may use information associated with spatially adjacent CUs to select a context for encoding a syntax element of a given CU using the CABAC algorithm, as long as a given CU and spatially adjacent CUs are in the same tile. Due to these limitations, the video encoder is capable of parallel coding of tree blocks of multiple tiles.
В других примерах видеокодер может закодировать текущее изображение, используя волновую параллельную обработку (WPP). При кодировании текущего изображения с использованием WPP видеокодер может разделить древовидные блоки текущего изображения на множество «волн» WPP. Каждая волна WPP может соответствовать своей строке древовидных блоков в текущем изображении. При кодировании текущего изображения с использованием WPP видеокодер может начать кодирование с верхней строки древовидных блоков. Закодировав два или более древовидных блоков верхней строки, видеокодер может начать кодировать вторую (сверху) строку древовидных блоков параллельно с кодированием верхней строки древовидных блоков. Закодировав два или более древовидных блока из второй строки сверху, видеокодер может начать кодировать третью сверху строку древовидных блоков параллельно с кодированием вышележащих строк древовидных блоков. Такой порядок кодирования может продолжаться до нижних строк древовидных блоков в текущем изображении.In other examples, the video encoder may encode the current image using wave parallel processing (WPP). When encoding the current image using WPP, the video encoder can split the tree blocks of the current image into many WPP “waves”. Each WPP wave can correspond to its row of tree blocks in the current image. When encoding the current image using WPP, the video encoder can start encoding from the top line of the tree blocks. Having encoded two or more tree blocks of the top row, the video encoder can begin to encode the second (top) row of tree blocks in parallel with the encoding of the top row of tree blocks. Having encoded two or more tree blocks from the second row from the top, the video encoder can begin to encode the third from the top row of tree blocks in parallel with the encoding of the overlying rows of tree blocks. This encoding order can continue to the bottom rows of tree blocks in the current image.
При кодировании видеокодером текущего изображения с использованием WPP видеокодер может использовать информацию, связанную с соседними в пространстве блоками CU вне текущего древовидного блока, для выполнения внутрикадрового предсказания на данном блоке CU в текущем древовидном блоке, пока имеются соседние в пространстве блоки CU слева, слева и выше, выше или справа и выше от текущего древовидного блока. Если текущим древовидным блоком является крайний левый древовидный блок в строке, не являющейся самой верхней строкой, видеокодер может использовать информацию, связанную со вторым древовидным блоком непосредственно вышележащей строки, для выбора контекста для кодирования синтаксического элемента текущего древовидного блока согласно алгоритму CABAC. В противном случае, если текущий древовидный блок не является крайним левым древовидным блоком в данной строке, то видеокодер может использовать информацию, связанную с древовидным блоком, находящимся слева от текущего древовидного блока, для выбора контекста для кодирования синтаксического элемента текущего древовидного блока, используя алгоритм CABAC. Таким образом, видеокодер может использовать состояния CABAC строки на основе состояний CABAC, относящихся к непосредственно вышележащей строке, после кодирования двух или более древовидных блоков непосредственно вышележащей строки.When a video encoder encodes a current image using WPP, the video encoder can use the information associated with the spatial neighboring CUs outside the current treeblock to perform intra-frame prediction on this CU in the current treeblock, as long as there are neighboring CUs in the space left, left and above , above or to the right and above the current treeblock. If the current treeblock is the leftmost treeblock in a row other than the topmost row, the video encoder can use the information associated with the second treeblock of the immediately superior row to select the context for encoding the syntax element of the current treeblock according to the CABAC algorithm. Otherwise, if the current treeblock is not the leftmost treeblock in this row, the video encoder can use the information associated with the treeblock to the left of the current treeblock to select a context for encoding the syntax element of the current treeblock using the CABAC algorithm . Thus, the video encoder can use the CABAC states of a row based on the CABAC states associated with the immediately superior row after encoding two or more tree blocks of the immediately superior row.
В некоторых примерах при кодировании видеокодером текущего изображения с использованием WPP, горизонтальными и вертикальными границами текущего изображения являются только границы тайлов текущего изображения. Таким образом, только тайл текущего изображения может иметь тот же размер, что и текущее изображение. Видеокодер может разделить текущее изображение, а значит, один тайл текущего изображения на множество волн WPP.In some examples, when a video encoder encodes a current image using WPP, only the tile boundaries of the current image are horizontal and vertical borders of the current image. Thus, only the tile of the current image can be the same size as the current image. A video encoder can split the current image, which means one tile of the current image into many WPP waves.
Как упоминалось выше, видеокодер 20 может создать блок NAL кодированного слайса, который включает в себя кодированное представление слайса. Слайс может быть связан с целым числом последовательно закодированных древовидных блоков. Блок NAL кодированного слайса может включать в себя заголовок слайса и данные слайса. Данные слайса могут включать в себя кодированные представления каждого древовидного блока, связанного с этим слайсом. Видеокодер 20 может создать блок NAL кодированного слайса, так чтобы указанные кодированные представления древовидных блоков группировались в данных слайса в сегментах согласно разделам изображения, к которым относятся данные древовидные блоки. Например, каждый блок NAL кодированного слайса может включать в себя кодированный древовидный блок, связанный с первым разделом изображения, за которым следует древовидный блок, связанный со вторым разделом изображения, за которым следует кодированный древовидный блок, связанный с третьим разделом изображения, и т.д.As mentioned above,
Согласно раскрытым здесь методикам видеокодер 20 может заполнить один или более сегментов незначащей информацией, так чтобы каждый сегмент начинался на границе байта. Блок NAL кодированного слайса может быть разделен на ряд байтов. Сегмент может начинаться на границе байта, когда его первый бит является первым битом одного из байтов блока NAL кодированного слайса. Кроме того, сегмент может быть выровнен по байтам, если первый бит сегмента является первым битом одного из байтов блока NAL кодированного слайса. При заполнении видеокодером сегмента видеокодер 20 может приложить к этому сегменту заполняющие биты. Например, видеокодер 20 может добавить один или более бит заполнения к сегменту таким образом, чтобы количество бит в сегменте делилось на восемь без остатка. Биты заполнения не обязаны иметь семантическое значение; они служат для того, чтобы обеспечить начало следующего сегмента с границы байта.According to the techniques disclosed herein,
Получив блок NAL кодированного слайса, видеодекодер 30 может запомнить этот блок NAL кодированного слайса в памяти. Для параллельного декодирования разделов изображения видеодекодер 30 может распределить сегменты по разным потокам декодирования, которые выполняются параллельно. Чтобы распределить сегменты по разным потокам декодирования, видеодекодеру 30 потребуется указать адреса памяти, связанные с началом каждого из сегментов. Видеодекодер 30 может использовать побайтовую адресацию памяти. Соответственно, видеодекодер 30 возможно не сможет указать адрес памяти, связанный с началом сегмента, если начало сегмента оказалось внутри байта. Следовательно, видеодекодер 30 не сможет в этом случае выполнить параллельное декодирование кодированных древовидных блоков в сегменте, если один или более сегментов начинаются внутри байта. В качестве альтернативы, видеодекодер 30 может использовать побитовую адресацию памяти или побайтовую плюс побитовую адресацию, чтобы иметь возможность параллельного декодирования древовидных блоков в указанных сегментах, но при этом усложняется техническая реализация и вычисления.Upon receiving the NAL unit of the encoded slice,
Видеокодер 20 может указанным образом разделить изображение на множество разделов изображения. Изображение содержит множество древовидных блоков. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков изображения. Видеокодер 20 может создать блок NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, которые связаны со слайсом изображения. Кодированные представления древовидных блоков в блоке NAL кодированного слайса группируются в сегменты, связанные со своими разделами изображения. Один или более сегментов заполняют незначащей информацией, так чтобы каждый сегмент начинался на границе байта.
Кроме того, видеодекодер 30 может запомнить блок NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения. Изображение можно разделить на множество разделов изображения. Кодированные представления древовидных блоков можно сгруппировать в сегменты, каждый из которых будет связан со своим разделом изображения. Один или более сегментов заполняют незначащей информацией с тем, чтобы каждый сегмент начинался с границы байта. Видеодекодер 30 может декодировать кодированные представления древовидных блоков. В некоторых случаях видеодекодер 30 может декодировать кодированные представления древовидных блоков в двух или более сегментах параллельно.In addition,
На Фиг. 2 представлена блок-схема, иллюстрирующая примерный видеокодер 20, сконфигурированный для реализации раскрытых здесь методик. Фиг. 2 приведена в разъяснительных целях, и ее не следует рассматривать как ограничение указанных методик, широко представленных и описанных здесь в качестве примеров. В целях разъяснения изобретения видеокодер 20 описан здесь в контексте кодирования согласно стандарту HEVC. Однако раскрытые здесь методики можно применить к другим стандартам или методам кодирования.In FIG. 2 is a flowchart illustrating an
В примере по Фиг. 2 видеокодер 20 включает в себя множество функциональных компонент. Функциональные компоненты видеокодера 20 включают в себя модуль 100 предсказания, модуль 102 создания данных остатка, модуль 104 преобразования, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обратного преобразования, модуль 112 восстановления, модуль 113 фильтров, буфер 114 декодированных изображений и модуль 116 энтропийного кодирования. Модуль 100 предсказания включает в себя модуль 121 межкадрового предсказания, модуль 122 оценки движения, модуль 124 компенсации движения и модуль 126 внутрикадрового предсказания. В других примерах видеокодер 20 может включать в себя меньшее или большее количество функциональных компонент или другие функциональные компоненты. Кроме того, модуль 122 оценки движения и модуль 124 компенсации движения могут быть выполнены как единый модуль с высокой степенью интеграции, но они представлены в примере на Фиг. 2 отдельно в целях объяснения их функционирования.In the example of FIG. 2,
Видеокодер 20 может принимать видеоданные. Прием видеоданных видеокодером 20 может осуществляться от различных источников. Например, видеокодер 20 может принимать видеоданные от источника 18 видео (Фиг. 1) или другого источника. Видеоданные могут представлять ряд изображений. Для кодирования видеоданных видеокодер 20 может выполнить операцию кодирования для каждого изображения. В качестве части процесса выполнения операции кодирования изображения видеокодер 20 может выполнить операции кодирования на каждом слайсе данного изображения. В качестве части выполнения операции кодирования на слайсе видеокодер 20 может выполнить операции кодирования на древовидных блоках в слайсе.
Как часть выполнения операции кодирования на древовидном блоке модуль 100 предсказания может выполнить разбиение на основе квадродерева на видеоблоке древовидного блока для разделения видеоблока на уменьшающиеся с каждым разбиением видеоблоки. Каждый из видеоблоков меньшего размера может быть связан со своим блоком CU. Например, модуль 100 предсказания может разбить видеоблок древовидного блока на четыре подблока одинакового размера, разбить один или более из этих подблоков на четыре элементов подблока одинакового размера и т.д.As part of the encoding operation on the treeblock, the
Размеры видеоблоков, связанных с блоками CU, могут находиться в диапазоне от 8×8 отсчетов до размера древовидного блока, имеющего максимум 64×64 отсчетов или более. В данном описании выражения «N×N» и «N на N» могут использоваться как взаимозаменяемые для ссылки на размерности отсчетов видеоблока по вертикали и горизонтали, например, «16×16» отсчетов или «16 на 16» отсчетов. В общем случае видеоблок 16×16 имеет шестнадцать отсчетов в вертикальном направлении (y=16) и шестнадцать отсчетов в горизонтальном направлении (х=16). Аналогичным образом, блок N×N обычно имеет N отсчетов в вертикальном направлении и N отсчетов в горизонтальном направлении, где N представляет неотрицательное целое число.The sizes of the video blocks associated with the CUs may range from 8 × 8 samples to the size of a tree block having a maximum of 64 × 64 samples or more. In this description, the expressions “N × N” and “N by N” can be used interchangeably to refer to the dimensions of the video block samples vertically and horizontally, for example, “16 × 16” samples or “16 by 16” samples. In the general case, a 16 × 16 video block has sixteen samples in the vertical direction (y = 16) and sixteen samples in the horizontal direction (x = 16). Similarly, an N × N block typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer.
Кроме того, в качестве части выполнения операции кодирования на древовидном блоке, модуль 100 предсказания может создать структуру данных в виде иерархического квадродерева для данного древовидного блока. Например, древовидный блок может соответствовать корневому узлу структуры данных в виде квадродерева. Если модуль 100 предсказания разбивает видеоблок древовидного блока на четыре подблока, то этот корневой узел будет иметь четыре дочерних узла в структуре данных в виде квадродерева. Каждый из дочерних узлов соответствует блоку CU, связанному с одним из подблоков. Если модуль 100 предсказания разбивает один из подблоков на четыре элемента подблока, то узел, соответствующий блоку CU, связанному с данным подблоком, может иметь четыре дочерних узла, каждый из которых соответствует блоку CU, связанному с одним из элементов подблоков.In addition, as part of performing the encoding operation on the treeblock, the
Каждый узел структуры данных в виде квадродерева может содержать синтаксические данные (например, синтаксические элементы) для соответствующего древовидного блока или блока CU. Например, узел в квадродереве может включать в себя флаг расщепления, который указывает, разбит ли (то есть, расщеплен ли) видеоблок блока CU, соответствующий данному узлу, на четыре подблока. Синтаксические элементы для блока CU можно определить рекурсивно, и они будут зависеть от того, расщеплен ли данный видеоблок блока CU на подблоки. Блок CU, чей видеоблок не расщеплен, может соответствовать концевому узлу в структуре данных типа квадродерева. Кодированный древовидный блок может включать в себя данные на основе структурных данных типа квадродерева для соответствующего древовидного блока.Each quad-tree data structure node may contain syntax data (eg, syntax elements) for a corresponding treeblock or CU. For example, a node in a quad tree may include a splitting flag, which indicates whether the video block of the CU corresponding to that node is split (i.e., split) into four sub-blocks. The syntax elements for the CU can be determined recursively, and they will depend on whether the given video block of the CU is split into sub-blocks. A CU whose video block is not split can correspond to an end node in a quad tree data structure. The encoded tree block may include data based on structural data such as a quad tree for the corresponding tree block.
Видеокодер 20 может выполнить операции кодирования на каждом неразделенном блоке CU древовидного блока. При выполнении видеокодером 20 операции кодирования на неразделенном блоке CU видеокодер 20 создает данные, представляющие кодированное представление неразделенного блока CU.
В качестве части выполнения операции кодирования на блоке CU модуль 100 предсказания может разбить видеоблок блока CU по нескольким (в предельном случае по одному) блокам PU блока CU. Видеокодер 20 и видеодекодер 30 могут поддерживать разные размеры блока PU. Если предположить, что размер конкретного блока CU составляет 2N×2N, то видеокодер 20 и видеодекодер 30 могут поддерживать размеры PU, составляющие 2N×2N или N×N, и межкадровое предсказание для симметричных размеров PU, составляющих 2N×2N, 2N×N, N×2N, N×N, 2N×nU, nL×2N, nR×2N или т.п. Видеокодер 20 и видеодекодер 30 также могут поддерживать асимметричное разбиение для PU с размерами, составляющими 2N×nU, 2N×nD, nL×2N и nR×2N. В некоторых примерах модуль 100 предсказания может выполнять геометрическое разбиение с целью разбиения видеоблока блока CU между блоками PU данного блока CU вдоль границы, не пересекающейся со сторонами видеоблока блока CU под прямыми углами.As part of the encoding operation on the CU, the
Модуль 121 межкадрового предсказания может выполнить межкадровое предсказание на каждом блоке PU блока CU. Межкадровое предсказание может обеспечить временное сжатие. Для выполнения межкадрового предсказания на блоке PU модуль 122 оценки движения может создать информацию о движении для блока PU. Модуль 124 компенсации движения может создать предсказанный видеоблок для блока PU на основе информации о движении и декодированных отсчетов изображений, отличных от изображения, связанного с данным блоком CU (то есть, опорные изображения). В данном описании предсказанный видеоблок, созданный модулем 124 компенсации движения, может называться видеоблоком с межкадровым предсказанием.
Слайсы могут быть I слайсами, P слайсами или B слайсами. Модуль 122 оценки движения и модуль 124 компенсации движения могут выполнить разные операции для блока PU блока CU в зависимости от того, в слайсе какого типа (I, P или B) находится данный блок PU. В I слайсе все блоки PU получены с использованием внутрикадрового предсказания. Следовательно, если блок PU находится в I слайсе, то модуль 122 оценки движения и модуль 124 компенсации движения не выполняют межкадровое предсказание на данном блоке PU.Slices can be I slices, P slices, or B slices.
Если блок PU находится в P слайсе, то изображение, содержащее этот бок PU, связано со списком опорных изображений, называемом «список 0». Каждое из опорных изображений в списке 0 содержит отсчеты, которые можно использовать для межкадрового предсказания других изображений. При выполнении модулем 122 оценки движения операции оценки движения в отношении блока PU в P слайсе, модуль 122 оценки движения может осуществлять поиск опорных изображений в списке 0 для опорного блока для данного блока PU. Опорный блок блока PU может представлять собой набор отсчетов, например, блок отсчетов, который ближе всех соответствует отсчетам в видеоблоке блока PU. Модуль 122 оценки движения может использовать самые разные метрики для определения того, насколько близко набор отсчетов в опорном изображении, соответствует отсчетам в видеоблоке блока PU. Например, модуль 122 оценки движения может определить, насколько близко набор отсчетов в опорном изображении соответствует отсчетам в видеоблоке блока PU, используя подход на основе суммы абсолютных разностей (SAD), суммы квадратов отклонений (SSD) или других показателей отклонений.If the PU is in the P slice, then the image containing this side of the PU is associated with a list of reference images called “list 0”. Each of the reference images in list 0 contains samples that can be used for inter-frame prediction of other images. When the
После идентификации опорного блока для блока PU в P слайсе модуль 122 оценки движения может создать опорный индекс, указывающий опорное изображение в списке 0, содержащем данный опорный блок, и вектор движения, который указывает пространственное смещение между блоком PU и опорным блоком. В различных примерах модуль 122 оценки движения может создавать векторы движения с переменной точностью. Например, модуль 122 оценки движения может создать векторы движения с точностью в четверть отсчета, с точностью одна восьмая отсчета или с другой дробной точностью. В случае дробной точности значения опорного блока можно интерполировать, исходя из целочисленных значений отсчетов позиций в опорном изображении. Модуль 122 оценки движения может выдать опорный индекс и вектор движения в качестве информации о движении блока PU. Модуль 124 компенсации движения может создать предсказанный видеоблок блока PU на основе опорного блока, идентифицированного информацией о движении блока PU.After identifying the reference block for the PU block in the P slice, the
Если блок PU находится в B слайсе, то изображение, содержащее этот блок PU, может быть связано с двумя списками опорных изображений, называемых «список 0» и «список 1». В некоторых примерах изображение, содержащее B слайс, может быть связано с комбинацией списков, являющейся комбинацией списка 0 и списка 1.If the PU is in the B slice, then the image containing this PU can be associated with two lists of reference images, called "list 0" and "
Кроме того, если блок PU находится в В слайсе, то модуль 122 оценки движения может выполнить однонаправленное предсказание или двунаправленное предсказание для данного блока PU. При выполнении модулем 122 оценки движения однонаправленного предсказания для блока PU этот модуль может выполнить поиск опорных изображений из списка 0 или из списка 1 для опорного блока для блока PU. Затем модуль 122 может создать опорный индекс, который указывает опорное изображение в списке 0 или списке 1, содержащем опорный блок, и вектор движения, который указывает пространственное смещение между блоком PU и опорным блоком. Модуль 122 оценки движения может выдать опорный индекс, индикатор направления предсказания и вектор движения в качестве информации о движении, касающейся блока PU. Индикатор направления предсказания может указать, указывает ли опорный индекс на опорное изображение в списке 0 или в списке 1. Модуль 124 компенсации движения может создать предсказанный видеоблок блока PU на основе опорного блока, указанного в информации о движении, касающейся блока PU.In addition, if the PU is in the B slice, then
Когда модуль 122 оценки движения выполняет двунаправленное предсказание для PU, модуль 122 оценки движения может осуществлять поиск опорных изображений в списке 0 для опорного блока для данного PU, а также может осуществлять поиск опорных изображений в списке 1 для другого опорного блока для блока PU. Затем модуль 122 оценки движения создает опорные индексы, которые указывают опорные изображения в списке 0 и в списке 1, содержащие опорные блоки и векторы движения, указывающие пространственные смещения между опорными блоками и блоком PU. Модуль 122 оценки движения может выдавать опорные индексы и векторы движения блока PU в качестве информации о движении блока PU. Модуль 124 компенсации движения может создать предсказанный видеоблок блока PU на основе опорных блоков, указанных в информации о движении блока PU. В некоторых случаях модуль 122 оценки движения не выдает полный набор информации о движении для блока PU в модуль 116 энтропийного кодирования. Наоборот, модуль 122 оценки движения может сообщить информацию о движении, относящуюся к блоку PU, со ссылкой на информацию о движении, относящуюся к другому блоку PU. Например, модуль 122 оценки движения может определить, что информация о движении для данного PU подобна информации о движении для соседнего блока PU. В этом примере модуль 122 оценки движения может указать (в синтаксической структуре, связанной с данным PU) значение, указывающее видеодекодеру 30, что данный блок PU имеет такую же информацию о движении, как соседний блок PU. В другом примере, модуль 122 оценки движении может идентифицировать (в синтаксической структуре, связанной с данным блоком PU) соседний блок PU и разность их векторов движения (MVD). Разность векторов движения указывает разность между вектором движения блока PU и вектором движения указанного соседнего блока PU. Видеодекодер 30 может использовать вектор движения указанного соседнего PU и разность векторов движения для определения вектора движения данного PU. Обратившись к информации о движении первого блока PU при сигнализации об информации о движении второго блока PU, видеокодер 20 имеет возможность сообщать информацию о движении для второго блока PU, используя меньшее количество бит.When
В качестве части выполнения операции кодирования на блоке CU модуль 126 внутрикадрового предсказания может выполнить внутрикадровое предсказание на блоках PU блока CU. Внутрикадровое предсказание может обеспечить пространственное сжатие. При выполнении внутрикадрового предсказания на блоке PU модуль 126 внутрикадрового предсказания может создать данные предсказания для блока PU на основе декодированных отсчетов других блоков PU в том же изображении. Данные предсказания для блока PU могут включать в себя предсказанный видеоблок и различные синтаксические элементы. Модуль 126 внутрикадрового предсказания может выполнить внутрикадровое предсказание на блоках PU в I слайсах, P слайсах и B слайсах.As part of the encoding operation on the CU, the
Для выполнения внутрикадрового предсказания на PU модуль 126 внутрикадрового предсказания может использовать множество режимов внутрикадрового предсказания для создания множества наборов данных предсказания для блока PU. При использовании режима внутрикадрового предсказания для создания набора данных предсказания для данного блока PU модуль 126 внутрикадрового предсказания может распространить отсчеты из видеоблоков соседних блоков PU через видеоблок данного блока PU в направлении и/или по градиенту, связанному с режимом внутрикадрового предсказания. Соседние блоки PU могут находиться выше, выше и правее, выше и левее или левее данного блока PU, если предположить, что кодирование для блоков PU, CU и древовидных блоков выполняется в порядке слева направо, сверху вниз. Модуль 126 внутрикадрового предсказания может использовать разное количество режимов внутрикадрового предсказания, например, 33 режима направленного внутрикадрового предсказания в зависимости от размера данного блока PU.To perform intra-frame prediction on the PU, the
Модуль 100 предсказания может выбрать данные предсказания для PU из числа данных предсказания, созданных модулем 124 компенсации движения для данного блока PU, или данные предсказания, созданные модулем 126 внутрикадрового предсказания для данного блока PU. В некоторых примерах модуль 100 предсказания выбирает данные предсказания для данного блока PU на основе показателя «расход бит/искажение» наборов данных предсказания.
Если модуль 100 предсказания выбирает данные предсказания, созданные модулем 126 внутрикадрового предсказания, он может просигнализировать о режиме внутрикадрового предсказания, использованном им для создания данных предсказания для блоков PU, то есть, о выбранном режиме внутрикадрового предсказания. Модуль 100 предсказания может выполнить сигнализацию о выбранном режиме внутрикадрового предсказания различными путями. Например, весьма вероятно, что выбранный режим внутрикадрового предсказания совпадает с режимом внутрикадрового предсказания соседнего блока PU. Другими словами, режим внутрикадрового предсказания соседнего блока PU может быть наиболее вероятным режимом для текущего блока PU. Таким образом, модуль 100 предсказания может создать синтаксический элемент для указания о том, что выбранный режим внутрикадрового предсказания совпадает с режимом внутрикадрового предсказания соседнего блока PU.If the
После выбора модулем 100 предсказания данных предсказания для блоков PU блока CU модуль 102 создания остаточных данных может создать остаточные данные для блока CU путем вычитания предсказанных видеоблоков блоков PU блока CU из видеоблока блока CU. Остаточные данные блока CU могут включать в себя остаточные видеоблоки в формате 2D, которые соответствуют разным компонентам отсчетов в видеоблоке блока CU. Например, остаточные данные могут включать в себя остаточный видеоблок, который соответствует разностям между компонентами яркости отсчетов в предсказанных видеоблоках блоков PU блока CU и компонентами яркости отсчетов в исходном видеоблоке блока CU. Вдобавок, остаточные данные блока CU могут включать в себя остаточные видеоблоки, которые соответствуют разностям между компонентами цветности отсчетов в предсказанных видеоблоках блоков PU блока CU и компонентами цветности отсчетов в исходном видеоблоке блока CU.After the
Модуль 100 предсказания может выполнить разбиение по квадродереву для разбиения остаточных видеоблоков блока CU на подблоки. Каждый неразделенный остаточный видеоблок может быть связан с другим блоком TU блока CU. Размеры и позиции остаточных видеоблоков, связанных с блоками TU блока CU, могут зависеть, а могут и не зависеть от размеров и позиций видеоблоков, связанных с блоками PU блока CU. Древовидная структура, известная как «остаточное квадродерево» (RQT), может включать в себя режимы, связанные с каждым из остаточных видеоблоков. Блоки TU блока CU могут соответствовать концевым узлам дерева RQT.
Модуль 104 преобразования может создать один или более блоков коэффициентов преобразования для каждого блока TU блока CU путем применения одного или более преобразований к остаточному видеоблоку, связанному с указанному блоком TU. Каждый блок коэффициентов преобразования может представлять собой 2D матрицу коэффициентов преобразования. Модуль 104 преобразования может применить разные преобразования к остаточному видеоблоку, связанному с блоком TU. Например, модуль 104 преобразования может применить дискретное косинусное преобразование (DCT), направленное преобразование или концептуально подобное преобразование к остаточному видеоблоку, связанному с TU.
После создания модулем 104 преобразования блока коэффициентов преобразования, связанного с TU, модуль 106 квантования может выполнить квантование коэффициентов преобразования в блоке коэффициентов преобразования. Модуль 106 квантования может выполнить квантование блока коэффициентов преобразования, связанного с TU блока CU, на основе значения QP, связанного с данным блоком CU.After the
Видеокодер 20 может связать значение QP с блоком CU различными путями. Например, видеокодер 20 может выполнить анализ «расход бит-искажение» на древовидном блоке, связанном с CU. При анализе «расход бит-искажение» видеокодер 20 может создать множество кодированных представлений древовидного блока путем многократного выполнения операции кодирования на древовидном блоке. Видеокодер 20 может связать разные значения QP с блоком CU при создании разных кодированных представлений данного древовидного блока. Видеокодер 20 может просигнализировать о том, что данное значение QP связано с CU, когда данное значение QP связано с CU в кодированном представлении древовидного блока, имеющего минимальный показатель «расход бит-искажение».
Модуль 108 обратного квантования и модуль 110 обратного преобразования могут применить обратное квантование и обратное преобразование к блоку коэффициентов преобразования соответственно для восстановления остаточного видеоблока из блока коэффициентов преобразования. Модуль 112 восстановления может добавить восстановленный остаточный видеоблок к соответствующим отсчетам из одного или более предсказанных видеоблоков, созданных модулем 100 предсказания, для создания восстановленного видеоблока, связанного с TU. Восстановив таким путем видеоблоки для каждого TU блока CU, видеокодер 20 может восстановить видеоблок блока CU.The
После того, как модуль 112 восстановления восстановит видеоблок блока CU, модуль 13 фильтров может выполнить операцию деблокирования для подавления артефактов блокирования в видеоблоке, связанном с данным блоком CU. После выполнения одной или более операций деблокирования модуль 113 фильтров может запомнить восстановленный видеоблок блока CU в буфере 114 декодированных изображений. Модуль 122 оценки движения и модуль 124 компенсации движения могут использовать опорное изображение, содержащее восстановленный видеоблок, для выполнения межкадрового предсказания на блоках PU последующих изображений. Вдобавок, модуль 126 внутрикадрового предсказания может использовать восстановленные видеоблоки в буфере 114 декодированных изображений для выполнения внутрикадрового предсказания на других блоках PU в том же изображении, что и CU.After the
Модуль 116 энтропийного кодирования может принимать данные от других функциональных компонент видеокодера 20. Например, модуль 116 энтропийного кодирования может принимать блоки коэффициентов преобразования от модуля 106 квантования и может принимать синтаксические элементы от модуля 100 предсказания. Получив указанные данные, модуль 116 энтропийного кодирования может выполнить одну или более операций энтропийного кодирования для создания кодированных данных. Например, видеокодер 20 может выполнить операцию контекстно-зависимого адаптивного кодирования с переменной длиной слова (CAVLC), операцию контекстно-адаптивного бинарного арифметического кодирования (CABAC), операцию кодирования с преобразованием слов переменной длины (V2V), операцию синтаксически ориентированного адаптивного бинарного арифметического кодирования (SBAC), операцию вероятностного энтропийного кодирования с интервальным разбиением (PIPE), или операцию энтропийного кодирования другого типа на этих данных. Модуль 116 энтропийного кодирования может вывести битовый поток, который включает в себя данные, закодированные с использованием энтропийного кодирования.
В качестве части выполнения операции энтропийного кодирования на данных модуль 116 энтропийного кодирования может выбрать контекстную модель. Если модуль 116 энтропийного кодирования выполняет операцию CABAC, то эта контекстная модель может указать оценки вероятностей того, что конкретные бины имеют конкретные значения. В контексте алгоритма CABAC термин «бин» используют для обращения к биту бинарной версии синтаксического элемента.As part of performing an entropy encoding operation on data,
Видеокодер 20 может создать блок NAL кодированного слайса для каждого слайса текущего изображения. Блок NAL кодированного слайса может включать в себя заголовок слайса и данные слайса. Данные слайса могут содержать множество сегментов. Каждый из этих сегментов включает в себя кодированные древовидные блоки, связанные с другим разделом изображения. Видеокодер 20 может заполнить сегменты незначащей информацией так, что каждый сегмент будет начинаться с границы байта в данных слайса. Например, сегменты в блоке NAL кодированного слайса могут включать в себя заданный сегмент. В этом примере видеокодер 20 может создать блок NAL кодированного слайса по меньшей мере частично посредством выполнения операции заполнения незначащей информацией, в которой к данному сегменту подсоединяются биты, если следующий древовидный блок находится внутри текущего слайса и связан с разделом изображения, отличным от заданного сегмента.
В некоторых примерах видеокодер 20 может создать заголовок слайса блока NAL кодированного слайса, с тем чтобы заголовок слайса указывал точки ввода для сегментов в данных слайса блока NAL кодированного слайса. Эти точки ввода могут указывать позиции в данных слайса указанных сегментов. Например, эти точки ввода могут указывать байтовые смещения сегментов. В этом примере байтовые смещения могут относиться к первому биту блока NAL кодированного слайса, первому биту данных слайса или другому биту в блоке NAL кодированного слайса. В другом примере указанные точки ввода могут указывать количество бит или байт в каждом из сегментов. В некоторых примерах заголовок слайса не указывает точку ввода для первого сегмента в данных слайса.In some examples,
В некоторых примерах видеокодер 20 может определить, имеет ли флаг первое значение (например, 1). Если флаг имеет это первое значение, то видеокодер 20 может заполнить один или более сегментов незначащей информацией так, чтобы каждый сегмент начинался с границы байта. Когда флаг имеет второе значение (например, 0), видеокодер 20 не заполняет сегменты незначащей информацией. В результате эти сегменты могут начинаться либо не начинаться с позиции, выровненной по байту. В указанных примерах набор параметров последовательности, набор параметров изображения, набор параметров адаптации или заголовок слайса могут включать в себя указанный флаг. Таким образом, в некоторых примерах видеокодер 20 может создать набор параметров, связанный с текущим изображением, где этот набор параметров включает в себя флаг. Когда этот флаг имеет первое значение, то один или более сегментов заполнены незначащей информацией, так что эти сегменты начинаются с границ байтов. Когда этот флаг имеет второе значение, эти сегменты могут начинаться, а могут и не начинаться с границ байтов.In some examples,
Кроме того, в некоторых примерах видеокодер 20 может разбить текущее изображение на множество тайлов. Если видеокодер 20 допускает в изображении предсказание через границы тайла (то есть, когда два или более тайлов зависят друг от друга), видеокодер 20 не выполняет указанное заполнение сегментов. В результате эти сегменты могут начинаться, а могут и не начинаться с позиции, выровненной по байту. Однако, если видеокодер 20 не допускает предсказание через границы тайла, он может заполнить один или более сегментов незначащей информацией таким образом, что каждый сегмент будет начинаться с границы байта. Таким образом, видеокодер 20 может создать блок NAL кодированного слайса по меньшей мере частично путем выполнения операции заполнения незначащей информацией, которая обеспечивает нахождение начала каждого из сегментов на границе байта, но только после определения того, что упомянутые тайлы не зависят друг от друга.In addition, in some examples,
На Фиг. 3 представлена блок-схема, иллюстрирующая примерный видеодекодер 30, сконфигурированный для реализации раскрытых здесь методик. Фиг. 3 приведена только для разъяснения и не ограничивает указанные методики, широко представленные в качестве примеров и подробно описанные в настоящем изобретении. Для удобства разъяснения видеодекодер 30 описывается здесь в контексте кодирования согласно стандарту HEVC. Однако раскрытые здесь методики можно применить к другим стандартам или способам кодирования.In FIG. 3 is a flowchart illustrating an
В примере по Фиг. 3 видеодекодер 30 включает в себя множество функциональных компонент. Эти функциональные компоненты видеодекодера 30 включают в себя модуль 150 энтропийного декодирования, модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 восстановления, модуль 159 фильтров и буфер 160 декодированных изображений. Модуль 152 предсказания включает в себя модуль 162 компенсации движения и модуль 164 внутрикадрового предсказания. В некоторых примерах видеодекодер 30 может выполнить прогон декодирования, который в общем случае является обратным прогону кодирования, описанному применительно к видеокодеру 20 по Фиг. 2. В других примерах видеодекодер 30 может включать в себя больше или меньше функциональных компонент либо другие функциональные компоненты.In the example of FIG. 3,
Видеодекодер 30 может принимать битовый поток, содержащий кодированные видеоданные. Этот битовый поток может включать в себя множество синтаксических элементов. При приеме видеодекодером 30 битового потока модуль 150 энтропийного декодирования может выполнить операцию синтаксического анализа на этом потоке. В результате выполнения операции синтаксического анализа на битовом потоке модуль 150 энтропийного декодирования может извлечь синтаксические элементы из битового потока. В качестве части выполнения операции синтаксического анализа модуль 150 энтропийного декодирования может выполнить энтропийное декодирование синтаксических элементов, кодированных с использованием энтропийного кодирования. Модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 восстановления и модуль 159 фильтров могут выполнить операцию восстановления, которая создает декодированные видеоданные на основе синтаксических элементов, извлеченных из битового потока.
Как обсуждалось выше, битовый поток может содержать ряд блоков NAL. Блоки NAL битового потока могут включать в себя блоки NAL набора параметров последовательности, блоки NAL набора параметров изображения, блоки SEI NAL и т.д. В качестве части выполнения операции синтаксического анализа на битовом потоке, модуль 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые обеспечивают извлечение и энтропийное декодирование наборов параметров последовательности из блоков NAL параметров последовательности, наборов параметров изображения из блоков NAL набора параметров изображения, данных SEI из блоков SEI NAL и т.д.As discussed above, a bitstream may contain a number of NAL units. The bitstream NAL blocks may include sequence parameter set NAL blocks, image parameter set NAL blocks, SEI NAL blocks, etc. As part of performing a parsing operation on a bitstream,
Вдобавок, блоки NAL битового потока могут включать в себя блоки NAL кодированного слайса. В качестве части выполнения операции синтаксического анализа на битовом потоке видеодекодер 30 может выполнить операции синтаксического анализа, обеспечивающие извлечение и энтропийное декодирование кодированных слайсов из блоков NAL кодированного слайса. Каждый из этих кодированных слайсов может включать в себя заголовок слайса и данные слайса. Заголовок слайса может содержать синтаксические элементы, принадлежащие слайсу. Эти синтаксические элементы в заголовке слайса могут включать в себя синтаксический элемент, идентифицирующий набор параметров изображения, связанный с изображением, которое содержит данный слайс.In addition, NAL units of a bitstream may include NAL units of an encoded slice. As part of the parsing operation on the bitstream,
Данные блока NAL кодированного слайса могут включать в себя множество сегментов. Каждый из этих сегментов может включать в себя кодированные древовидные блоки, связанные с другим разделом изображения (например, тайл или волна WPP). Один или более из этих сегментов в данных слайса могут быть заполнены незначащей информацией таким образом, что каждый сегмент будет начинаться с границы байта. Заголовок слайса блока NAL кодированного слайса может указывать точки ввода для сегментов. В этом случае, поскольку сегменты всегда начинаются с границ байтов, видеодекодер 30 способен распределить простым образом разные сегменты по разным потокам декодирования путем использования байтовой адресации памяти. Разные потока декодирования могут обеспечить синтаксический анализ кодированных древовидных блоков сегментов и восстановить параллельно видеоданные, связанные с соответствующими древовидными блоками.The encoded slice NAL unit data may include multiple segments. Each of these segments may include coded treeblocks associated with another section of the image (e.g., tile or WPP wave). One or more of these segments in the slice data may be filled with insignificant information so that each segment begins with a byte boundary. The slice header of the NAL block of the encoded slice may indicate the entry points for the segments. In this case, since segments always begin with byte boundaries,
В качестве части извлечения данных слайса из блоков NAL кодированного слайса модуль 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые обеспечивают извлечение синтаксических элементов из кодированных блоков CU. Извлеченные синтаксические элементы могут включать в себя синтаксические элементы, связанные с блоками коэффициентов преобразования. Затем модуль 150 энтропийного декодирования может выполнить операции декодирования CABAC на некоторых синтаксических элементах.As part of extracting the slice data from the NAL units of the encoded slice, the
После выполнения модулем 150 энтропийного декодирования операции синтаксического анализа на неразделенном блоке CU видеодекодер 30 может выполнить операцию восстановления на неразделенном блоке CU. Для выполнения операции восстановления на неразделенном блоке CU видеодекодер 30 может выполнить операцию восстановления на каждом блоке TU блока CU. Выполнив операцию восстановления для каждого TU блока CU, видеодекодер 30 может восстановить остаточный видеоблок, связанный с данным CU.After the
В качестве части выполнения операции восстановления на блоке TU модуль 154 обратного квантования может выполнить обратное квантование, то есть «деквантование», блока коэффициентов преобразования, связанно с данным TU. Модуль 154 обратного квантования может выполнить обратное квантование блока коэффициентов преобразования, используя процессы, аналогичные процессам обратного квантования, предложенным для стандарта HEVC или определенным стандартом декодирования H.264. Модуль 154 обратного квантования может использовать параметр QP квантования, вычисленный видеокодером 20, для CU блока коэффициентов преобразования, чтобы определить степень квантования и аналогичным образом степень обратного квантования для модуля 154 обратного квантования.As part of performing the restore operation on the TU, the
После выполнения модулем 154 обратного квантования операции обратного квантования для блока коэффициентов преобразования модуль 156 обратного преобразования может создать остаточный видеоблок для TU, связанного с блоком коэффициентов преобразования. Модуль 156 обратного преобразования может применить обратное преобразование к указанному блоку коэффициентов преобразования, чтобы создать остаточный видеоблок для TU. Например, модуль 156 обратного преобразования может применить обратное преобразование DCT, обратное целочисленное преобразование, обратное преобразование Кархунена-Леве (KLT), обратное поворотное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.After the
В некоторых примерах модуль 156 обратного преобразования может определить обратное преобразование для применения к блоку коэффициентов преобразования на основе сигнализации со стороны видеокодера 20. В указанных примерах модуль 156 обратного преобразования может определить такое обратное преобразование на основе полученного в результате сигнализации преобразования в корневом узле квадродерева для древовидного блока, связанного с данным блоком коэффициентов преобразования. В других примерах модуль 156 обратного преобразования может определить обратное преобразование, исходя из одной или более характеристик кодирования, таких как размер блока, режим кодирования или т.п. В некоторых примерах модуль 156 обратного преобразования может применить каскадное обратное преобразование.In some examples, the
В некоторых примерах модуль 162 компенсации движения может уточнить предсказанный видеоблок блока PU путем выполнения интерполяции на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, используемые для компенсации движения с точностью до долей отсчета, могут быть включены в упомянутые синтаксические элементы. Модуль 162 компенсации движения может использовать те же интерполяционные фильтры, которые использует видеокодер 20 во время создания предсказанного видеоблока блока PU, для вычисления интерполированных значений для дробных отсчетов опорного блока. Модуль 162 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20 согласно принятой синтаксической информации, и использовать эти интерполяционные фильтры для создания предсказанного видеоблока.In some examples,
Если блок PU кодирован с использованием внутрикадрового предсказания, то модуль 164 внутрикадрового предсказания может выполнить внутрикадровое предсказание для создания предсказанного видеоблока для данного PU. Например, модуль 164 внутрикадрового предсказания может определить режим внутрикадрового предсказания для данного PU на основе синтаксических элементов в битовом потоке. Битовый поток может включать в себя синтаксические элементы, которые может использовать модуль 164 внутрикадрового предсказания для определения режима внутрикадрового предсказания для данного PU.If the PU is encoded using intra-frame prediction, then
В некоторых случаях указанные синтаксические элементы могут указывать, что модуль 164 внутрикадрового предсказания должен использовать режим внутрикадрового предсказания другого PU, чтобы определить режим внутрикадрового предсказания текущего PU. Например, существует вероятность того, что режим внутрикадрового предсказания для текущего PU совпадает с режимом внутрикадрового предсказания для соседнего PU. Другими словами, режим внутрикадрового предсказания соседнего PU может являться наиболее вероятным для текущего PU. Следовательно, в этом примере битовый поток может включать в себя небольшой синтаксический элемент, который указывает, что режим внутрикадрового предсказания для данного PU совпадает с режимом внутрикадрового предсказания соседнего PU. Тогда модуль 164 внутрикадрового предсказания может использовать данный режим внутрикадрового предсказания для создания данных предсказания (например, предсказанных отсчетов) для данного PU на основе видеоблоков для соседних в пространстве блоков PU.In some cases, these syntax elements may indicate that the
Модуль 158 восстановления может использовать остаточные видеоблоки, связанные с блоками TU блока CU, и предсказанные видеоблоки блоков PU блока CU, то есть, либо данные внутрикадрового предсказания, либо данные межкадрового предсказания (в зависимости от того, что применяется), для восстановления видеоблока для CU. Таким образом, видеодекодер 30 может создать предсказанный видеоблок и остаточный видеоблок на основе синтаксических элементов в битовом потоке и может создать видеоблок на основе предсказанного видеоблока и остаточного видеоблока.The
После восстановления модулем 158 восстановления видеоблока блока CU модуль 159 фильтров может выполнить операцию деблокирования для подавления артефактов блокирования, связанных с данным CU. После выполнения модулем 159 операции деблокирования для подавления артефактов блокирования, связанных с блоком CU, видеодекодер 30 может запомнить этот видеоблок блока CU в буфере 160 декодированных изображений. Буфер 160 декодированных изображений может обеспечить опорные изображения для последующей компенсации движения, внутрикадрового предсказания и представления на устройстве отображения, таком как устройство 32 отображения на Фиг. 1. Например, видеодекодер 30 может выполнять операции внутрикадрового предсказания или межкадрового предсказания на блоках PU других блоков CU на основе видеоблоков в буфере 160 декодированных изображений.After restoration by the video
На Фиг. 4 представлена блок-схема, иллюстрирующая примерную операцию 200 для создания данных для слайса. Операция 200 может быть выполнена видеокодером, таким как видеокодер 20 (фигуры 1 и 2). Блок-схема на Фиг. 4 является просто одним примером. В других примерах этой операции возможно создание данных слайса другими путями.In FIG. 4 is a flowchart illustrating an
В начале операции 200 видеокодер может инициализировать адрес древовидного блока, который идентифицирует начальный древовидный блок текущего слайса (202). Текущим слайсом может быть слайс, который в настоящее время кодируется видеокодером. Начальным древовидным блоком текущего слайса может быть первый древовидный блок, связанный с текущим слайсом, согласно порядку кодирования древовидных блоков в текущем изображении. Для упрощения объяснения здесь речь идет о древовидном блоке, идентифицированном по адресу древовидного блока в качестве текущего древовидного блока.At the beginning of
Видеокодер может подсоединить синтаксические элементы для текущего древовидного блока к данным слайса блока NAL кодированного слайса для текущего слайса (204). Синтаксические элементы для текущего древовидного блока могут включать в себя синтаксические элементы в квадродереве текущего древовидного блока. Синтаксические элементы в квадродереве текущего древовидного блока могут включать в себя синтаксические элементы, которые указывают режимы внутрикадрового предсказания, информацию о движении, синтаксические элементы, указывающие уровни коэффициентов преобразования и т.д.The video encoder may connect syntax elements for the current tree block to the slice data of the NAL block of the encoded slice for the current slice (204). The syntax elements for the current treeblock may include syntax elements in the quadtree of the current treeblock. The syntax elements in the quadtree of the current treeblock may include syntax elements that indicate intra prediction modes, motion information, syntax elements indicating levels of transform coefficients, etc.
Кроме того, видеокодер может определить, есть ли еще данные в текущем слайсе (206). В текущем слайсе могут еще быть данные, если древовидный блок, указанный адресом древовидного блока, находится в текущем слайсе. В соответствии с определением того, имеются ли еще данные в текущем слайсе («НЕТ») на шаге (206), видеокодер может закончить операцию 200, поскольку он добавил в данные слайса все необходимые синтаксические элементы.In addition, the video encoder can determine if there is more data in the current slice (206). There may still be data in the current slice if the tree block indicated by the address of the tree block is in the current slice. In accordance with the determination of whether there is more data in the current slice (“NO”) in step (206), the video encoder can end
Видеокодер может определить, имеются ли еще данные в текущем слайсе, различными путями. Например, видеокодер может активировать функцию «coding_tree( )» для вывода синтаксических элементов для древовидного блока. В этом примере функция «coding_tree( )» может вернуть флаг «moreDataFlag», который указывает, имеются ли еще данные в текущем слайсе.The video encoder can determine if there is more data in the current slice in various ways. For example, a video encoder may activate the coding_tree () function to output syntax elements for a treeblock. In this example, the coding_tree () function can return the moreDataFlag flag, which indicates whether there is more data in the current slice.
В соответствии с определением того, имеются ли еще данные, связанные с текущим слайсом («ДА» на шаге 206), видеокодер может определить, являются ли тайлы текущего изображения независимыми, и определить, находится ли следующий древовидный блок текущего слайса в тайле, отличном от тайла текущего древовидного блока текущего слайса (208). Как было описано выше, тайлы изображения могут быть независимыми, если запрещено предсказание в рамках изображения (например, внутрикадровое предсказание, межкадровое предсказание с использованием данных в текущем изображении, и выбор контекста CABAC на основе данных из других тайлов текущего изображения). Видеокодер может определить, независимы ли тайлы текущего изображения, различными путями. Например, набор параметров последовательности, связанный с текущим изображением, может включать в себя синтаксический элемент «tile_boundary_independence_idc». В этом примере, если «tile_boundary_independence_idc» равен 0, то тайлы текущего изображения не являются независимыми, и предсказание через границы тайла разрешено. Если «tile_boundary_independence_idc» равен 0, то предсказание через границы слайса все еще запрещено. Если «tile_boundary_independence_idc» равен 1, то тайлы текущего изображения являются независимыми, и предсказание через границы тайла не разрешено.In accordance with the determination of whether there is more data associated with the current slice (“YES” at step 206), the video encoder can determine whether the tiles of the current image are independent, and determine whether the next tree block of the current slice is in a tile other than tile of the current treeblock of the current slice (208). As described above, image tiles may be independent if prediction within the image is prohibited (e.g., intra-frame prediction, inter-frame prediction using data in the current image, and CABAC context selection based on data from other tiles in the current image). The video encoder can determine whether the tiles of the current image are independent in various ways. For example, the sequence parameter set associated with the current image may include a tile_boundary_independence_idc syntax element. In this example, if “tile_boundary_independence_idc” is 0, then the tiles of the current image are not independent, and prediction across tile boundaries is allowed. If “tile_boundary_independence_idc” is 0, then prediction across slice boundaries is still prohibited. If “tile_boundary_independence_idc” is 1, then the tiles in the current image are independent, and prediction across tile boundaries is not allowed.
Видеокодер может определить различными путями, находится ли следующий древовидный блок текущего слайса в другом тайле, отличном от тайла текущего древовидного блока текущего слайса. Например, видеокодер может определить адрес следующего древовидного блока текущего слайса. В этом примере видеокодер может активировать функцию «NewТile(…)», которая использует адрес следующего древовидного блока в качестве параметра и возвращает значение «newTileflag», которое указывает, находится ли следующий древовидный блок в тайле, отличном от тайла текущего древовидного блока.The video encoder can determine in various ways whether the next tree block of the current slice is in a different tile than the tile of the current tree block of the current slice. For example, a video encoder can determine the address of the next tree block of the current slice. In this example, the video encoder can activate the “NewTile (...)” function, which uses the address of the next tree block as a parameter and returns a “newTileflag” value that indicates whether the next tree block is in a tile other than the tile of the current tree block.
Если тайлы текущего изображения не являются независимыми, или следующий древовидный блок находится в том же тайле, что и текущий древовидный блок («НЕТ» в блоке 208), то видеокодер может определить, выполняется ли кодирование текущего изображения с использованием WPP, и находится ли следующий древовидный блок текущего слайса в волне WPP, отличной от волны текущего древовидного блока текущего слайса (210). Видеокодер может различными путями определить, находится ли следующий древовидный блок текущего слайса не в той волне WPP, в которой находится текущий древовидный блок текущего слайса. Например, видеокодер может определить адрес следующего древовидного блока текущего слайса. В данном примере видеокодер может активировать функцию «NewWave(…)», которая использует адрес следующего древовидного блока в качестве параметра и возвращает значение «newWaveFlag», которое указывает, находится ли следующий древовидный блок в волне WPP, отличной от волны WPP текущего древовидного блока.If the tiles of the current image are not independent, or the next tree block is in the same tile as the current tree block (“NO” in block 208), then the video encoder can determine whether encoding of the current image using WPP and whether the next tree block of the current slice in the WPP wave, different from the wave of the current tree block of the current slice (210). The video encoder can determine in various ways whether the next tree block of the current slice is not in the WPP wave in which the current tree block of the current slice is located. For example, a video encoder can determine the address of the next tree block of the current slice. In this example, the video encoder can activate the NewWave (...) function, which uses the address of the next tree block as a parameter and returns a value of newWaveFlag, which indicates whether the next tree block is in a WPP wave other than the WPP wave of the current tree block.
В соответствии с определением того, что кодирование текущего изображения выполняется с использованием WPP, и что следующий древовидный блок находится в волне WPP, отличной от волны WPP текущего древовидного блока («ДА» в блоке 210), или в соответствии с определением того, что тайлы текущего изображения являются независимыми, и что следующий древовидный блок находится в тайле, отличном от тайла текущего древовидного блока («ДА» в блоке 208), видеокодер может определить, выровнен ли текущий сегмент по байтам. Другими словами, видеокодер может определить, заканчивается ли текущий сегмент на границе байта. Текущим сегментом является сегмент, связанный с разделом изображения (например, тайл или волна WPP), с которым связан текущий древовидный блок. В соответствии с определением того, что текущий сегмент не выровнен по байтам («НЕТ» на шаге 212), видеокодер может подсоединить бит заполнения к концу текущего сегмента (214). Этот бит заполнения может иметь разные значения. Например, бит заполнения всегда может иметь значение, равное 1. В других примерах бит заполнения может всегда иметь значение, равное 0.According to the definition that the encoding of the current image is performed using WPP, and that the next tree block is in a WPP wave different from the WPP wave of the current tree block (“YES” in block 210), or in accordance with the definition that the tiles the current image are independent, and that the next tree block is in a tile different from the tile of the current tree block (“YES” in block 208), the video encoder can determine if the current segment is aligned bytes. In other words, the video encoder can determine if the current segment ends at the byte boundary. The current segment is the segment associated with the image section (for example, a tile or WPP wave) with which the current treeblock is associated. In accordance with the determination that the current segment is not byte aligned (“NO” at step 212), the video encoder may connect the fill bit to the end of the current segment (214). This fill bit can have different meanings. For example, the fill bit can always have a value of 1. In other examples, the fill bit can always have a value of 0.
После присоединения бита заполнения к концу текущего сегмента видеокодер может вновь определить, выровнен ли текущий сегмент по байтам (212). Таким путем видеокодер может продолжать присоединение бит заполнения к концу данных слайса, пока не будет обеспечено выравнивание текущего сегмента по байтам.After attaching the fill bit to the end of the current segment, the video encoder can again determine whether the current segment is aligned bytes (212). In this way, the video encoder can continue to attach the fill bits to the end of the slice data until the current segment is aligned with bytes.
В соответствии с определением того, что данные слайса выровнены по байтам («ДА» на шаге 212), видеокодер может обновить адрес древовидного блока (216). Видеокодер может обновить адрес древовидного блока таким образом, чтобы он указывал следующий древовидный блок согласно порядку кодирования древовидных блоков текущего изображения. Например, при обновлении видеокодером адреса древовидного блока этот адрес может идентифицировать древовидный блок справа от древовидного блока, на который указывал адрес древовидного блока. На Фиг. 7, подробно описанной ниже, представлена концептуальная схема, иллюстрирующая примерный порядок кодирования древовидных блоков для одного изображения, которое разбито на множество тайлов.In accordance with the determination that the slice data is byte aligned (“YES” at step 212), the video encoder can update the address of the tree block (216). The video encoder can update the address of the tree block so that it indicates the next tree block according to the coding order of the tree blocks of the current image. For example, when the video encoder updates the address of the tree block, this address can identify the tree block to the right of the tree block pointed to by the address of the tree block. In FIG. 7, described in detail below, is a conceptual diagram illustrating an example coding order of treeblocks for a single image, which is divided into many tiles.
После обновления адреса древовидного блока видеокодер может определить, имеются ли еще данные в текущем слайсе (218). В соответствии с определением того, имеются ли еще данные в текущем слайсе («ДА» на шаге 218), или в соответствии с определением того, что кодирование текущего изображения с использованием WPP не выполняется, и следующий древовидный блок находится в том же тайле, что и текущий древовидный блок («НЕТ» на шаге 210), видеокодер может присоединить синтаксические элементы для текущего древовидного блока к данным слайса (204). Таким образом, видеокодер может присоединить синтаксические элементы для каждого древовидного блока текущего слайса к данным слайса и может обеспечить такое заполнение сегментов незначащей информацией, связанных с другими разделами изображения, при котором эти сегменты будут начинаться с границ байтов.After updating the address of the treeblock, the video encoder can determine if there is more data in the current slice (218). In accordance with the determination of whether there is more data in the current slice (“YES” at step 218), or in accordance with the determination that encoding of the current image using WPP is not performed and the next tree block is in the same tile as and the current tree block (“NO” at step 210), the video encoder may attach syntax elements for the current tree block to the slice data (204). Thus, the video encoder can attach syntax elements for each tree block of the current slice to the data of the slice and can provide such filling of segments with insignificant information associated with other sections of the image, in which these segments will start from byte boundaries.
В соответствии с определением того, есть ли еще данные в текущем слайсе («НЕТ» на шаге 218), видеокодер может завершить операцию 200, поскольку он может присоединить все синтаксические элементы текущего слайса к данным слайса.According to the determination of whether there is more data in the current slice (“NO” at step 218), the video encoder can complete
На Фиг. 5 представлена блок-схема, иллюстрирующая примерную операцию 250 для декодирования блока NAL кодированного слайса. Видеодекодер, такой как видеодекодер 30 (фиг. 1 и 3) может выполнять операцию 250. Показанное на Фиг. 5, является просто одним из примеров. В других примерах для декодирования блоков NAL кодированного слайса могут использоваться другие операции.In FIG. 5 is a flowchart illustrating an
В примере по Фиг. 5 видеодекодер может запомнить блок NAL кодированного слайса в памяти с байтовой адресацией (252). Блок NAL кодированного слайса может включать в себя заголовок слайса и данные слайса. Данные слайса могут включать в себя множество сегментов. Один или более сегментов могут быть заполнены незначащей информацией с тем, чтобы каждый сегмент начинался с границы байта.In the example of FIG. 5, a video decoder can memorize a NAL unit of an encoded slice in a byte-addressable memory (252). An encoded slice NAL unit may include a slice header and slice data. Slice data may include multiple segments. One or more segments may be filled with insignificant information so that each segment begins with a byte boundary.
После запоминания в памяти блока NAL кодированного слайса видеодекодер может идентифицировать позиции сегментов в данных блока NAL кодированного слайса (254). Видеодекодер может идентифицировать позиции сегментов различными способами. Например, видеодекодер может идентифицировать позиции сегментов на основе синтаксических элементов в заголовке слайса блока NAL кодированного слайса, которые указывают байтовые смещения сегментов. В данном примере заголовок слайса может не включать в себя байтовое смещение для первого сегмента данных слайса, поскольку позиция первого сегмента может непосредственно следовать за окончанием заголовка слайса. В другом примере видеодекодер может идентифицировать позиции сегментов на основе меток точек ввода в данных слайса. Метки точек ввода могут представлять собой значения, расположенные между сегментами.After storing the encoded slice NAL unit in the memory, the video decoder can identify the position of the segments in the data of the NAL unit encoded slice (254). A video decoder can identify segment positions in various ways. For example, a video decoder can identify the position of segments based on the syntax elements in the slice header of the encoded slice NAL unit, which indicate the byte offsets of the segments. In this example, the slice header may not include a byte offset for the first slice data segment, since the position of the first segment may immediately follow the end of the slice header. In another example, the video decoder can identify the position of the segments based on the labels of the entry points in the slice data. Label entry points can be values located between segments.
После идентификации позиций сегментов в данных слайса видеодекодер может распределить два или более сегментов по двум или более разным потокам декодирования (256). Каждый поток декодирования может проанализировать синтаксические элементы кодированных древовидных блоков в сегменте, распределенном для данного потока декодирования, и восстановить видеоблоки для соответствующих древовидных блоков, как было описано выше.After identifying the positions of the segments in the slice data, the video decoder can distribute two or more segments over two or more different decoding streams (256). Each decoding stream can parse the syntax elements of the encoded treeblocks in a segment allocated to a given decoding stream, and reconstruct the video blocks for the corresponding treeblocks, as described above.
На Фиг. 6 представлена концептуальная схема, иллюстрирующая волновую параллельную обработку. Как было описано выше, изображение может быть разбито на видеоблоки, каждый из которых связан с древовидным блоком. На Фиг. 6 показаны видеоблоки, связанные с древовидными блоками в виде сетки из белых квадратов. Изображение включает в себя строки древовидных блоков 300А-300Е (обозначенных вместе как «строки древовидных блоков 300»).In FIG. 6 is a conceptual diagram illustrating parallel wave processing. As described above, the image can be divided into video blocks, each of which is associated with a tree block. In FIG. 6 shows video blocks associated with tree blocks in the form of a grid of white squares. The image includes rows of tree blocks 300A-300E (designated together as "rows of tree blocks 300").
В первом потоке выполняется кодирование древовидных блоков в строке 300А древовидных блоков. Параллельно может выполняться кодирование древовидных блоков других потоков в строках 300В, 300С и 300D древовидных блоков. В примере по Фиг. 6 в первом потоке выполняется кодирование древовидного блока 302А, во втором потоке выполняется кодирование древовидного блока 302В, в третьем потоке выполняется кодирование древовидного блока 302С и в четвертом потоке выполняется кодирование древовидного блока 302D. Это описание можно отнести к древовидным блокам 302А, 302В, 302С и 302D, обозначенным вместе как «текущие древовидные блоки 302». Поскольку видеокодер может начать кодирование строки древовидных блоков после того, как будет выполнено кодирование более двух древовидных блоков строки, находящейся непосредственно над данной строкой, текущие древовидные блоки 302 размещаются по горизонтали друг от друга на ширину двух древовидных блоков.In the first stream, tree blocks are encoded in
В примере по Фиг. 6 указанные потоки могут использовать данные из древовидных блоков, указанных жирными серыми стрелками, при выполнении внутрикадрового предсказания или межкадрового предсказания для блоков CU в текущих древовидных блоках 302 (Когда потоки выполняют межкадровое предсказание для блоков CU, они также могут использовать данные из одного или более опорных кадров). Когда поток кодирует данный древовидный блок, он может отобрать один или более контекстов CABAC на основе информации, связанной с ранее закодированными древовидными блоками. В данном потоке может использоваться один или более контекстов CABAC для выполнения CABAC кодирования на синтаксических элементах, связанных с первым CU данного древовидного блока. Если данный древовидный блок не является крайним левым древовидным блоком строки, то данный поток может выбрать один или более контекстов CABAC на основе информации, связанной с последним CU древовидного блока слева от данного древовидного блока. Если данный древовидный блок является крайним левым древовидным блоком строки, то поток может выбрать один или более контекстов CABAC на основе информации, связанной с последним CU древовидного блока, находящегося выше, и двумя древовидными блоками справа от данного древовидного блока. В указанных потоках могут использоваться данные из последних блоков CU древовидных блоков, указанных тонкими черными стрелками, для выбора контекстов CABAC для первых блоков CU текущих древовидных блоков 302.In the example of FIG. 6, these streams can use data from treeblocks indicated by bold gray arrows when performing intra-frame prediction or inter-frame prediction for CUs in current treeblocks 302 (When streams perform inter-frame prediction for CUs, they can also use data from one or more reference frames). When a stream encodes a given treeblock, it can select one or more CABAC contexts based on information associated with previously encoded treeblocks. This thread may use one or more CABAC contexts to perform CABAC encoding on the syntax elements associated with the first CU of this treeblock. If the given treeblock is not the leftmost treeblock of the row, then this thread can select one or more CABAC contexts based on the information associated with the last CU of the treeblock to the left of this treeblock. If a given treeblock is the leftmost treeblock of a row, then the stream may select one or more CABAC contexts based on the information associated with the last CU of the treeblock above and the two treeblocks to the right of the treeblock. These streams may use data from the last CUs of the treeblocks indicated by thin black arrows to select CABAC contexts for the first CUs of the current treeblocks 302.
На Фиг. 7 представлена концептуальная схема, иллюстрирующая примерный порядок кодирования древовидных блоков для изображения 350, которое разбито на множество тайлов 352А, 352В и 352С. Каждый квадратный белый блок в изображении 350 представляет видеоблок, связанный с древовидным блоком. Жирные вертикальные пунктирные линии указывают примерные вертикальные границы тайлов. Жирные серые линии указывают примерную границу слайса.In FIG. 7 is a conceptual diagram illustrating an example coding order of treeblocks for an
Числа в видеоблоках указывают позиции соответствующих древовидных блоков (блоков LCU) в порядке кодирования древовидных блоков для изображения 350. Как показано в примере по Фиг. 7, каждый из древовидных блоков в крайнем левом тайле 352А появляется в порядке кодирования древовидных блоков перед любым древовидным блоком в среднем тайле 352В. Каждый из древовидных блоков в среднем тайле 352В появляется в порядке кодирования древовидных блоков перед любым древовидным блоком в крайнем правом тайле 352С. Внутри каждого тайла 352А, 352В и 352С древовидные блоки кодируются согласно порядку растрового сканирования.The numbers in the video blocks indicate the positions of the corresponding treeblocks (LCUs) in the coding order of the treeblocks for the
Видеокодер может создать два блока NAL кодированного слайса для изображения 350. Первый блок NAL кодированного слайса может быть связан с левым слайсом изображения 350. Первый блок NAL кодированного слайса может включать в себя кодированные представления древовидных блоков 1-23. Данные слайса первого блока NAL кодированного слайса могут включать в себя два сегмента. Первый сегмент может включать в себя кодированные представления древовидных блоков 1-15. Второй сегмент может включать в себя кодированные представления древовидных блоков 16-30. Согласно раскрытым здесь методикам первый сегмент может быть заполнен незначащей информацией, обеспечивающей начало второго сегмента с границы байта.The video encoder may create two NAL blocks of the encoded slice for the
Второй блок NAL кодированного слайса может быть связан с правым слайсом изображения 350. Второй блок NAL кодированного слайса может включать в себя кодированные представления древовидных блоков 24-45. Данные слайса второго блока NAL кодированного слайса могут включать в себя два сегмента. Первый сегмент может включать в себя кодированные представления древовидных блоков 24-30. Второй сегмент может включать в себя кодированные представления древовидных блоков 31-45. Первый сегмент может быть заполнен незначащей информацией таким образом, чтобы второй сегмент начинался с границы байта.The second NAL block of the encoded slice may be associated with the right slice of the
На Фиг. 8 представлена концептуальная схема, иллюстрирующая примерный блок 400 NAL кодированного слайса. Как показано в примере на Фиг. 8, блок 400 NAL кодированного слайса включает в себя заголовок 402 слайса и данные 404 слайса. Данные 404 слайса включают в себя первый сегмент 406 и второй сегмент 408. Сегмент 406 включает в себя кодированные древовидные блоки 410А-410N и данные 412 заполнения. Сегмент 408 включает в себя кодированные древовидные блоки 414А-414N.In FIG. 8 is a conceptual diagram illustrating an example NAL block 400 of an encoded slice. As shown in the example of FIG. 8, an encoded slice NAL unit 400 includes a slice header 402 and slice data 404. Slice data 404 includes a first segment 406 and a second segment 408. Segment 406 includes encoded treeblocks 410A-410N and pad data 412. Segment 408 includes encoded treeblocks 414A-414N.
В одном или более примерах описанные функции могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. При реализации программными средствами эти функции могут храниться или передаваться в виде одной или более команд или кода на считываемом компьютером носителе и выполняться обрабатывающим аппаратным блоком. Машиночитаемый носитель информации может включать в себя машиночитаемый носитель информации, который соответствует материальному носителю, такому как носитель для хранения данных или носитель для передачи, включая любой носитель, который позволяет обеспечить пересылку компьютерной программы из одного места в другое, например, согласно какому-либо протоколу связи. В этом аспекте машиночитаемый носитель информации в общем случае может соответствовать (1) материальному машиночитаемому носителю информации, который обеспечивает долговременное хранение, или (2) среде связи, такой как сигнал или несущая волна. Носителем для запоминания данных может служить любой доступный носитель, доступ к которому может осуществляться одним или более компьютерами или одним или более процессорами для извлечения команд, кода и/или структур данных для реализации раскрытых в этом изобретении методик. Компьютерный программный продукт может включать в себя машиночитаемый носитель.In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented by software, these functions can be stored or transmitted in the form of one or more instructions or code on a computer-readable medium and executed by a processing hardware unit. A computer-readable storage medium may include a computer-readable storage medium that corresponds to a tangible medium, such as a storage medium or a transmission medium, including any medium that enables a computer program to be transferred from one place to another, for example, according to some protocol communication. In this aspect, a computer-readable storage medium may generally correspond to (1) a tangible computer-readable storage medium that provides long-term storage, or (2) a communication medium such as a signal or carrier wave. The storage medium may be any available medium that can be accessed by one or more computers or one or more processors to extract instructions, code and / or data structures for implementing the techniques disclosed in this invention. The computer program product may include computer-readable media.
В качестве примера, но не как ограничение, указанный машиночитаемый носитель информации может содержать ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающее устройства, флэш-память, или любой другой носитель, который можно использовать для запоминания требуемого программного кода в виде команд или структур данных, и к которым может иметь доступ компьютер. Также машиночитаемым носителем информации будет правильно назвать любое соединение. Например, если команды передаются с Web-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, скрученной пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радиосвязь и микроволновая связь, то тогда коаксиальный кабель, оптоволоконный кабель, скрученная пара, линии DSL или такие беспроводные технологии, как инфракрасная связь, радиосвязь и микроволновая связь, входят в определение носителя. Однако следует понимать, что термины: «машиночитаемый носитель информации» и «носитель для хранения данных» не включают в себя соединения, несущие волны, сигналы или другие временные носители, а относятся к материальному носителю долговременного хранения. Используемый здесь термин «disc» (диск) относится к компакт-диску (CD), лазерному диску, оптическому диску, цифровому универсальному диску (DVD), флоппи-диску и диску Blu-ray, воспроизводящих данные оптическим путем с использованием лазеров, в то время как термин «disk» (диск) обычно относится к дискам, воспроизводящим данные магнитным путем. В понятие машиночитаемого носителя информации также следует отнести комбинации из вышеперечисленного.By way of example, but not limitation, said computer-readable storage medium may comprise RAM, ROM, electrically erasable programmable ROM (EEPROM), ROM on a compact disc (CD-ROM), or other optical memory device , magnetic disk storage device or other magnetic storage device, flash memory, or any other medium that can be used to store the required program code in the form of instructions or data structures, and which can be accessed by a computer. Also, any connection will correctly be called a computer-readable storage medium. For example, if commands are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable , fiber optic cable, twisted pair, DSL lines or wireless technologies such as infrared, radio and microwave are included in the definition of media. However, it should be understood that the terms “computer-readable storage medium” and “storage medium” do not include connections that carry waves, signals or other temporary media, but refer to a tangible medium of long-term storage. As used herein, the term “disc” refers to a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disc and a Blu-ray disc that reproduce data optically using lasers, while while the term “disk” usually refers to disks that reproduce data magnetically. Combinations of the above should also be included in the concept of a machine-readable storage medium.
Команды могут выполняться одним или более процессорами, такими как один или более цифровых процессоров сигналов (DSP), микропроцессоров общего назначения, прикладных специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), или других эквивалентных интегральных или дискретных логических схем. Соответственно, используемый здесь термин «процессор» может относиться к любой из вышеописанных структур или любой иной структуре, подходящей для реализации вышеописанных методик. Вдобавок, в некоторых аспектах описанные здесь функциональные возможности могут быть обеспечены в рамках специализированных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования, или включенных в состав комбинированного кодека. Также раскрытые здесь методики можно полностью реализовать в одной или более схемах или логических элементах.Commands may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), user programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein may refer to any of the above structures or any other structure suitable for implementing the above methods. In addition, in some aspects, the functionality described herein may be provided within specialized hardware and / or software modules configured for encoding and decoding, or included in a combination codec. Also, the techniques disclosed herein may be fully implemented in one or more circuits or logic elements.
Раскрытые здесь методики могут быть реализованы в самых разных устройствах или установках, включая беспроводную телефонную трубку, интегральную схему (IC) или набор интегральных схем (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны здесь таким образом, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых здесь методик, причем для этого не требуется их реализация с помощью различных аппаратных блоков. Скорее наоборот, как обсуждалось выше, различные блоки могут быть скомбинированы в аппаратном блоке-кодеке или обеспечены в виде набора взаимодействующих аппаратных блоков, включая один или более процессоров, как было описано выше, в сочетании с подходящим программным и/или программно-аппаратным обеспечением.The techniques disclosed herein may be implemented in a wide variety of devices or installations, including a cordless handset, integrated circuit (IC), or a set of integrated circuits (e.g., microprocessor set). Various components, modules or blocks are described herein in such a way as to emphasize the functional aspects of devices configured to perform the techniques disclosed herein, and this does not require their implementation using various hardware blocks. Rather, on the contrary, as discussed above, the various units can be combined in a hardware codec unit or provided as a set of interacting hardware units, including one or more processors, as described above, in combination with suitable software and / or firmware.
Здесь были описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.Various examples have been described here. These and other examples are included in the scope of the following claims.
Claims (31)
разделение изображения на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков указанного изображения; и
создание блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанные со слайсом указанного изображения, причем кодированные представления древовидных блоков сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из сегментов начинается на границе байта,
указанные сегменты включают в себя заданный сегмент, и
создание блока NAL кодированного слайса содержит выполнение операции заполнения незначащей информацией, которая присоединяет биты к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента.1. A method of encoding video data, the method comprising:
dividing an image into a plurality of image sections, wherein the image contains a plurality of tree blocks, wherein image sections are associated with non-overlapping subsets of tree blocks of the image; and
creating a block of network abstraction level (NAL) of the encoded slice, which includes encoded representations of tree blocks associated with the slice of the specified image, and the encoded representations of the tree blocks are grouped in the NAL block of the encoded slice into segments associated with different sections of the image, and:
one or more of these segments are filled with insignificant information, so that each of the segments begins at the byte boundary,
said segments include a predetermined segment, and
creating a NAL block of an encoded slice comprises performing an operation for filling insignificant information that attaches bits to a given segment if the next tree block is inside the specified slice and is associated with another section of the image that is different from the specified segment.
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут не начинаться с границ байта.5. The method according to claim 1, further comprising creating a set of parameters associated with the specified image, wherein the set of parameters includes a flag having a first value indicating that one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary, and
in this case, when the flag has a second value, these segments may or may not begin with the boundaries of the byte.
в котором указанные разделы изображения представляют собой тайлы; и
в котором создание блока NAL кодированного слайса содержит выполнение операции заполнения незначащей информацией, которая обеспечивает, что указанные сегменты начинаются на границах байта только после определения того, что указанные тайлы не зависят друг от друга.6. The method according to p. 1,
wherein said image sections are tiles; and
in which the creation of the NAL block of the encoded slice comprises the operation of filling insignificant information, which ensures that these segments begin at the byte boundaries only after determining that the indicated tiles are independent of each other.
запоминание блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения, при этом указанное изображение разбито на множество разделов изображения, причем кодированные представления указанных древовидных блоков сгруппированы в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта,
указанные сегменты включают в себя заданный сегмент, и
блок NAL кодированного слайса включает в себя биты, присоединенные к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента; и
декодирование кодированных представлений древовидных блоков.7. A method for decoding video data, the method comprising:
storing a block of the network abstraction level (NAL) of the encoded slice, which includes encoded representations of tree blocks associated with the image slice, while the specified image is divided into many image sections, and the encoded representations of these tree blocks are grouped into segments associated with different image sections , moreover:
one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary,
said segments include a predetermined segment, and
a NAL block of an encoded slice includes bits attached to a given segment if the next tree block is inside the specified slice and is associated with a different section of the image other than the specified segment; and
decoding encoded representations of treeblocks.
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут и не начинаться с границ байтов.11. The method of claim 7, further comprising storing a set of parameters associated with said image, wherein the set of parameters includes a flag having a first value indicating that one or more of said segments are filled with insignificant information, so that each of said segments begins with a byte boundary, and
in this case, when the flag has a second value, these segments may or may not begin with byte boundaries.
в котором указанные разделы изображения представляют собой тайлы; и
в котором один или более указанных сегментов заполняют незначащей информацией, так что указанные сегменты начинаются с границ байтов, когда указанные тайлы не зависят друг от друга.12. The method according to p. 7,
wherein said image sections are tiles; and
in which one or more of the indicated segments is filled with insignificant information, so that the indicated segments begin with byte boundaries when the indicated tiles are independent of each other.
носитель для хранения данных, сконфигурированный для хранения видеоданных; и
один или более процессоров, сконфигурированных для:
разделения изображения видеоданных на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения; и
создания блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, которые связаны со слайсом данного изображения, причем кодированные представления древовидных блоков сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из сегментов начинается на границе байта,
указанные сегменты включают в себя заданный сегмент, и
один или более процессоров сконфигурированы для выполнения операции заполнения незначащей информацией, которая присоединяет биты к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента.14. A video encoding device that encodes video data, wherein the video encoding device comprises:
a storage medium configured to store video data; and
one or more processors configured for:
dividing the image of the video data into a plurality of image sections, wherein the image contains a plurality of tree blocks, wherein the image sections are associated with non-overlapping subsets of the tree blocks of the image; and
creating a block of network abstraction level (NAL) of the encoded slice, which includes encoded representations of tree blocks that are associated with the slice of a given image, and encoded representations of tree blocks are grouped in the NAL block of the encoded slice into segments associated with different sections of the image, and:
one or more of these segments are filled with insignificant information, so that each of the segments begins at the byte boundary,
said segments include a predetermined segment, and
one or more processors is configured to perform an operation of filling insignificant information that attaches bits to a given segment if the next tree block is inside the specified slice and is associated with another section of the image other than the specified segment.
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут не начинаться с границ байта.18. The video coding apparatus of claim 14, wherein one or more processors are configured to create a parameter set associated with the specified image, wherein the parameter set includes a flag having a first value indicating that one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary, and
in this case, when the flag has a second value, these segments may or may not begin with the boundaries of the byte.
в котором указанные разделы изображения представляют собой тайлы; и
в котором один или более процессоров сконфигурированы для выполнения операции заполнения незначащей информацией, которая обеспечивает, что указанные сегменты начинаются на границах байта только после определения того, что указанные тайлы не зависят друг от друга.19. The video coding device according to p. 14,
wherein said image sections are tiles; and
in which one or more processors are configured to perform the operation of filling insignificant information, which ensures that these segments begin at byte boundaries only after determining that these tiles are independent of each other.
память, в которой хранится блок уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения, при этом указанное изображение разделено на множество разделов изображения, причем кодированные представления указанных древовидных блоков сгруппированы в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта,
указанные сегменты включают в себя заданный сегмент, и
блок NAL кодированного слайса включает в себя биты, присоединенные к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента; и
один или более процессоров, которые сконфигурированы для декодирования кодированных представлений древовидных блоков.21. A video decoding device that decodes video data, wherein the video decoding device comprises:
a memory in which a block of network abstraction level (NAL) block of the encoded slice is stored, which includes encoded representations of tree blocks associated with the image slice, wherein said image is divided into a plurality of image sections, wherein encoded representations of said tree blocks are grouped into segments connected with different sections of the image, moreover:
one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary,
said segments include a predetermined segment, and
a NAL block of an encoded slice includes bits attached to a given segment if the next tree block is inside the specified slice and is associated with a different section of the image other than the specified segment; and
one or more processors that are configured to decode encoded representations of treeblocks.
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут и не начинаться с границ байта.25. The video decoding device according to claim 21, in which a set of parameters associated with the specified image is stored in memory, the set of parameters includes a flag having a first value indicating that one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary, and
in this case, when the flag has a second value, these segments may or may not start from the boundaries of the byte.
разделения изображения на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения; и
создания блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанные со слайсом данного изображения, причем кодированные представления древовидных блоков сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из сегментов начинается на границе байта,
указанные сегменты включают в себя заданный сегмент; и
один или более процессоров сконфигурированы для выполнения операции заполнения незначащей информацией, которая присоединяет биты к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента.28. A permanent computer-readable storage medium that stores instructions that, when executed by one or more processors, configure a video coding device for:
dividing an image into a plurality of image sections, wherein the image contains a plurality of tree blocks, wherein the image sections are associated with non-overlapping subsets of tree blocks of a given image; and
creating a block of network abstraction level (NAL) of the encoded slice, which includes encoded representations of tree blocks associated with the slice of the image, and encoded representations of tree blocks are grouped in the NAL block of the encoded slice into segments associated with different sections of the image, and:
one or more of these segments are filled with insignificant information, so that each of the segments begins at the byte boundary,
said segments include a predetermined segment; and
one or more processors is configured to perform an operation of filling insignificant information that attaches bits to a given segment if the next tree block is inside the specified slice and is associated with another section of the image other than the specified segment.
запоминания блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения, при этом указанное изображение разделено на множество разделов изображения, причем кодированные представления указанных древовидных блоков сгруппированы в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта,
указанные сегменты включают в себя заданный сегмент; и
блок NAL кодированного слайса включает в себя биты, присоединенные к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента; и
декодирования кодированных представлений древовидных блоков.29. A computer-readable storage medium that stores instructions that, when executed by one or more processors, configure a video decoding device for
storing a network abstraction layer (NAL) block of a coded slice that includes encoded representations of tree blocks associated with an image slice, wherein said image is divided into a plurality of image sections, wherein coded representations of said tree blocks are grouped into segments associated with different image sections , moreover:
one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary,
said segments include a predetermined segment; and
a NAL block of an encoded slice includes bits attached to a given segment if the next tree block is inside the specified slice and is associated with a different section of the image other than the specified segment; and
decoding encoded representations of treeblocks.
средство для разделения изображения на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения; и
средство для создания блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, которые связаны со слайсом данного изображения, причем кодированные представления древовидных блоков сгруппированы в блоке NAL кодированного слайса в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из сегментов начинается на границе байта,
указанные сегменты включают в себя заданный сегмент, и
создание блока NAL кодированного слайса содержит выполнение операции заполнения незначащей информацией, которая присоединяет биты к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента.30. A video encoding device that encodes video data, wherein the video encoding device comprises:
means for dividing the image into a plurality of image sections, wherein the image comprises a plurality of tree blocks, wherein the image sections are associated with non-overlapping subsets of tree blocks of the image; and
means for creating a block of network abstraction layer (NAL) block of the encoded slice, which includes encoded representations of tree blocks that are associated with a slice of a given image, wherein encoded representations of tree blocks are grouped in a NAL block of the encoded slice into segments associated with different sections of the image, :
one or more of these segments are filled with insignificant information, so that each of the segments begins at the byte boundary,
said segments include a predetermined segment, and
creating a NAL block of an encoded slice comprises performing an operation for filling insignificant information that attaches bits to a given segment if the next tree block is inside the specified slice and is associated with another section of the image that is different from the specified segment.
средство для хранения блока уровня абстракции сети (NAL) кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения, при этом указанное изображение разделено на множество разделов изображения, причем кодированные представления указанных древовидных блоков сгруппированы в сегменты, связанные с разными разделами изображения, причем:
один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта,
указанные сегменты включают в себя заданный сегмент, и блок NAL кодированного слайса включает в себя биты, присоединенные к заданному сегменту, если следующий древовидный блок находится внутри указанного слайса и связан с другим разделом изображения, отличным от заданного сегмента; и
средство для декодирования кодированных представлений древовидных блоков. 31. A video decoding device that decodes video data, wherein the video decoding device comprises:
means for storing a block of network abstraction level (NAL) block of the encoded slice, which includes encoded representations of tree blocks associated with the image slice, wherein said image is divided into many image sections, wherein encoded representations of these tree blocks are grouped into segments associated with different sections of the image, moreover:
one or more of these segments are filled with insignificant information, so that each of these segments begins with a byte boundary,
said segments include a predetermined segment, and the NAL block of the encoded slice includes bits attached to the predetermined segment if the next tree block is inside the specified slice and is associated with a different section of the image other than the predetermined segment; and
means for decoding encoded representations of treeblocks.
Applications Claiming Priority (7)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161555932P | 2011-11-04 | 2011-11-04 | |
| US61/555,932 | 2011-11-04 | ||
| US201161557259P | 2011-11-08 | 2011-11-08 | |
| US61/557,259 | 2011-11-08 | ||
| US13/548,825 | 2012-07-13 | ||
| US13/548,825 US9077998B2 (en) | 2011-11-04 | 2012-07-13 | Padding of segments in coded slice NAL units |
| PCT/US2012/063027 WO2013067158A1 (en) | 2011-11-04 | 2012-11-01 | Padding of segments in coded slice nal units |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| RU2014122537A RU2014122537A (en) | 2015-12-10 |
| RU2575397C2 true RU2575397C2 (en) | 2016-02-20 |
Family
ID=
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2767601C1 (en) * | 2018-07-02 | 2022-03-17 | Нокиа Текнолоджиз Ой | Method and device for tile-related addressing when encoding video signal |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5471248A (en) * | 1992-11-13 | 1995-11-28 | National Semiconductor Corporation | System for tile coding of moving images |
| US7375661B2 (en) * | 2001-09-27 | 2008-05-20 | Canon Kabushiki Kaisha | Image coding apparatus, variable-length coding apparatus, control apparatus and method therof |
| RU2414092C2 (en) * | 2006-10-16 | 2011-03-10 | Нокиа Корпорейшн | Adaption of droppable low level during video signal scalable coding |
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5471248A (en) * | 1992-11-13 | 1995-11-28 | National Semiconductor Corporation | System for tile coding of moving images |
| US7375661B2 (en) * | 2001-09-27 | 2008-05-20 | Canon Kabushiki Kaisha | Image coding apparatus, variable-length coding apparatus, control apparatus and method therof |
| RU2414092C2 (en) * | 2006-10-16 | 2011-03-10 | Нокиа Корпорейшн | Adaption of droppable low level during video signal scalable coding |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2767601C1 (en) * | 2018-07-02 | 2022-03-17 | Нокиа Текнолоджиз Ой | Method and device for tile-related addressing when encoding video signal |
| US11290728B2 (en) | 2018-07-02 | 2022-03-29 | Nokia Technologies Oy | Method and apparatus for tile-relative addressing in video coding |
| US11838521B2 (en) | 2018-07-02 | 2023-12-05 | Nokia Technologies Oy | Method and apparatus for tile-relative addressing in video coding |
| US12301838B2 (en) | 2018-07-02 | 2025-05-13 | Nokia Technologies Oy | Method and apparatus for tile-relative addressing in video coding |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101589851B1 (en) | Padding of segments in coded slice nal units | |
| JP6144333B2 (en) | Level determination in rate-distortion optimal quantization. | |
| JP6181150B2 (en) | Coding coded block flags | |
| CN107925764B (en) | Method and apparatus for coding video data | |
| US9699472B2 (en) | Restriction of prediction units in B slices to uni-directional inter prediction | |
| US9621905B2 (en) | Tiles and wavefront parallel processing | |
| US9936201B2 (en) | Contexts for large coding tree units | |
| US9420280B2 (en) | Adaptive upsampling filters | |
| JP2021520117A (en) | Position-dependent intra-prediction combination extended in angle mode | |
| KR20140130466A (en) | Restriction of prediction units in b slices to uni-directional inter prediction | |
| TW201611583A (en) | Supplementary enhanced information message writing | |
| RU2575397C2 (en) | Padding of segments in coded slice network abstraction layer units | |
| RU2575412C2 (en) | Border pixel padding with fill characters for intra prediction in video coding | |
| HK1197512A (en) | Method and apparatus for padding segments in coded slice nal units | |
| HK1197512B (en) | Method and apparatus for padding segments in coded slice nal units | |
| HK1198236B (en) | Indication of use of wavefront parallel processing in video coding | |
| HK1198236A1 (en) | Indication of use of wavefront parallel processing in video coding |