RU2575397C2 - Padding of segments in coded slice network abstraction layer units - Google Patents

Padding of segments in coded slice network abstraction layer units Download PDF

Info

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
Application number
RU2014122537/08A
Other languages
Russian (ru)
Other versions
RU2014122537A (en
Inventor
Е-Куй ВАН
Мухаммед Зейд КОБАН
Марта КАРЧЕВИЧ
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/548,825 external-priority patent/US9077998B2/en
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2014122537A publication Critical patent/RU2014122537A/en
Application granted granted Critical
Publication of RU2575397C2 publication Critical patent/RU2575397C2/en

Links

Images

Abstract

FIELD: information technology.
SUBSTANCE: method of encoding video data, comprising dividing a picture into a plurality of picture partitions, the picture having a plurality of tree blocks, the picture partitions associated with non-overlapping subsets of the tree blocks of the picture; and generating a coded slice network abstraction layer (NAL) unit which includes encoded representations of the tree blocks associated with a slice of the picture, the encoded representations of the tree blocks grouped within the coded slice NAL unit into segments associated with different picture partitions, wherein one or more of the segments are padded such that each of the segments begins on a byte boundary, said segments including a given segment; and generating a coded slice network abstraction layer (NAL) unit comprises performing a padding operation which appends bits to the given segment if the next tree block is inside the slice and is associated with a different picture partition from the given segment.
EFFECT: high coding efficiency by providing parallel processing.
31 cl, 8 dwg

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 video coding system 10 in which the techniques described herein may be used. As used herein, the term “video encoder” refers to both video encoders and video decoders. In this description, the terms “video coding” or “coding” may refer generally to video coding and video decoding.

Как показано на Фиг. 1 система 10 видеокодирования включает в себя устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 создает кодированные видеоданные. Соответственно устройство-источник 12 может называться устройством видеокодирования. Устройство-адресат 14 может декодировать кодированные видеоданные, созданные устройством-источником 12. Соответственно устройство-адресат 14 может называться устройством видеодекодирования. Устройство-источник 12 и устройство-адресат 14 могут представлять собой примеры устройств видеокодирования.As shown in FIG. 1, a video coding system 10 includes a source device 12 and a destination device 14. The source device 12 creates encoded video data. Accordingly, the source device 12 may be referred to as a video coding device. The destination device 14 may decode the encoded video data generated by the source device 12. Accordingly, the destination device 14 may be referred to as a video decoding device. Source device 12 and destination device 14 may be examples of video coding devices.

Устройство-источник 12 и устройство-адресат 14 могут содержать любое из самых разных устройств, в том числе, настольные компьютеры, мобильные вычислительные устройства, компьютеры типа «ноутбук» (например, «лэптоп»), планшетные компьютеры, телевизионные приставки, телефонные трубки, так называемые «смартфоны», телевизионные приемники, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, автокомпьютеры или т.п. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы средствами беспроводной связи.The source device 12 and the destination device 14 may contain any of a wide variety of devices, including desktop computers, mobile computing devices, laptop computers (eg, laptops), tablet computers, set-top boxes, handsets, so-called “smartphones”, television sets, cameras, display devices, digital media players, video game consoles, car computers, or the like. In some cases, source device 12 and destination device 14 may be equipped with wireless communications.

Устройство-адресат 14 может принимать кодированные видеоданные от устройства-источника 12 через канал 16. Канал 16 может содержать среду или устройство любого типа, способное перемещать кодированные видеоданные от устройства-источника 12 на устройство-адресат 14. В одном примере канал 16 может содержать среду связи, позволяющую устройству-источнику 12 передавать кодированные видеоданные непосредственно на устройство-адресат 14 в режиме реального времени. Кодированные видеоданные могут быть модулированы устройством-источником 12 в соответствии со стандартом связи, таким как протокол беспроводной связи, и могут передаваться на устройство-адресат 14. Среда связи может содержать любой носитель проводной или беспроводной связи, например, радиочастотный (RF) спектр или одно или более физических линий передачи. Среда связи может составлять часть сети пакетной передачи, такой как локальная сеть, региональная сеть или глобальная сеть, например Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для осуществления связи между устройством-источником 12 и устройством-адресатом 14.The destination device 14 may receive encoded video data from the source device 12 through the channel 16. Channel 16 may contain any medium or device of any type capable of transferring the encoded video data from the source device 12 to the destination device 14. In one example, channel 16 may contain the medium communication, allowing the source device 12 to transmit encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated by the source device 12 in accordance with a communication standard, such as a wireless communication protocol, and may be transmitted to the destination device 14. The communication medium may comprise any wired or wireless communication medium, for example, radio frequency (RF) spectrum or one or more physical transmission lines. A communication medium may form part of a packet network, such as a local area network, a regional network, or a wide area network, such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful for communicating between the source device 12 and the destination device 14.

В другом примере канал 16 может соответствовать носителю информации, хранящему кодированные видеоданные, созданные устройством-источником 12. В этом примере устройство-адресат 14 может иметь доступ к указанному носителю информации через диски или карты. Указанный носитель информации может включать в себя самые разные носители информации локального доступа, такие как диски типа Blu-ray, диски DVD, диски CD, флэш-память, либо любую другой подходящий цифровой носитель информации для хранения кодированных видеоданных. В еще одном примере канал 16 может включать в себя файловый сервер или другое промежуточное запоминающее устройство, которое может хранить кодированное видео, созданное устройством-источником 12. Устройство-адресат 14 в этом примере может обращаться к кодированным видеоданным, запомненным на файловом сервере или другом промежуточном запоминающем устройстве, используя потоковую передачу или загрузку видеоданных. Файловый сервер может представлять собой сервер любого типа, способный запоминать и хранить кодированные видеоданные и передавать их на устройство-адресат 14. Примеры файловых серверов включают в себя Web-серверы (например, для Web-сайта), серверы Протокола пересылки файлов (FTP), подключенные к сети запоминающие устройства (NAS) и локальные накопители на дисках. Устройство-адресат 14 может иметь доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, в том числе Интернет соединение. Такие соединения могут включать в себя беспроводные каналы (например, Wi-Fi соединения), проводные соединения (например, DSL, кабельный модем и т.д.), либо комбинацию обоих видов соединений, которая подходит для доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных от файлового сервера может быть реализована в виде потоковой передачи, передачи с выгрузкой или их комбинации.In another example, channel 16 may correspond to an information medium storing encoded video data created by source device 12. In this example, destination device 14 may have access to said information medium via disks or cards. The storage medium may include a variety of local access media, such as Blu-ray discs, DVD discs, CD discs, flash memory, or any other suitable digital storage medium for storing encoded video data. In yet another example, channel 16 may include a file server or other intermediate storage device that can store encoded video created by source device 12. Destination device 14 in this example can access encoded video data stored on a file server or other intermediate a storage device using streaming or downloading video data. A file server can be any type of server capable of storing and storing encoded video data and transferring it to the destination device 14. Examples of file servers include Web servers (for example, for a Web site), File Transfer Protocol (FTP) servers, network-attached storage devices (NAS) and local disk drives. The destination device 14 may have access to encoded video data through any standard data connection, including an Internet connection. Such connections may include wireless channels (for example, Wi-Fi connections), wired connections (for example, DSL, cable modem, etc.), or a combination of both types of connections, which is suitable for access to encoded video data stored on a file server. The transmission of encoded video data from a file server can be implemented in the form of streaming, uploading, or a combination thereof.

Раскрытые здесь методики не обязательно ограничиваются беспроводными приложениями или установками. Эти методики можно применить к видеокодированию для поддержки любого из разнообразных мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для запоминания на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или другие приложения. В некоторых примерах система 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, video coding system 10 may be configured to support unidirectional or bidirectional video transmission to support applications such as video streaming, video playback, video broadcasting and / or video telephony.

В примере по Фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых случаях выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12 источник 18 видео может включать в себя такой источник, как устройство фиксации видео, например, видеокамеру, видеоархив, содержащий ранее зафиксированное видео, интерфейс подачи видео для приема видео от провайдера видеоконтента и/или системы компьютерной графики для создания видеоданных или комбинации указанных источников.In the example of FIG. 1, source device 12 includes a video source 18, video encoder 20, and output interface 22. In some cases, output interface 22 may include a modulator / demodulator (modem) and / or transmitter. In source device 12, video source 18 may include a source such as a video capture device, for example, a video camera, a video archive containing previously captured video, a video feed interface for receiving video from a video content provider and / or computer graphics system for creating video data or combinations of these sources.

Зафиксированное в данный момент, предварительно зафиксированное или созданное компьютером видео может быть кодировано видеокодером 20. Кодированные видеоданные могут передаваться непосредственно на устройство-адресат 14 через выходной интерфейс 22 устройства-источника 12. Кодированные видеоданные также могут запоминаться на носителе данных или файловом сервере для обращения к ним в будущем со стороны устройства-адресата 14 для декодирования и/или воспроизведения.Currently captured, pre-captured, or computer-generated video can be encoded by video encoder 20. Coded video data can be transmitted directly to destination device 14 via output interface 22 of source device 12. Coded video data can also be stored on a storage medium or file server to access in the future from the destination device 14 for decoding and / or reproduction.

В примере на Фиг. 1 устройство-адресат 14 включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых случаях входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства-адресата 14 принимает кодированные видеоданные через канал 16. Кодированные видеоданные могут включать в себя разнообразные синтаксические элементы, созданные видеокодером 20, которые представляют видеоданные. Указанные синтаксические элементы могут быть включены в кодированные видеоданные, передаваемые через среду связи, запоминаемые на носителе данных или запоминаемые на файловом сервере.In the example of FIG. 1, destination device 14 includes an input interface 28, video decoder 30, and display device 32. In some cases, the input interface 28 may include a receiver and / or modem. The input interface 28 of the destination device 14 receives the encoded video data through channel 16. The encoded video data may include a variety of syntax elements created by video encoder 20 that represent the video data. These syntactic elements may be included in encoded video data transmitted through a communication medium, stored on a storage medium or stored on a file server.

Устройство 32 отображения может являться составной частью (или быть внешним) устройства-адресата 14. В некоторых примерах устройство-адресат 14 может включать в себя интегрированное в него устройство отображения, а также быть сконфигурировано для взаимодействия с внешним устройством отображения. В других примерах устройством-адресатом 14 может быть устройство отображения. В общем случае устройство 32 отображения отображает пользователю декодированные видеоданные. Устройство 32 отображения может содержать любое из разнообразных устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.The display device 32 may be an integral part (or external) of the destination device 14. In some examples, the destination device 14 may include an integrated display device, and may also be configured to interact with an external display device. In other examples, destination device 14 may be a display device. In general, the display device 32 displays decoded video data to a user. The display device 32 may include any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.

Видеокодер 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 и родственные форматы при использовании методик разделения изображения на тайлы или волны волновой параллельной обработки.Video encoder 20 and video decoder 30 may operate according to a video compression standard, such as the high performance video coding (HEVC) standard currently being developed, and may conform to the HEVC test model (HM). The latest draft HEVC standard, called “HEVC Working Draft 6” or “WD6,” is described in JCTVC-H1003, Bross et al., “High efficiency video coding (HEVC) text specification draft 6” by the Joint Video Coding Development Team (JCT-VC ) ITU-T SG16 WP3 standards and ISO / IEC JTC1 / SC29 / WG11, 8th Meeting: SanJose, California USA, February, 2012, which as of May 1, 2012 can be downloaded from: http: //phenix.int-evry .fr / jct / doc_end_user / documents / 8_San% 20Jose / wg11 / JCTVC-H1003-v22.zip., the entire contents of which are hereby incorporated by reference. Alternatively, video encoder 20 and video decoder 30 may operate according to other commercial or industrial standards, such as ITU-T H.264, also called MPEG-4, part 10, AVC (Advanced Video Coding), or extensions to these standards when included techniques for dividing the image into tiles or waves of parallel wave processing. However, the techniques disclosed in this invention are not limited to any particular coding standard or technique. Other examples of video compression standards and techniques include MPEG-2 and ITU-T H.263 and proprietary compression formats or open-source compression formats such as VP8 and related formats using techniques for splitting an image into tiles or wave parallel processing.

Хотя это на Фиг. 1 не показано, согласно некоторым аспектам видеокодер 20 и видеодекодер 30 могут быть интегрированы каждый с аудиокодером и аудиодекодером и могут включать в себя соответствующие блоки MUX-DMUX (мультиплексор-демультиплексор) или другие аппаратные и программные средства для кодирования как аудио, так и видео в общем потоке данных или в отдельных потоках данных. В некоторых примерах, если это имеет место, блоки MUX-DMUX могут соответствовать Протоколу мультиплексора ITU H.223 или другим протоколам, таким как Протокол дэйтаграмм пользователя (UDP).Although this is in FIG. 1 is not shown, in some aspects, video encoder 20 and video decoder 30 can each be integrated with an audio encoder and audio decoder and may include respective MUX-DMUX units (multiplexer-demultiplexer) or other hardware and software for encoding both audio and video in general data stream or in separate data streams. In some examples, if this is the case, the MUX-DMUX units may conform to the ITU H.223 Multiplexer Protocol or other protocols such as User Datagram Protocol (UDP).

Следует заметить, что Фиг. 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») в соответствующем устройстве.Video encoder 20 and video decoder 30 can each be implemented as any suitable encoder or decoder circuitry, such as one or more microprocessors, digital signal processors (DSP), ASIC application specific integrated circuits, user programmable gate arrays (FPGAs), discrete logic circuits hardware, or any combination thereof. In the partial implementation of these techniques by software, the device can store software instructions on a suitable computer-readable medium for long-term storage to execute these instructions by hardware using one or more processors that implement the techniques disclosed in the invention. Both video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, or each of them may be integrated in a combined encoder / decoder (“CODEC”) in a corresponding device.

Как кратко упоминалось выше, видеокодер 20 кодирует видеоданные. Эти видеоданные могут содержать одно или более изображений. Каждое из этих изображений представляет собой неподвижное изображение, образующее часть видео. В некоторых случаях изображение может называться «кадром» видео или «полем» видео. Когда видеокодер 20 кодирует видеоданные, он может создать битовый поток. Этот битовый поток может включать в себя последовательность бит, которые образуют кодированное представление видеоданных. Битовый поток может включать в себя кодированные изображения и связанные с ними данные. Кодированное изображение является кодированным представлением изображения.As briefly mentioned above, video encoder 20 encodes video data. This video data may contain one or more images. Each of these images is a still image forming part of the video. In some cases, an image may be called a “frame” of a video or a “field” of video. When video encoder 20 encodes video data, it can create a bitstream. This bitstream may include a sequence of bits that form an encoded representation of the video data. The bitstream may include encoded images and associated data. An encoded image is an encoded representation of an image.

Для создания битового потока видеокодер 20 может выполнить операции кодирования для каждого изображения в видеоданных. Когда видеокодер 20 выполняет операции кодирования для изображений, он может создать ряд кодированных изображений и связанных с ними данных. Эти связанные с изображениями данные могут включать в себя наборы параметров последовательности, наборы параметров изображения, наборы параметров адаптации и другие синтаксические структуры. Набор параметров последовательности (SPS) может содержать параметры, применяемые к нулю или более последовательностям изображений. Последовательности изображений также могут называться кодированными видеопоследовательностями, как в стандартах H.264/AVC и HEVC. Набор параметров изображения (PPS) может содержать параметры, применяемые к нулю или более изображениям. Набор параметров адаптации (APS) может содержать параметры, применяемые к нулю или более изображениям. Параметрами в наборе APS могут быть параметры, вероятность изменения которых выше, чем у параметров в наборе PPS.To create a bitstream, video encoder 20 may perform encoding operations for each image in the video data. When video encoder 20 performs encoding operations for images, it can create a series of encoded images and associated data. These image related data may include sequence parameter sets, image parameter sets, adaptation parameter sets, and other syntactic structures. The Sequence Parameter Set (SPS) may contain parameters that apply to zero or more image sequences. Image sequences may also be called coded video sequences, as in the H.264 / AVC and HEVC standards. An Image Parameter Set (PPS) may contain parameters that apply to zero or more images. The Adaptation Parameter Set (APS) may contain parameters that apply to zero or more images. Parameters in the APS set can be parameters whose probability of change is higher than the parameters in the PPS set.

Для создания кодированного изображения видеокодер 20 может разделить изображение на видеоблоки одинакового размера. Видеоблок может представлять собой двумерную матрицу отсчетов. Каждый из видеоблоков связан с древовидным блоком. В некоторых случаях древовидный блок может называться самым крупным блоком кодирования (LCU) или древовидным блоком кодирования. Древовидные блоки стандарта HEVC могут во многих отношениях быть подобными макроблокам предшествующих стандартов, таких как H.264/AVC. Однако древовидный блок не обязательно ограничен конкретным размером и может включать в себя один или более блоков кодирования (CU). Видеокодер 20 может использовать разбиение квадродерева для выделения видеоблоков древовидных блоков в видеоблоки, связанные с блоками CU, отсюда название «древовидные блоки».To create an encoded image, video encoder 20 may split the image into video blocks of the same size. The video block may be a two-dimensional matrix of samples. Each of the video blocks is associated with a tree block. In some cases, the treeblock may be called the largest coding unit (LCU) or treeblock coding unit. HEVC treeblocks can in many respects be similar to macroblocks of previous standards such as H.264 / AVC. However, the tree block is not necessarily limited to a specific size and may include one or more coding units (CUs). Video encoder 20 may use quad-tree splitting to isolate video blocks of tree blocks into video blocks associated with CUs, hence the name “tree blocks”.

В некоторых примерах видеокодер 20 может разбить изображение на множество слайсов. Каждый из слайсов может включать в себя целое число последовательно закодированных древовидных блоков. В некоторых случаях каждый из слайсов может включать в себя целое число последовательно закодированных блоков CU. В качестве части выполнения операции кодирования изображения, видеокодер 20 может выполнять операции кодирования на каждом слайсе данного изображения. При выполнении видеокодером 20 операции кодирования на слайсе видеокодер 20 может создать кодированные данные, связанные с данным слайсом. Кодированные данные, связанные с данным слайсом, могут называться «кодированным слайсом».In some examples, video encoder 20 may split an image into multiple slices. Each of the slices may include an integer number of sequentially encoded tree blocks. In some cases, each of the slices may include an integer number of sequentially encoded CUs. As part of performing an image encoding operation, video encoder 20 may perform encoding operations on each slice of the image. When the video encoder 20 performs an encoding operation on a slice, video encoder 20 may create encoded data associated with the slice. The coded data associated with this slice may be referred to as a “coded slice”.

Для создания кодированного слайса видеокодер 20 может выполнить операции кодирования на каждом древовидном блоке в слайсе. При выполнении видеокодером 20 операции кодирования на древовидной блоке он может создать кодированный древовидный блок. Кодированный древовидный блок может содержать данные, представляющие кодированную версию древовидного блока.To create a coded slice, video encoder 20 may perform coding operations on each tree block in the slice. When the video encoder 20 performs an encoding operation on a tree block, it can create an encoded tree block. An encoded tree block may contain data representing an encoded version of the tree block.

При создании кодированного слайса видеокодер 20 может выполнить операцию кодирования на древовидных блоках в этом слайсе согласно порядку растрового сканирования. Другими словами, видеокодер 20 может кодировать древовидные блоки слайса в порядке слева направо через самую верхнюю строку древовидных блоков в слайсе, затем слева направо через следующую, лежащую ниже строку древовидных блоков и так далее, пока видеокодер 20 не выполнит кодирование всех древовидных блоков в данном слайсе.When creating an encoded slice, video encoder 20 may perform an encoding operation on treeblocks in this slice according to the raster scan order. In other words, video encoder 20 can encode slice tree blocks in order from left to right through the topmost row of tree blocks in the slice, then left to right through the next row of tree blocks below, and so on, until video encoder 20 encodes all tree blocks in a given 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, video encoder 20 can access the information generated by encoding the tree blocks located above and to the left of the tree block when encoding the tree block. However, video encoder 20 cannot access the information generated by encoding the tree blocks located below and to the right of the tree block when encoding this tree block.

Для создания кодированного древовидного блока видеокодер 20 может рекурсивно выполнять разбиение квадродерева на видеоблоке древовидного блока для разделения видеоблока на последовательно уменьшающиеся видеоблоки. Каждый из последовательно уменьшающихся видеоблоков может быть связан со своим блоком CU. Например, видеокодер 20 может разбить видеоблок древовидного блока на четыре подблока одинакового размера, разбить один или более из указанных подблоков на четыре элемента подблока одинакового размера и т.д. Выделенный таким образом блок CU может представлять собой блок CU, чей видеоблок разбит на видеоблоки, связанные с другими блоками CU. Неразбитый блок CU - это блок CU, чей видеоблок не разбит на видеоблоки, связанные с другими блоками CU.To create a coded tree block, video encoder 20 may recursively split a quad tree on a video block of a tree block to divide the video block into successively decreasing video blocks. Each of the successively decreasing video blocks can be associated with its own CU. For example, video encoder 20 can split a video block of a tree block into four subblocks of the same size, split one or more of these subblocks into four elements of a subblock of the same size, etc. The CU thus allocated can be a CU, whose video block is divided into video blocks associated with other CUs. An unbroken CU is a CU whose video block is not divided into video blocks associated with other CUs.

Один или более синтаксических элементов в битовом потоке могут указывать максимальное количество возможных разбиений указанного видеоблока древовидного блока, которые выполняются видеокодером 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 video encoder 20. The video block of the CU may be in the form of a square. The size of the video block of the CU can be in the range from 8 × 8 pixels to the size of the video block of the tree block (i.e., the size of the tree block), which is a maximum of 64 × 64 pixels or more.

Видеокодер 20 может выполнять операции кодирования каждого блока CU древовидного блока согласно порядку z-сканирования. Другими словами, видеокодер 20 может кодировать левый верхний блок CU, правый верхний блок CU, левый нижний блок CU, а затем правый нижний блок CU в указанном порядке. При выполнении операции кодирования на выделенном блоке CU видеокодер 20 может кодировать блоки CU, связанные с подблоками видеоблока выделенного блока CU, согласно порядку z-сканирования. Другими словами, видеокодер 20 может кодировать блок CU, связанный с левым нижним подблоком, а затем блок CU, связанный с правым нижним подблоком в указанном порядке.Video encoder 20 may perform coding operations of each CU of the treeblock according to the z-scan order. In other words, video encoder 20 may encode the upper left CU, the upper right CU, the lower left CU, and then the lower right CU in that order. When performing the encoding operation on the dedicated CU, video encoder 20 may encode CUs associated with the sub-blocks of the video block of the dedicated CU according to the z-scan order. In other words, video encoder 20 may encode a CU associated with the lower left sub-block, and then a CU associated with the lower right sub-block in that order.

В результате кодирования блоков 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, video encoder 20 is able to access information created by encoding some CUs that are adjacent to a given CU when encoding a given CU. However, video encoder 20 may be unable to access information created by encoding other CUs that are adjacent to a given CU when encoding a given CU.

Когда видеокодер 20 выполняет кодирование неразделенного блока CU, видеокодер 20 может создать один или более блоков предсказания (PU) для этого блока CU. Каждый из блоков PU блока CU может быть связан с другим видеоблоком в видеоблоке блока CU. Видеокодер 20 может создать предсказанный видеоблок для каждого блока PU блока CU. Предсказанный видеоблок блока PU может представлять собой блок отсчетов. Видеокодер 20 может использовать внутрикадровое предсказание или межкадровое предсказание для создания предсказанного видеоблока для PU.When video encoder 20 performs encoding of the non-shared CU, video encoder 20 may create one or more prediction units (PUs) for this CU. Each of the PU blocks of the CU may be associated with a different video block in the video block of the CU. Video encoder 20 may create a predicted video block for each PU of a CU. The predicted video block of the PU may be a block of samples. Video encoder 20 may use intra prediction or inter prediction to create a predicted video block for the PU.

Когда видеокодер 20 использует внутрикадровое предсказание для создания предсказанного видеоблока блока PU, видеокодер 20 может создать предсказанный видеоблок блока PU на основе декодированных отсчетов изображения, связанных с данным блоком PU. Если видеокодер 20 использует внутрикадровое предсказание для создания предсказанных видеоблоков блока PU блока CU, блок CU является блоком CU с внутрикадровым предсказанием. Когда видеокодер использует межкадровое предсказание для создания предсказанного видеоблока блока PU, видеокодер 20 может создать предсказанный видеоблок блока PU на основе декодированных отсчетов одного или более изображений, отличных от изображения, связанного с данным PU. Если видеокодер 20 использует межкадровое предсказание для создания предсказанных видеоблоков блоков PU блока CU, то блок CU представляет собой блок CU с межкадровым предсказанием.When video encoder 20 uses intra-frame prediction to create a predicted video block of a PU, video encoder 20 can create a predicted video block of a PU based on decoded image samples associated with that PU. If video encoder 20 uses intra-frame prediction to create predicted video blocks of a PU of a CU, the CU is an intra-prediction CU. When a video encoder uses inter-frame prediction to create a predicted video block of a PU block, video encoder 20 can create a predicted video block of a PU block based on decoded samples of one or more images other than the image associated with the PU. If video encoder 20 uses inter prediction to create predicted video blocks of PU blocks of a CU, then the CU is an inter prediction CU.

Кроме того, когда видеокодер 20 использует межкадровое предсказание для создания предсказанного видеоблока для блока PU, видеокодер 20 может создать информацию о движении для данного блока PU. Информация о движении для блока PU может указывать один или более опорных блоков блока PU. Каждый опорный блок блока PU может представлять собой видеоблок в опорном изображении. Опорным изображением может быть изображение, отличное от изображения, связанного с блоком PU. В некоторых случаях опорный блок блока PU также может называться «опорным образцом» блока PU. Видеокодер 20 может создать предсказанный видеоблок для блока PU на основе опорных блоков данного PU.In addition, when video encoder 20 uses inter-frame prediction to create a predicted video block for a PU, video encoder 20 can create motion information for a given PU. Motion information for a PU may indicate one or more support blocks of a PU. Each support block of the PU block may be a video block in the reference image. The reference image may be an image other than the image associated with the PU. In some cases, the support block of the PU block may also be called the “reference pattern” of the PU block. Video encoder 20 may create a predicted video block for a PU based on the reference blocks of that PU.

После создания видеокодером 20 предсказанных видеоблоков для одного или более PU блока CU видеокодер 20 может создать остаточные данные для блока CU на основе предсказанных видеоблоков для блоков PU блока CU. Остаточные данные для блока CU могут указывать разность между отсчетами в предсказанных видеоблоках для блоков PU блока CU и исходном видеоблоке блока CU.After the video encoder 20 has created predicted video blocks for one or more PUs of the CU, video encoder 20 may generate residual data for the CU based on the predicted video blocks for the PUs of the CU. The residual data for the CU may indicate the difference between the samples in the predicted video blocks for the PUs of the CU and the original video block of the CU.

Кроме того, в качестве части процесса выполнения операции кодирования на неразделенном блоке CU, видеокодер 20 может выполнить рекурсивное разбиение по квадродереву на остаточных данных блока CU для разделения остаточных данных блока CU на один или более блоков остаточных данных (то есть, остаточных видеоблоков), связанных с блоками преобразования (TU) блока CU. Каждый блок TU блока CU может быть связан с другим остаточным видеоблоком.In addition, as part of the process of performing the encoding operation on an unpartitioned CU, video encoder 20 may perform a quad-tree recursive partitioning into residual data of the CU to divide residual data of the CU into one or more residual data blocks (i.e., residual video blocks) associated with transform units (TU) of the CU. Each TU of a CU can be associated with another residual video block.

Видеокодер 20 может применить одно или более преобразований к остаточным видеоблокам, связанным с блоками TU, для создания блоков коэффициентов преобразования, связанных с блоками TU. Концептуально блок коэффициентов преобразования может представлять собой двумерную (2D) матрицу коэффициентов преобразования.Video encoder 20 may apply one or more transforms to residual video blocks associated with TUs to create blocks of transform coefficients associated with TUs. Conceptually, a block of transform coefficients can be a two-dimensional (2D) matrix of transform coefficients.

После создания блока коэффициентов преобразования видеокодер 20 может реализовать процесс квантования на блоке коэффициентов преобразования. Обычно квантование относится к процессу, в котором выполняется квантование коэффициентов преобразования с целью возможного сокращения объема данных, используемых для представления коэффициентов преобразования, что обеспечивает дополнительное сжатие. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами преобразования. Например, n-битный коэффициент преобразования можно округлить до m-битного коэффициента преобразования в процесс квантования, где n больше m.After creating a block of transform coefficients, video encoder 20 may implement a quantization process on a block of transform coefficients. Typically, quantization refers to a process in which quantization of transform coefficients is performed to possibly reduce the amount of data used to represent the transform coefficients, which provides additional compression. The quantization process can reduce the bit depth associated with some or all of the transform coefficients. For example, an n-bit transform coefficient can be rounded to an m-bit transform coefficient in a quantization process, where n is greater than m.

Видеокодер 20 может связать каждый блок CU со значением параметра квантования (QP). Значение QP, связанное с блоком CU, может определить, каким образом видеокодер 20 выполняет квантование блоков коэффициентов преобразования, связанных с данным блоком CU. Видеокодер 20 может отрегулировать степень квантования, применяемого к блокам коэффициентов преобразования, связанным с блоком CU, путем регулировки значения QP, связанного с данным блоком CU.Video encoder 20 may associate each CU with a quantization parameter (QP) value. The QP value associated with the CU may determine how video encoder 20 quantizes the blocks of transform coefficients associated with that CU. Video encoder 20 may adjust the degree of quantization applied to the blocks of transform coefficients associated with the CU, by adjusting the QP value associated with this CU.

После квантования блока коэффициентов преобразования видеокодером 20 он создает наборы синтаксических элементов, которые представляют коэффициенты трансформации в квантованном блоке коэффициентов трансформации. Видеокодер 20 может применить операции энтропийного кодирования, такие как операции контекстно-адаптивного бинарного арифметического кодирования (CABAC) к некоторым из этих синтаксических элементов.After quantizing the transform coefficient block by video encoder 20, it creates sets of syntax elements that represent transform coefficients in the quantized transform coefficient block. Video encoder 20 may apply entropy coding operations, such as context adaptive binary arithmetic coding (CABAC) operations to some of these syntax elements.

Битовый поток, созданный видеокодером 20, может включать в себя ряд блоков уровня абстракции сети (NAL). Каждый из блоков NAL может представлять собой синтаксическую структуру, содержащую индикацию о типе данных в блоке NAL, и байты, содержащие данные. Например, блок NAL может содержать данные, представляющие набор параметров последовательности, набор параметров изображения, кодированный слайс, одно или более сообщений с дополнительной расширенной информацией (SEI), ограничитель блока доступа, данные фильтра, или другой тип данных. Данные в блоке NAL могут включать в себя различные синтаксические структуры.The bitstream generated by video encoder 20 may include a number of network abstraction layer (NAL) blocks. Each of the NAL units may be a syntax structure containing an indication of the type of data in the NAL unit, and bytes containing data. For example, a NAL unit may contain data representing a set of sequence parameters, a set of image parameters, an encoded slice, one or more additional extended information (SEI) messages, an access block delimiter, filter data, or another data type. The data in the NAL unit may include various syntax structures.

Видеодекодер 30 может принимать битовый поток, созданный видеокодером 20. Этот битовый поток может включать в себя кодированное представление видеоданных, кодированных видеокодером 20. Принимая битовый поток, видеодекодер 30 может выполнить операцию синтаксического анализа этого битового потока. При выполнении операции синтаксического анализа видеодекодер 30 может выделить синтаксические элементы из битового потока. Видеодекодер 30 может восстановить изображения видеоданных на основе синтаксических элементов, извлеченных из битового потока. Процесс восстановления видеоданных на основе синтаксических элементов в общем случае является обратным по отношению к процессу, выполняемому видеокодером 20 для создания синтаксических элементов.Video decoder 30 may receive a bitstream generated by video encoder 20. This bitstream may include an encoded representation of the video data encoded by video encoder 20. By receiving the bitstream, video decoder 30 may perform a parsing operation on this bitstream. In a parsing operation, video decoder 30 may extract syntax elements from a bitstream. Video decoder 30 may recover images of video data based on syntax elements extracted from the bitstream. The process of restoring video data based on syntax elements is generally the reverse of the process performed by video encoder 20 to create syntax elements.

После извлечения видеодекодером 30 синтаксических элементов, связанных с блоком CU, видеодекодер 30 может создать предсказанные видеоблоки для блоков PU блока CU на основе этих синтаксических элементов. Вдобавок, видеодекодер 30 может выполнить обратное квантование блоков коэффициентов преобразования, связанных с блоками TU данного блока CU. Видеодекодер 30 может выполнить обратное преобразование блоков коэффициентов преобразования для восстановления остаточных видеоблоков, связанных с блоками TU данного блока CU. После создания предсказанных видеоблоков и восстановления остаточных видеоблоков видеодекодер 30 может восстановить видеоблок блока CU на основе предсказанных видеоблоков и остаточных видеоблоков. Видеодекодер 30 может таким путем восстановить видеоблоки блоков CU на основе указанных синтаксических элементов в битовом потоке.After the video decoder 30 has retrieved the syntax elements associated with the CU, the video decoder 30 may create predicted video blocks for the PUs of the CU based on these syntax elements. In addition, video decoder 30 may inverse quantize blocks of transform coefficients associated with TUs of a given CU. Video decoder 30 may reverse transform the blocks of transform coefficients to recover residual video blocks associated with the TUs of a given CU. After creating the predicted video blocks and reconstructing the residual video blocks, video decoder 30 may recover the video block of the CU based on the predicted video blocks and residual video blocks. Video decoder 30 may thus restore the video blocks of the CUs based on the specified syntax elements in the bitstream.

Видеокодер 20 может разделить текущее изображение на множество разделов изображения. Разделы изображения могут быть связаны с неперекрывающимися поднаборами древовидных блоков текущего изображения. Видеокодер 20 может разделить текущее изображение на множество разделов изображений различными путями. Как описано ниже, видеокодер 20 может разделить текущее изображение на множество тайлов или множество волн волновой параллельной обработки (WPP). Используемый в настоящем изобретении термин «раздел изображения» относится в общем как к тайлам, так и к волнам WPP. Процесс разделения текущего изображения на разделы изображения может называться «разбиением» текущего изображения на разделы изображения.Video encoder 20 may split the current image into a plurality of image sections. Sections of the image may be associated with non-overlapping subsets of tree blocks of the current image. Video encoder 20 may divide the current image into a plurality of image sections in various ways. As described below, video encoder 20 may split the current image into multiple tiles or multiple waves of wave parallel processing (WPP). As used in the present invention, the term “image section” refers generally to both tiles and WPP waves. The process of dividing the current image into image sections may be referred to as “dividing” the current image into image sections.

Как упоминалось выше, видеокодер 20 может разделить текущее изображение на один или более тайлов. Каждый тайл может содержать целое число древовидных блоков в текущем изображении. Видеокодер 20 может разделить текущее изображение на тайлы путем определения двух или боле вертикальных границ тайла и двух или более горизонтальных границ тайла. Каждая вертикальная сторона текущего изображения может рассматриваться как вертикальная граница тайла. Каждую горизонтальную сторону текущего изображения можно считать горизонтальной границей тайла. Например, если видеокодер 20 определяет четыре вертикальные границы тайлов и три горизонтальных границы тайлов для текущего изображения, то текущее изображение делится на шесть тайлов.As mentioned above, video encoder 20 may split the current image into one or more tiles. Each tile can contain an integer number of tree blocks in the current image. Video encoder 20 may divide the current image into tiles by defining two or more vertical tile borders and two or more horizontal tile borders. Each vertical side of the current image can be considered as the vertical border of the tile. Each horizontal side of the current image can be considered the horizontal border of the tile. For example, if video encoder 20 determines four vertical tile borders and three horizontal tile borders for the current image, then the current image is divided into six tiles.

Видеокодер, такой как видеокодер 20 или видеодекодер 30, может кодировать тайлы текущего изображения согласно порядку растрового сканирования. Кроме того, при кодировании тайла видеокодером видеокодер может закодировать каждый древовидный блок в данном тайле согласно порядку растрового сканирования. Видеокодер может таким путем закодировать каждый древовидный блок данного тайла текущего изображения, прежде чем кодировать какой-либо древовидный блок другого тайла этого изображения. Следовательно, порядок кодирования видеокодером древовидных блоков текущего изображения, может отличаться, когда видеокодер разделяет текущее изображение на множество тайлов, от случая, когда видеокодер не разделяет текущее изображение на множество тайлов.A video encoder, such as video encoder 20 or video decoder 30, may encode tiles of the current image according to a raster scan order. In addition, when encoding a tile with a video encoder, a video encoder can encode each tree block in a given tile according to the raster scan order. The video encoder can encode each tree block of a given tile of the current image in this way before encoding any tree block of another tile of this image. Therefore, the encoding order of the tree blocks of the current image by the video encoder may differ when the video encoder splits the current image into multiple tiles, from the case when the video encoder does not divide the current image into multiple tiles.

Кроме того, в некоторых случаях видеокодер может использовать информацию, связанную с соседними в пространстве блоками 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, video encoder 20 may create a NAL block of an encoded slice that includes an encoded representation of the slice. A slice can be associated with an integer number of sequentially encoded tree blocks. An encoded slice NAL unit may include a slice header and slice data. Slice data may include encoded representations of each treeblock associated with this slice. Video encoder 20 may create a NAL block of the encoded slice so that the specified encoded representations of the tree blocks are grouped in the slice data in segments according to the sections of the image to which these tree blocks belong. For example, each NAL unit of an encoded slice may include an encoded tree block associated with a first section of an image, followed by a tree block associated with a second section of an image, followed by an encoded tree block associated with a third section of an image, etc. .

Согласно раскрытым здесь методикам видеокодер 20 может заполнить один или более сегментов незначащей информацией, так чтобы каждый сегмент начинался на границе байта. Блок NAL кодированного слайса может быть разделен на ряд байтов. Сегмент может начинаться на границе байта, когда его первый бит является первым битом одного из байтов блока NAL кодированного слайса. Кроме того, сегмент может быть выровнен по байтам, если первый бит сегмента является первым битом одного из байтов блока NAL кодированного слайса. При заполнении видеокодером сегмента видеокодер 20 может приложить к этому сегменту заполняющие биты. Например, видеокодер 20 может добавить один или более бит заполнения к сегменту таким образом, чтобы количество бит в сегменте делилось на восемь без остатка. Биты заполнения не обязаны иметь семантическое значение; они служат для того, чтобы обеспечить начало следующего сегмента с границы байта.According to the techniques disclosed herein, video encoder 20 may populate one or more segments with insignificant information so that each segment begins at the byte boundary. A NAL block of an encoded slice can be divided into a series of bytes. A segment may begin at the byte boundary when its first bit is the first bit of one of the bytes of the NAL block of the encoded slice. In addition, a segment may be byte aligned if the first bit of the segment is the first bit of one of the bytes of the NAL block of the encoded slice. When a video encoder fills a segment, video encoder 20 may attach fill bits to this segment. For example, video encoder 20 may add one or more padding bits to a segment such that the number of bits in the segment is divided by eight without a remainder. Population bits are not required to have semantic meaning; they serve to ensure that the next segment starts at the byte boundary.

Получив блок NAL кодированного слайса, видеодекодер 30 может запомнить этот блок NAL кодированного слайса в памяти. Для параллельного декодирования разделов изображения видеодекодер 30 может распределить сегменты по разным потокам декодирования, которые выполняются параллельно. Чтобы распределить сегменты по разным потокам декодирования, видеодекодеру 30 потребуется указать адреса памяти, связанные с началом каждого из сегментов. Видеодекодер 30 может использовать побайтовую адресацию памяти. Соответственно, видеодекодер 30 возможно не сможет указать адрес памяти, связанный с началом сегмента, если начало сегмента оказалось внутри байта. Следовательно, видеодекодер 30 не сможет в этом случае выполнить параллельное декодирование кодированных древовидных блоков в сегменте, если один или более сегментов начинаются внутри байта. В качестве альтернативы, видеодекодер 30 может использовать побитовую адресацию памяти или побайтовую плюс побитовую адресацию, чтобы иметь возможность параллельного декодирования древовидных блоков в указанных сегментах, но при этом усложняется техническая реализация и вычисления.Upon receiving the NAL unit of the encoded slice, video decoder 30 may store this NAL unit of the encoded slice in memory. For parallel decoding of sections of an image, video decoder 30 may distribute segments among different decoding streams that are executed in parallel. In order to distribute segments among different decoding streams, video decoder 30 will need to indicate memory addresses associated with the start of each of the segments. Video decoder 30 may use byte addressing of memory. Accordingly, video decoder 30 may not be able to indicate the memory address associated with the beginning of the segment if the beginning of the segment is inside the byte. Therefore, video decoder 30 will not be able in this case to perform parallel decoding of encoded treeblocks in a segment if one or more segments begin within the byte. Alternatively, video decoder 30 may use bitwise memory addressing or bit-by-bit plus bitwise addressing to be able to decode tree blocks in the indicated segments in parallel, but technical implementation and calculations are complicated.

Видеокодер 20 может указанным образом разделить изображение на множество разделов изображения. Изображение содержит множество древовидных блоков. Разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков изображения. Видеокодер 20 может создать блок NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, которые связаны со слайсом изображения. Кодированные представления древовидных блоков в блоке NAL кодированного слайса группируются в сегменты, связанные со своими разделами изображения. Один или более сегментов заполняют незначащей информацией, так чтобы каждый сегмент начинался на границе байта.Video encoder 20 may divide an image into a plurality of image sections in this manner. Image contains many tree blocks. Image sections are associated with non-overlapping subsets of tree-like image blocks. Video encoder 20 may create a NAL unit of an encoded slice that includes encoded representations of tree blocks that are associated with an image slice. The encoded representations of the tree blocks in the NAL block of the encoded slice are grouped into segments associated with their image sections. One or more segments are filled with insignificant information, so that each segment begins at the byte boundary.

Кроме того, видеодекодер 30 может запомнить блок NAL кодированного слайса, который включает в себя кодированные представления древовидных блоков, связанных со слайсом изображения. Изображение можно разделить на множество разделов изображения. Кодированные представления древовидных блоков можно сгруппировать в сегменты, каждый из которых будет связан со своим разделом изображения. Один или более сегментов заполняют незначащей информацией с тем, чтобы каждый сегмент начинался с границы байта. Видеодекодер 30 может декодировать кодированные представления древовидных блоков. В некоторых случаях видеодекодер 30 может декодировать кодированные представления древовидных блоков в двух или более сегментах параллельно.In addition, video decoder 30 may store a NAL unit of the encoded slice, which includes encoded representations of tree blocks associated with the image slice. An image can be divided into many sections of the image. Coded representations of tree blocks can be grouped into segments, each of which will be associated with its own section of the image. One or more segments are filled with insignificant information so that each segment begins with a byte boundary. Video decoder 30 may decode encoded representations of treeblocks. In some cases, video decoder 30 may decode encoded representations of tree blocks in two or more segments in parallel.

На Фиг. 2 представлена блок-схема, иллюстрирующая примерный видеокодер 20, сконфигурированный для реализации раскрытых здесь методик. Фиг. 2 приведена в разъяснительных целях, и ее не следует рассматривать как ограничение указанных методик, широко представленных и описанных здесь в качестве примеров. В целях разъяснения изобретения видеокодер 20 описан здесь в контексте кодирования согласно стандарту HEVC. Однако раскрытые здесь методики можно применить к другим стандартам или методам кодирования.In FIG. 2 is a flowchart illustrating an example video encoder 20 configured to implement the techniques disclosed herein. FIG. 2 is provided for explanatory purposes, and should not be construed as limiting the aforementioned techniques that are widely presented and described here as examples. For the purpose of explaining the invention, video encoder 20 is described herein in the context of encoding according to the HEVC standard. However, the techniques disclosed herein may be applied to other standards or coding methods.

В примере по Фиг. 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, video encoder 20 includes many functional components. The functional components of video encoder 20 include a prediction module 100, a remainder data generation module 102, a transform module 104, a quantization module 106, a quantization module 108, an inverse transform module 110, a reconstruction module 112, a filter module 113, a decoded image buffer 114, and a module 116 entropy coding. The prediction module 100 includes an inter prediction module 121, a motion estimation module 122, a motion compensation module 124, and an intra prediction module 126. In other examples, video encoder 20 may include fewer or more functional components or other functional components. In addition, the motion estimation module 122 and the motion compensation module 124 can be implemented as a single module with a high degree of integration, but they are presented in the example of FIG. 2 separately in order to explain their functioning.

Видеокодер 20 может принимать видеоданные. Прием видеоданных видеокодером 20 может осуществляться от различных источников. Например, видеокодер 20 может принимать видеоданные от источника 18 видео (Фиг. 1) или другого источника. Видеоданные могут представлять ряд изображений. Для кодирования видеоданных видеокодер 20 может выполнить операцию кодирования для каждого изображения. В качестве части процесса выполнения операции кодирования изображения видеокодер 20 может выполнить операции кодирования на каждом слайсе данного изображения. В качестве части выполнения операции кодирования на слайсе видеокодер 20 может выполнить операции кодирования на древовидных блоках в слайсе.Video encoder 20 may receive video data. Reception of video data by video encoder 20 may be from various sources. For example, video encoder 20 may receive video data from a video source 18 (FIG. 1) or another source. Video data may represent a series of images. To encode video data, video encoder 20 may perform an encoding operation for each image. As part of the process of performing an image encoding operation, video encoder 20 may perform encoding operations on each slice of the image. As part of performing an encoding operation on a slice, video encoder 20 may perform encoding operations on tree blocks in the slice.

Как часть выполнения операции кодирования на древовидном блоке модуль 100 предсказания может выполнить разбиение на основе квадродерева на видеоблоке древовидного блока для разделения видеоблока на уменьшающиеся с каждым разбиением видеоблоки. Каждый из видеоблоков меньшего размера может быть связан со своим блоком CU. Например, модуль 100 предсказания может разбить видеоблок древовидного блока на четыре подблока одинакового размера, разбить один или более из этих подблоков на четыре элементов подблока одинакового размера и т.д.As part of the encoding operation on the treeblock, the prediction unit 100 may perform quad-tree splitting on the video block of the treeblock to divide the video block into video blocks decreasing with each split. Each of the smaller video blocks may be associated with its own CU. For example, prediction module 100 may split a video block of a tree block into four subblocks of the same size, split one or more of these subblocks into four elements of a subblock of the same size, etc.

Размеры видеоблоков, связанных с блоками 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 prediction unit 100 may create a data structure in the form of a hierarchical quad tree for a given treeblock. For example, a treeblock may correspond to a root node of a quad tree data structure. If the prediction module 100 splits the video block of the tree block into four sub-blocks, then this root node will have four child nodes in the data structure in the form of a quad tree. Each of the child nodes corresponds to a CU associated with one of the subunits. If the prediction unit 100 divides one of the subunits into four elements of the subunit, then the node corresponding to the CU associated with this subunit can have four child nodes, each of which corresponds to the CU associated with one of the elements of the subunits.

Каждый узел структуры данных в виде квадродерева может содержать синтаксические данные (например, синтаксические элементы) для соответствующего древовидного блока или блока 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.Video encoder 20 may perform coding operations on each non-shared unit CU of the treeblock. When the video encoder 20 performs the encoding operation on the non-shared CU, video encoder 20 creates data representing an encoded representation of the non-shared 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 prediction unit 100 may split the video block of the CU into several (in the extreme case, one) PU blocks of the CU. Video encoder 20 and video decoder 30 may support different PU block sizes. Assuming that the size of a specific CU is 2N × 2N, then video encoder 20 and video decoder 30 may support 2N × 2N or N × N PU sizes and inter-frame prediction for symmetric PU sizes of 2N × 2N, 2N × N, N × 2N, N × N, 2N × nU, nL × 2N, nR × 2N or the like Video encoder 20 and video decoder 30 can also support asymmetric partitioning for PUs with dimensions of 2N × nU, 2N × nD, nL × 2N, and nR × 2N. In some examples, the prediction unit 100 may perform geometric partitioning to split the video block of the CU between the PUs of the given CU along a border that does not intersect the sides of the video block of the CU at right angles.

Модуль 121 межкадрового предсказания может выполнить межкадровое предсказание на каждом блоке PU блока CU. Межкадровое предсказание может обеспечить временное сжатие. Для выполнения межкадрового предсказания на блоке PU модуль 122 оценки движения может создать информацию о движении для блока PU. Модуль 124 компенсации движения может создать предсказанный видеоблок для блока PU на основе информации о движении и декодированных отсчетов изображений, отличных от изображения, связанного с данным блоком CU (то есть, опорные изображения). В данном описании предсказанный видеоблок, созданный модулем 124 компенсации движения, может называться видеоблоком с межкадровым предсказанием.Inter prediction unit 121 may perform inter prediction on each PU of a CU. Inter prediction can provide temporal compression. To perform inter-frame prediction on the PU, motion estimation module 122 may generate motion information for the PU. Motion compensation module 124 may create a predicted video block for the PU based on motion information and decoded image samples other than the image associated with this CU (i.e., reference images). In this description, the predicted video block created by motion compensation module 124 may be referred to as inter-frame predicted video block.

Слайсы могут быть 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. Motion estimation module 122 and motion compensation module 124 can perform different operations for the PU of the CU, depending on which type of slice (I, P or B) this PU is in. In Slice I, all PUs are obtained using intra-frame prediction. Therefore, if the PU is in I slice, then motion estimation module 122 and motion compensation module 124 do not perform inter-frame prediction on this PU.

Если блок 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 motion estimation module 122 performs the motion estimation operation with respect to the PU in the P slice, the motion estimation module 122 can search for reference images in list 0 for the reference block for that PU. The reference block of the PU block can be a set of samples, for example, a block of samples, which is closest to the samples in the video block of the PU block. Motion estimation module 122 may use a variety of metrics to determine how close the set of samples in the reference image corresponds to the samples in the video block of the PU. For example, motion estimation module 122 may determine how close a set of samples in a reference image corresponds to samples in a video block of a PU block using an approach based on the sum of the absolute differences (SAD), the sum of the squared deviations (SSD), or other deviation metrics.

После идентификации опорного блока для блока 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 motion estimation module 122 may create a reference index indicating the reference image in list 0 containing the given reference block and a motion vector that indicates the spatial displacement between the PU block and the reference block. In various examples, motion estimation module 122 may generate variable motion vectors. For example, motion estimation module 122 may create motion vectors with a quarter-frame accuracy, one-eighth of a frame precision, or another fractional accuracy. In the case of fractional accuracy, the values of the reference block can be interpolated based on the integer values of the position samples in the reference image. Motion estimation module 122 may provide a reference index and a motion vector as the motion information of the PU. Motion compensation module 124 may create a predicted video block of a PU block based on a reference block identified by the motion information of the PU block.

Если блок 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 "list 1". In some examples, an image containing a B slice may be associated with a combination of lists, which is a combination of list 0 and list 1.

Кроме того, если блок 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 motion estimation module 122 may perform unidirectional prediction or bidirectional prediction for a given PU. When module 122 performs unidirectional prediction motion estimation for the PU, this module can search for reference images from list 0 or from list 1 for the reference block for the PU. Module 122 can then create a reference index that indicates the reference image in list 0 or list 1 containing the reference block, and a motion vector that indicates the spatial displacement between the PU block and the reference block. Motion estimation module 122 may provide a reference index, a prediction direction indicator, and a motion vector as motion information regarding the PU. The prediction direction indicator may indicate whether the reference index points to the reference image in list 0 or in list 1. Motion compensation module 124 may create a predicted video block of the PU block based on the reference block indicated in the motion information regarding the PU block.

Когда модуль 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 motion estimation module 122 performs bidirectional prediction for the PU, motion estimation module 122 can search for reference images in list 0 for a reference block for a given PU, and can also search for reference images in list 1 for another reference block for a PU. Then, motion estimation module 122 creates reference indices that indicate reference images in list 0 and in list 1, containing reference blocks and motion vectors indicating spatial displacements between the reference blocks and the PU. The motion estimation module 122 may provide reference indices and motion vectors of the PU unit as the motion information of the PU unit. Motion compensation module 124 may create a predicted video block of the PU block based on the reference blocks indicated in the motion information of the PU block. In some cases, motion estimation module 122 does not provide a complete set of motion information for the PU unit to entropy encoding module 116. Conversely, motion estimation module 122 may report motion information related to a PU, with reference to motion information related to another PU. For example, motion estimation module 122 may determine that the motion information for a given PU is similar to the motion information for a neighboring PU. In this example, motion estimation module 122 may indicate (in the syntax associated with this PU) a value indicating to video decoder 30 that the given PU has the same motion information as the neighboring PU. In another example, motion estimation module 122 may identify (in the syntax associated with this PU) the neighboring PU and their motion vector difference (MVD). The difference of the motion vectors indicates the difference between the motion vector of the PU block and the motion vector of the indicated neighboring PU block. Video decoder 30 may use the motion vector of the indicated neighboring PU and the difference of the motion vectors to determine the motion vector of the PU. Referring to the motion information of the first PU when signaling about the motion of the second PU, the video encoder 20 is able to report motion information for the second PU, using fewer bits.

В качестве части выполнения операции кодирования на блоке CU модуль 126 внутрикадрового предсказания может выполнить внутрикадровое предсказание на блоках PU блока CU. Внутрикадровое предсказание может обеспечить пространственное сжатие. При выполнении внутрикадрового предсказания на блоке PU модуль 126 внутрикадрового предсказания может создать данные предсказания для блока PU на основе декодированных отсчетов других блоков PU в том же изображении. Данные предсказания для блока PU могут включать в себя предсказанный видеоблок и различные синтаксические элементы. Модуль 126 внутрикадрового предсказания может выполнить внутрикадровое предсказание на блоках PU в I слайсах, P слайсах и B слайсах.As part of the encoding operation on the CU, the intra prediction unit 126 may perform intra prediction on the PUs of the CU. Intra frame prediction can provide spatial compression. When performing intra-frame prediction on the PU block, the intra-frame prediction unit 126 may generate prediction data for the PU block based on decoded samples of other PU blocks in the same image. Prediction data for a PU may include a predicted video block and various syntax elements. Intra-frame prediction unit 126 may perform intra-frame prediction on PUs in I slices, P slices, and B slices.

Для выполнения внутрикадрового предсказания на PU модуль 126 внутрикадрового предсказания может использовать множество режимов внутрикадрового предсказания для создания множества наборов данных предсказания для блока PU. При использовании режима внутрикадрового предсказания для создания набора данных предсказания для данного блока PU модуль 126 внутрикадрового предсказания может распространить отсчеты из видеоблоков соседних блоков PU через видеоблок данного блока PU в направлении и/или по градиенту, связанному с режимом внутрикадрового предсказания. Соседние блоки PU могут находиться выше, выше и правее, выше и левее или левее данного блока PU, если предположить, что кодирование для блоков PU, CU и древовидных блоков выполняется в порядке слева направо, сверху вниз. Модуль 126 внутрикадрового предсказания может использовать разное количество режимов внутрикадрового предсказания, например, 33 режима направленного внутрикадрового предсказания в зависимости от размера данного блока PU.To perform intra-frame prediction on the PU, the intra-frame prediction module 126 may use a plurality of intra-frame prediction modes to create a plurality of prediction data sets for the PU. When using the intra prediction mode to create a prediction data set for a given PU block, the intra prediction module 126 may propagate the samples from the video blocks of neighboring PU blocks through the video block of this PU block in the direction and / or along the gradient associated with the intra prediction mode. Neighboring PUs may be higher, higher, and to the right, higher, and to the left or left of a given PU, assuming that coding for PUs, CUs, and treeblocks is performed from left to right, top to bottom. Intra-frame prediction unit 126 may use a different number of intra-frame prediction modes, for example, 33 directional intra-frame prediction modes, depending on the size of a given PU.

Модуль 100 предсказания может выбрать данные предсказания для PU из числа данных предсказания, созданных модулем 124 компенсации движения для данного блока PU, или данные предсказания, созданные модулем 126 внутрикадрового предсказания для данного блока PU. В некоторых примерах модуль 100 предсказания выбирает данные предсказания для данного блока PU на основе показателя «расход бит/искажение» наборов данных предсказания.Prediction unit 100 may select prediction data for the PU from among the prediction data created by motion compensation unit 124 for a given PU, or prediction data created by intraframe prediction unit 126 for a given PU. In some examples, prediction module 100 selects prediction data for a given PU based on the bit / distortion rate of the prediction data sets.

Если модуль 100 предсказания выбирает данные предсказания, созданные модулем 126 внутрикадрового предсказания, он может просигнализировать о режиме внутрикадрового предсказания, использованном им для создания данных предсказания для блоков PU, то есть, о выбранном режиме внутрикадрового предсказания. Модуль 100 предсказания может выполнить сигнализацию о выбранном режиме внутрикадрового предсказания различными путями. Например, весьма вероятно, что выбранный режим внутрикадрового предсказания совпадает с режимом внутрикадрового предсказания соседнего блока PU. Другими словами, режим внутрикадрового предсказания соседнего блока PU может быть наиболее вероятным режимом для текущего блока PU. Таким образом, модуль 100 предсказания может создать синтаксический элемент для указания о том, что выбранный режим внутрикадрового предсказания совпадает с режимом внутрикадрового предсказания соседнего блока PU.If the prediction unit 100 selects the prediction data generated by the intra-frame prediction unit 126, it may signal the intra-frame prediction mode used by it to generate the prediction data for the PUs, i.e., the selected intra-frame prediction mode. Prediction unit 100 may signal the selected intra-frame prediction mode in various ways. For example, it is highly likely that the selected intra prediction mode coincides with the intra prediction mode of the neighboring PU. In other words, the intra prediction mode of the neighboring PU may be the most likely mode for the current PU. Thus, the prediction unit 100 may create a syntax element for indicating that the selected intra-prediction mode is the same as the intra-prediction mode of the neighboring PU.

После выбора модулем 100 предсказания данных предсказания для блоков PU блока CU модуль 102 создания остаточных данных может создать остаточные данные для блока CU путем вычитания предсказанных видеоблоков блоков PU блока CU из видеоблока блока CU. Остаточные данные блока CU могут включать в себя остаточные видеоблоки в формате 2D, которые соответствуют разным компонентам отсчетов в видеоблоке блока CU. Например, остаточные данные могут включать в себя остаточный видеоблок, который соответствует разностям между компонентами яркости отсчетов в предсказанных видеоблоках блоков PU блока CU и компонентами яркости отсчетов в исходном видеоблоке блока CU. Вдобавок, остаточные данные блока CU могут включать в себя остаточные видеоблоки, которые соответствуют разностям между компонентами цветности отсчетов в предсказанных видеоблоках блоков PU блока CU и компонентами цветности отсчетов в исходном видеоблоке блока CU.After the prediction data 100 determines the prediction data for the PU units of the CU unit, the residual data generating unit 102 can create residual data for the CU unit by subtracting the predicted video blocks of the PU units of the CU unit from the video unit of the CU unit. The residual data of the CU may include residual 2D video blocks that correspond to different sample components in the video block of the CU. For example, the residual data may include a residual video block that corresponds to differences between the luminance components of the samples in the predicted video blocks of the PU blocks of the CU and the luminance components of the samples in the original video block of the CU. In addition, the residual data of the CU may include residual video blocks that correspond to differences between the color components of the samples in the predicted video blocks of the PU blocks of the CU and the color components of the samples in the original video block of the CU.

Модуль 100 предсказания может выполнить разбиение по квадродереву для разбиения остаточных видеоблоков блока CU на подблоки. Каждый неразделенный остаточный видеоблок может быть связан с другим блоком TU блока CU. Размеры и позиции остаточных видеоблоков, связанных с блоками TU блока CU, могут зависеть, а могут и не зависеть от размеров и позиций видеоблоков, связанных с блоками PU блока CU. Древовидная структура, известная как «остаточное квадродерево» (RQT), может включать в себя режимы, связанные с каждым из остаточных видеоблоков. Блоки TU блока CU могут соответствовать концевым узлам дерева RQT.Prediction module 100 may perform quad-tree partitioning to partition the residual video blocks of the CU into subblocks. Each undivided residual video block may be associated with another TU of a CU. The sizes and positions of the residual video blocks associated with the TUs of the CU may or may not depend on the sizes and positions of the video blocks associated with the PUs of the CU. The tree structure, known as the "residual quad tree" (RQT), may include modes associated with each of the residual video blocks. The TUs of the CU can correspond to the end nodes of the RQT tree.

Модуль 104 преобразования может создать один или более блоков коэффициентов преобразования для каждого блока TU блока CU путем применения одного или более преобразований к остаточному видеоблоку, связанному с указанному блоком TU. Каждый блок коэффициентов преобразования может представлять собой 2D матрицу коэффициентов преобразования. Модуль 104 преобразования может применить разные преобразования к остаточному видеоблоку, связанному с блоком TU. Например, модуль 104 преобразования может применить дискретное косинусное преобразование (DCT), направленное преобразование или концептуально подобное преобразование к остаточному видеоблоку, связанному с TU.Conversion module 104 may create one or more transform coefficient blocks for each TU of a CU by applying one or more transforms to the residual video block associated with the indicated TU. Each block of transform coefficients may be a 2D matrix of transform coefficients. Conversion module 104 may apply various transformations to the residual video block associated with the TU. For example, transform module 104 may apply a discrete cosine transform (DCT), directional transform, or conceptually similar transform to a residual video block associated with a TU.

После создания модулем 104 преобразования блока коэффициентов преобразования, связанного с TU, модуль 106 квантования может выполнить квантование коэффициентов преобразования в блоке коэффициентов преобразования. Модуль 106 квантования может выполнить квантование блока коэффициентов преобразования, связанного с TU блока CU, на основе значения QP, связанного с данным блоком CU.After the transform unit 104 creates a transform coefficient block associated with the TU, the quantization module 106 may quantize the transform coefficients in the transform coefficient block. The quantization unit 106 may quantize the transform coefficient block associated with the TU of the CU, based on the QP value associated with this CU.

Видеокодер 20 может связать значение QP с блоком CU различными путями. Например, видеокодер 20 может выполнить анализ «расход бит-искажение» на древовидном блоке, связанном с CU. При анализе «расход бит-искажение» видеокодер 20 может создать множество кодированных представлений древовидного блока путем многократного выполнения операции кодирования на древовидном блоке. Видеокодер 20 может связать разные значения QP с блоком CU при создании разных кодированных представлений данного древовидного блока. Видеокодер 20 может просигнализировать о том, что данное значение QP связано с CU, когда данное значение QP связано с CU в кодированном представлении древовидного блока, имеющего минимальный показатель «расход бит-искажение».Video encoder 20 may associate a QP value with a CU in various ways. For example, video encoder 20 may perform bit-distortion consumption analysis on a tree block associated with a CU. In a bit-distortion flow analysis, video encoder 20 can create a plurality of encoded representations of the tree block by repeatedly performing the encoding operation on the tree block. Video encoder 20 may associate different QP values with a CU when creating different coded representations of a given tree block. Video encoder 20 may signal that a given QP value is associated with a CU when the given QP value is associated with a CU in the encoded representation of a tree block having a minimum bit-distortion rate.

Модуль 108 обратного квантования и модуль 110 обратного преобразования могут применить обратное квантование и обратное преобразование к блоку коэффициентов преобразования соответственно для восстановления остаточного видеоблока из блока коэффициентов преобразования. Модуль 112 восстановления может добавить восстановленный остаточный видеоблок к соответствующим отсчетам из одного или более предсказанных видеоблоков, созданных модулем 100 предсказания, для создания восстановленного видеоблока, связанного с TU. Восстановив таким путем видеоблоки для каждого TU блока CU, видеокодер 20 может восстановить видеоблок блока CU.The inverse quantization module 108 and the inverse transform module 110 may apply inverse quantization and inverse transform to the block of transform coefficients, respectively, to restore the residual video block from the block of transform coefficients. Recovery module 112 may add the reconstructed residual video block to corresponding samples from one or more predicted video blocks created by prediction module 100 to create a reconstructed video block associated with a TU. By reconstructing in this way the video blocks for each TU of the CU, video encoder 20 may recover the video block of the CU.

После того, как модуль 112 восстановления восстановит видеоблок блока CU, модуль 13 фильтров может выполнить операцию деблокирования для подавления артефактов блокирования в видеоблоке, связанном с данным блоком CU. После выполнения одной или более операций деблокирования модуль 113 фильтров может запомнить восстановленный видеоблок блока CU в буфере 114 декодированных изображений. Модуль 122 оценки движения и модуль 124 компенсации движения могут использовать опорное изображение, содержащее восстановленный видеоблок, для выполнения межкадрового предсказания на блоках PU последующих изображений. Вдобавок, модуль 126 внутрикадрового предсказания может использовать восстановленные видеоблоки в буфере 114 декодированных изображений для выполнения внутрикадрового предсказания на других блоках PU в том же изображении, что и CU.After the recovery unit 112 restores the video block of the CU, the filter module 13 may perform a release operation to suppress blocking artifacts in the video block associated with the CU. After performing one or more unlocking operations, the filter module 113 may store the restored video block of the CU in the decoded image buffer 114. Motion estimation module 122 and motion compensation module 124 may use a reference image containing the reconstructed video block to perform inter-frame prediction on subsequent image blocks PU. In addition, intra prediction module 126 may use the reconstructed video blocks in decoded image buffer 114 to perform intra prediction on other PUs in the same image as the CU.

Модуль 116 энтропийного кодирования может принимать данные от других функциональных компонент видеокодера 20. Например, модуль 116 энтропийного кодирования может принимать блоки коэффициентов преобразования от модуля 106 квантования и может принимать синтаксические элементы от модуля 100 предсказания. Получив указанные данные, модуль 116 энтропийного кодирования может выполнить одну или более операций энтропийного кодирования для создания кодированных данных. Например, видеокодер 20 может выполнить операцию контекстно-зависимого адаптивного кодирования с переменной длиной слова (CAVLC), операцию контекстно-адаптивного бинарного арифметического кодирования (CABAC), операцию кодирования с преобразованием слов переменной длины (V2V), операцию синтаксически ориентированного адаптивного бинарного арифметического кодирования (SBAC), операцию вероятностного энтропийного кодирования с интервальным разбиением (PIPE), или операцию энтропийного кодирования другого типа на этих данных. Модуль 116 энтропийного кодирования может вывести битовый поток, который включает в себя данные, закодированные с использованием энтропийного кодирования.Entropy encoding module 116 may receive data from other functional components of video encoder 20. For example, entropy encoding module 116 may receive blocks of transform coefficients from quantization module 106 and may receive syntax elements from prediction module 100. Upon receipt of the data, entropy encoding unit 116 may perform one or more entropy encoding operations to generate encoded data. For example, video encoder 20 may perform a context-dependent adaptive variable-length coding (CAVLC) operation, a context-adaptive binary arithmetic coding (CABAC) operation, a variable-length word encoding (V2V) coding operation, a syntactically oriented adaptive binary arithmetic coding ( SBAC), an interval division probabilistic entropy coding (PIPE) operation, or another type of entropy coding operation on this data. Entropy encoding unit 116 may output a bitstream that includes data encoded using entropy encoding.

В качестве части выполнения операции энтропийного кодирования на данных модуль 116 энтропийного кодирования может выбрать контекстную модель. Если модуль 116 энтропийного кодирования выполняет операцию CABAC, то эта контекстная модель может указать оценки вероятностей того, что конкретные бины имеют конкретные значения. В контексте алгоритма CABAC термин «бин» используют для обращения к биту бинарной версии синтаксического элемента.As part of performing an entropy encoding operation on data, entropy encoding module 116 may select a context model. If entropy encoding unit 116 performs the CABAC operation, then this context model may indicate estimates of the probabilities that particular beans have specific meanings. In the context of the CABAC algorithm, the term “bean” is used to refer to a bit of a binary version of a syntax element.

Видеокодер 20 может создать блок NAL кодированного слайса для каждого слайса текущего изображения. Блок NAL кодированного слайса может включать в себя заголовок слайса и данные слайса. Данные слайса могут содержать множество сегментов. Каждый из этих сегментов включает в себя кодированные древовидные блоки, связанные с другим разделом изображения. Видеокодер 20 может заполнить сегменты незначащей информацией так, что каждый сегмент будет начинаться с границы байта в данных слайса. Например, сегменты в блоке NAL кодированного слайса могут включать в себя заданный сегмент. В этом примере видеокодер 20 может создать блок NAL кодированного слайса по меньшей мере частично посредством выполнения операции заполнения незначащей информацией, в которой к данному сегменту подсоединяются биты, если следующий древовидный блок находится внутри текущего слайса и связан с разделом изображения, отличным от заданного сегмента.Video encoder 20 may create a NAL block of the encoded slice for each slice of the current image. An encoded slice NAL unit may include a slice header and slice data. Slice data can contain many segments. Each of these segments includes coded treeblocks associated with another section of the image. Video encoder 20 can fill segments with insignificant information so that each segment begins at the byte boundary in the slice data. For example, segments in a NAL unit of an encoded slice may include a given segment. In this example, video encoder 20 can create a NAL block of an encoded slice at least partially by performing an insignificant fill operation in which bits are connected to a given segment if the next tree block is inside the current slice and is associated with an image section other than the given segment.

В некоторых примерах видеокодер 20 может создать заголовок слайса блока NAL кодированного слайса, с тем чтобы заголовок слайса указывал точки ввода для сегментов в данных слайса блока NAL кодированного слайса. Эти точки ввода могут указывать позиции в данных слайса указанных сегментов. Например, эти точки ввода могут указывать байтовые смещения сегментов. В этом примере байтовые смещения могут относиться к первому биту блока NAL кодированного слайса, первому биту данных слайса или другому биту в блоке NAL кодированного слайса. В другом примере указанные точки ввода могут указывать количество бит или байт в каждом из сегментов. В некоторых примерах заголовок слайса не указывает точку ввода для первого сегмента в данных слайса.In some examples, video encoder 20 may create a slice header of a coded slice NAL unit so that the slice header indicates entry points for segments in the slice data of a coded slice NAL unit. These entry points may indicate positions in the slice data of the indicated segments. For example, these entry points may indicate byte offsets of segments. In this example, byte offsets may refer to the first bit of the encoded slice NAL unit, the first bit of the slice data, or another bit in the NAL unit of the encoded slice. In another example, these input points may indicate the number of bits or bytes in each of the segments. In some examples, the slice header does not indicate the insertion point for the first segment in the slice data.

В некоторых примерах видеокодер 20 может определить, имеет ли флаг первое значение (например, 1). Если флаг имеет это первое значение, то видеокодер 20 может заполнить один или более сегментов незначащей информацией так, чтобы каждый сегмент начинался с границы байта. Когда флаг имеет второе значение (например, 0), видеокодер 20 не заполняет сегменты незначащей информацией. В результате эти сегменты могут начинаться либо не начинаться с позиции, выровненной по байту. В указанных примерах набор параметров последовательности, набор параметров изображения, набор параметров адаптации или заголовок слайса могут включать в себя указанный флаг. Таким образом, в некоторых примерах видеокодер 20 может создать набор параметров, связанный с текущим изображением, где этот набор параметров включает в себя флаг. Когда этот флаг имеет первое значение, то один или более сегментов заполнены незначащей информацией, так что эти сегменты начинаются с границ байтов. Когда этот флаг имеет второе значение, эти сегменты могут начинаться, а могут и не начинаться с границ байтов.In some examples, video encoder 20 may determine if the flag has a first value (e.g., 1). If the flag has this first value, then video encoder 20 may fill one or more segments with insignificant information so that each segment begins with a byte boundary. When the flag has a second value (for example, 0), video encoder 20 does not populate the segments with insignificant information. As a result, these segments may or may not start from a byte aligned position. In these examples, a set of sequence parameters, a set of image parameters, a set of adaptation parameters or a slice header may include a flag. Thus, in some examples, video encoder 20 may create a parameter set associated with the current image, where this parameter set includes a flag. When this flag has the first value, one or more segments are filled with insignificant information, so that these segments begin with byte boundaries. When this flag has a second meaning, these segments may or may not begin with byte boundaries.

Кроме того, в некоторых примерах видеокодер 20 может разбить текущее изображение на множество тайлов. Если видеокодер 20 допускает в изображении предсказание через границы тайла (то есть, когда два или более тайлов зависят друг от друга), видеокодер 20 не выполняет указанное заполнение сегментов. В результате эти сегменты могут начинаться, а могут и не начинаться с позиции, выровненной по байту. Однако, если видеокодер 20 не допускает предсказание через границы тайла, он может заполнить один или более сегментов незначащей информацией таким образом, что каждый сегмент будет начинаться с границы байта. Таким образом, видеокодер 20 может создать блок NAL кодированного слайса по меньшей мере частично путем выполнения операции заполнения незначащей информацией, которая обеспечивает нахождение начала каждого из сегментов на границе байта, но только после определения того, что упомянутые тайлы не зависят друг от друга.In addition, in some examples, video encoder 20 may split the current image into multiple tiles. If video encoder 20 allows prediction over tile boundaries in the image (that is, when two or more tiles are dependent on each other), video encoder 20 does not perform the indicated segment filling. As a result, these segments may or may not start from a byte aligned position. However, if video encoder 20 does not allow prediction across tile boundaries, it can fill one or more segments with insignificant information so that each segment begins with a byte boundary. Thus, video encoder 20 can create a NAL block of the encoded slice at least partially by performing an operation for filling insignificant information, which ensures that the beginning of each of the segments is on the byte boundary, but only after determining that the said tiles are independent of each other.

На Фиг. 3 представлена блок-схема, иллюстрирующая примерный видеодекодер 30, сконфигурированный для реализации раскрытых здесь методик. Фиг. 3 приведена только для разъяснения и не ограничивает указанные методики, широко представленные в качестве примеров и подробно описанные в настоящем изобретении. Для удобства разъяснения видеодекодер 30 описывается здесь в контексте кодирования согласно стандарту HEVC. Однако раскрытые здесь методики можно применить к другим стандартам или способам кодирования.In FIG. 3 is a flowchart illustrating an example video decoder 30 configured to implement the techniques disclosed herein. FIG. 3 is provided for clarification only and does not limit these techniques, which are broadly presented as examples and described in detail in the present invention. For convenience of explanation, video decoder 30 is described herein in the context of encoding according to the HEVC standard. However, the techniques disclosed herein may be applied to other coding standards or methods.

В примере по Фиг. 3 видеодекодер 30 включает в себя множество функциональных компонент. Эти функциональные компоненты видеодекодера 30 включают в себя модуль 150 энтропийного декодирования, модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 восстановления, модуль 159 фильтров и буфер 160 декодированных изображений. Модуль 152 предсказания включает в себя модуль 162 компенсации движения и модуль 164 внутрикадрового предсказания. В некоторых примерах видеодекодер 30 может выполнить прогон декодирования, который в общем случае является обратным прогону кодирования, описанному применительно к видеокодеру 20 по Фиг. 2. В других примерах видеодекодер 30 может включать в себя больше или меньше функциональных компонент либо другие функциональные компоненты.In the example of FIG. 3, video decoder 30 includes many functional components. These functional components of video decoder 30 include entropy decoding module 150, prediction module 152, inverse quantization module 154, inverse transform module 156, reconstruction module 158, filter module 159, and decoded image buffer 160. Prediction module 152 includes motion compensation module 162 and intra-frame prediction module 164. In some examples, video decoder 30 may perform a decoding run, which is generally the opposite of the encoding run described with respect to video encoder 20 of FIG. 2. In other examples, video decoder 30 may include more or less functional components or other functional components.

Видеодекодер 30 может принимать битовый поток, содержащий кодированные видеоданные. Этот битовый поток может включать в себя множество синтаксических элементов. При приеме видеодекодером 30 битового потока модуль 150 энтропийного декодирования может выполнить операцию синтаксического анализа на этом потоке. В результате выполнения операции синтаксического анализа на битовом потоке модуль 150 энтропийного декодирования может извлечь синтаксические элементы из битового потока. В качестве части выполнения операции синтаксического анализа модуль 150 энтропийного декодирования может выполнить энтропийное декодирование синтаксических элементов, кодированных с использованием энтропийного кодирования. Модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 восстановления и модуль 159 фильтров могут выполнить операцию восстановления, которая создает декодированные видеоданные на основе синтаксических элементов, извлеченных из битового потока.Video decoder 30 may receive a bitstream containing encoded video data. This bitstream may include many syntax elements. When the video decoder 30 receives the bit stream, the entropy decoding unit 150 may perform a parsing operation on that stream. As a result of the parsing operation on the bitstream, entropy decoding module 150 can extract syntax elements from the bitstream. As part of the parsing operation, entropy decoding unit 150 may perform entropy decoding of syntax elements encoded using entropy encoding. Prediction module 152, inverse quantization module 154, inverse transform module 156, reconstruction module 158, and filter module 159 may perform a reconstruction operation that creates decoded video data based on syntax elements extracted from the bitstream.

Как обсуждалось выше, битовый поток может содержать ряд блоков 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, entropy decoding module 150 may perform parsing operations that provide extraction and entropy decoding of sequence parameter sets from sequence parameter NAL blocks, image parameter sets from NAL blocks of image parameter set, image parameter sets, SEI data from blocks SEI NAL etc.

Вдобавок, блоки 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, video decoder 30 may perform parsing operations to extract and entropy decode the encoded slices from the NAL blocks of the encoded slice. Each of these coded slices may include a slice header and slice data. The slice header may contain syntax elements that belong to the slice. These syntax elements in the header of the slice may include a syntax element identifying a set of image parameters associated with the image that contains the given slice.

Данные блока 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, video decoder 30 is able to easily distribute different segments across different decoding streams by using memory byte addressing. Different decoding streams can provide parsing of the encoded tree blocks of segments and reconstruct in parallel the video data associated with the corresponding tree blocks.

В качестве части извлечения данных слайса из блоков NAL кодированного слайса модуль 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые обеспечивают извлечение синтаксических элементов из кодированных блоков CU. Извлеченные синтаксические элементы могут включать в себя синтаксические элементы, связанные с блоками коэффициентов преобразования. Затем модуль 150 энтропийного декодирования может выполнить операции декодирования CABAC на некоторых синтаксических элементах.As part of extracting the slice data from the NAL units of the encoded slice, the entropy decoding unit 150 may perform parsing operations that extract syntax elements from the encoded CUs. The extracted syntax elements may include syntax elements associated with blocks of transform coefficients. Then, entropy decoding unit 150 may perform CABAC decoding operations on some syntax elements.

После выполнения модулем 150 энтропийного декодирования операции синтаксического анализа на неразделенном блоке CU видеодекодер 30 может выполнить операцию восстановления на неразделенном блоке CU. Для выполнения операции восстановления на неразделенном блоке CU видеодекодер 30 может выполнить операцию восстановления на каждом блоке TU блока CU. Выполнив операцию восстановления для каждого TU блока CU, видеодекодер 30 может восстановить остаточный видеоблок, связанный с данным CU.After the entropy decoding unit 150 performs parsing operations on the non-shared unit CU, video decoder 30 may perform a restore operation on the non-shared unit CU. To perform a restore operation on an unshared CU, video decoder 30 may perform a restore operation on each TU of a CU. By performing a restore operation for each TU of the CU, video decoder 30 may recover the residual video block associated with this CU.

В качестве части выполнения операции восстановления на блоке TU модуль 154 обратного квантования может выполнить обратное квантование, то есть «деквантование», блока коэффициентов преобразования, связанно с данным TU. Модуль 154 обратного квантования может выполнить обратное квантование блока коэффициентов преобразования, используя процессы, аналогичные процессам обратного квантования, предложенным для стандарта HEVC или определенным стандартом декодирования H.264. Модуль 154 обратного квантования может использовать параметр QP квантования, вычисленный видеокодером 20, для CU блока коэффициентов преобразования, чтобы определить степень квантования и аналогичным образом степень обратного квантования для модуля 154 обратного квантования.As part of performing the restore operation on the TU, the inverse quantization unit 154 may inverse quantize, i.e., “dequantize,” the transform coefficient block associated with this TU. The inverse quantization module 154 may inverse quantize the block of transform coefficients using processes similar to the inverse quantization processes proposed for the HEVC standard or the defined H.264 decoding standard. The inverse quantization unit 154 may use the quantization parameter QP computed by the video encoder 20 for the CU of the transform coefficient block to determine the degree of quantization and, likewise, the degree of inverse quantization for the inverse quantization unit 154.

После выполнения модулем 154 обратного квантования операции обратного квантования для блока коэффициентов преобразования модуль 156 обратного преобразования может создать остаточный видеоблок для TU, связанного с блоком коэффициентов преобразования. Модуль 156 обратного преобразования может применить обратное преобразование к указанному блоку коэффициентов преобразования, чтобы создать остаточный видеоблок для TU. Например, модуль 156 обратного преобразования может применить обратное преобразование DCT, обратное целочисленное преобразование, обратное преобразование Кархунена-Леве (KLT), обратное поворотное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.After the inverse quantization module 154 performs the inverse quantization operation for the transform coefficient block, the inverse transform module 156 may create a residual video block for the TU associated with the transform coefficient block. The inverse transform module 156 may apply the inverse transform to the specified block of transform coefficients to create a residual video block for the TU. For example, inverse transform module 156 may apply the inverse DCT transform, the inverse integer transform, the inverse Karhunen-Leve transform (KLT), the inverse rotational transform, the inverse directional transform, or other inverse transform to a block of transform coefficients.

В некоторых примерах модуль 156 обратного преобразования может определить обратное преобразование для применения к блоку коэффициентов преобразования на основе сигнализации со стороны видеокодера 20. В указанных примерах модуль 156 обратного преобразования может определить такое обратное преобразование на основе полученного в результате сигнализации преобразования в корневом узле квадродерева для древовидного блока, связанного с данным блоком коэффициентов преобразования. В других примерах модуль 156 обратного преобразования может определить обратное преобразование, исходя из одной или более характеристик кодирования, таких как размер блока, режим кодирования или т.п. В некоторых примерах модуль 156 обратного преобразования может применить каскадное обратное преобразование.In some examples, the inverse transform module 156 can determine the inverse transform to apply to the block of transform coefficients based on the signaling side of the video encoder 20. In these examples, the inverse transform module 156 can determine such an inverse transform based on the resulting transform signal in the root node of the quad tree for the tree block associated with this block of conversion factors. In other examples, the inverse transform module 156 may determine the inverse transform based on one or more encoding characteristics, such as block size, encoding mode, or the like. In some examples, inverse transform module 156 may apply cascaded inverse transform.

В некоторых примерах модуль 162 компенсации движения может уточнить предсказанный видеоблок блока PU путем выполнения интерполяции на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, используемые для компенсации движения с точностью до долей отсчета, могут быть включены в упомянутые синтаксические элементы. Модуль 162 компенсации движения может использовать те же интерполяционные фильтры, которые использует видеокодер 20 во время создания предсказанного видеоблока блока PU, для вычисления интерполированных значений для дробных отсчетов опорного блока. Модуль 162 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20 согласно принятой синтаксической информации, и использовать эти интерполяционные фильтры для создания предсказанного видеоблока.In some examples, motion compensation module 162 may refine the predicted video block of the PU by performing interpolation based on interpolation filters. Identifiers for interpolation filters used to compensate for motion to a fraction of the reference can be included in the syntax elements mentioned. Motion compensation module 162 can use the same interpolation filters that video encoder 20 uses when creating the predicted video block of the PU block to calculate the interpolated values for the fractional samples of the reference block. Motion compensation module 162 can determine the interpolation filters used by video encoder 20 according to the received syntax information and use these interpolation filters to create a predicted video block.

Если блок PU кодирован с использованием внутрикадрового предсказания, то модуль 164 внутрикадрового предсказания может выполнить внутрикадровое предсказание для создания предсказанного видеоблока для данного PU. Например, модуль 164 внутрикадрового предсказания может определить режим внутрикадрового предсказания для данного PU на основе синтаксических элементов в битовом потоке. Битовый поток может включать в себя синтаксические элементы, которые может использовать модуль 164 внутрикадрового предсказания для определения режима внутрикадрового предсказания для данного PU.If the PU is encoded using intra-frame prediction, then intra-frame prediction unit 164 may perform intra-frame prediction to create a predicted video block for a given PU. For example, intra prediction module 164 may determine the intra prediction mode for a given PU based on the syntax elements in the bitstream. The bitstream may include syntax elements that the intra prediction module 164 may use to determine the intra prediction mode for a given PU.

В некоторых случаях указанные синтаксические элементы могут указывать, что модуль 164 внутрикадрового предсказания должен использовать режим внутрикадрового предсказания другого PU, чтобы определить режим внутрикадрового предсказания текущего PU. Например, существует вероятность того, что режим внутрикадрового предсказания для текущего PU совпадает с режимом внутрикадрового предсказания для соседнего PU. Другими словами, режим внутрикадрового предсказания соседнего PU может являться наиболее вероятным для текущего PU. Следовательно, в этом примере битовый поток может включать в себя небольшой синтаксический элемент, который указывает, что режим внутрикадрового предсказания для данного PU совпадает с режимом внутрикадрового предсказания соседнего PU. Тогда модуль 164 внутрикадрового предсказания может использовать данный режим внутрикадрового предсказания для создания данных предсказания (например, предсказанных отсчетов) для данного PU на основе видеоблоков для соседних в пространстве блоков PU.In some cases, these syntax elements may indicate that the intra prediction unit 164 should use the intra prediction mode of another PU to determine the intra prediction mode of the current PU. For example, there is a possibility that the intra prediction mode for the current PU is the same as the intra prediction mode for the neighboring PU. In other words, the intra-prediction mode of the neighboring PU may be most likely for the current PU. Therefore, in this example, the bitstream may include a small syntax element that indicates that the intra-prediction mode for a given PU is the same as the intra-prediction mode of a neighboring PU. Then, the intra prediction module 164 may use this intra prediction mode to create prediction data (e.g., predicted samples) for a given PU based on video blocks for spatially adjacent PU blocks.

Модуль 158 восстановления может использовать остаточные видеоблоки, связанные с блоками TU блока CU, и предсказанные видеоблоки блоков PU блока CU, то есть, либо данные внутрикадрового предсказания, либо данные межкадрового предсказания (в зависимости от того, что применяется), для восстановления видеоблока для CU. Таким образом, видеодекодер 30 может создать предсказанный видеоблок и остаточный видеоблок на основе синтаксических элементов в битовом потоке и может создать видеоблок на основе предсказанного видеоблока и остаточного видеоблока.The recovery unit 158 may use the residual video blocks associated with the TUs of the CU, and the predicted video blocks of the PUs of the CU, that is, either intra prediction data or inter prediction data (depending on what is used), to reconstruct the video block for CU . Thus, video decoder 30 can create a predicted video block and a residual video block based on syntax elements in a bit stream and can create a video block based on a predicted video block and a residual video block.

После восстановления модулем 158 восстановления видеоблока блока CU модуль 159 фильтров может выполнить операцию деблокирования для подавления артефактов блокирования, связанных с данным CU. После выполнения модулем 159 операции деблокирования для подавления артефактов блокирования, связанных с блоком CU, видеодекодер 30 может запомнить этот видеоблок блока CU в буфере 160 декодированных изображений. Буфер 160 декодированных изображений может обеспечить опорные изображения для последующей компенсации движения, внутрикадрового предсказания и представления на устройстве отображения, таком как устройство 32 отображения на Фиг. 1. Например, видеодекодер 30 может выполнять операции внутрикадрового предсказания или межкадрового предсказания на блоках PU других блоков CU на основе видеоблоков в буфере 160 декодированных изображений.After restoration by the video block recovery unit 158 of the CU, the filter module 159 may perform a release operation to suppress blocking artifacts associated with the CU. After module 159 performs a release operation to suppress blocking artifacts associated with the CU, video decoder 30 may store the video block of the CU in the decoded image buffer 160. The decoded image buffer 160 may provide reference images for subsequent motion compensation, intra prediction, and presentation on a display device, such as a display device 32 in FIG. 1. For example, video decoder 30 may perform intra-frame prediction or inter-frame prediction operations on PUs of other CUs based on video blocks in decoded image buffer 160.

На Фиг. 4 представлена блок-схема, иллюстрирующая примерную операцию 200 для создания данных для слайса. Операция 200 может быть выполнена видеокодером, таким как видеокодер 20 (фигуры 1 и 2). Блок-схема на Фиг. 4 является просто одним примером. В других примерах этой операции возможно создание данных слайса другими путями.In FIG. 4 is a flowchart illustrating an example operation 200 for creating data for a slice. Operation 200 may be performed by a video encoder, such as video encoder 20 (figures 1 and 2). The block diagram of FIG. 4 is just one example. In other examples of this operation, it is possible to create slice data in other ways.

В начале операции 200 видеокодер может инициализировать адрес древовидного блока, который идентифицирует начальный древовидный блок текущего слайса (202). Текущим слайсом может быть слайс, который в настоящее время кодируется видеокодером. Начальным древовидным блоком текущего слайса может быть первый древовидный блок, связанный с текущим слайсом, согласно порядку кодирования древовидных блоков в текущем изображении. Для упрощения объяснения здесь речь идет о древовидном блоке, идентифицированном по адресу древовидного блока в качестве текущего древовидного блока.At the beginning of operation 200, the video encoder may initialize the address of the tree block, which identifies the initial tree block of the current slice (202). The current slice may be a slice that is currently encoded by a video encoder. The initial treeblock of the current slice may be the first treeblock associated with the current slice according to the coding order of the treeblocks in the current image. To simplify the explanation, here we are talking about a tree block identified by the address of the tree block as the current tree block.

Видеокодер может подсоединить синтаксические элементы для текущего древовидного блока к данным слайса блока 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 operation 200 because it added all the necessary syntax elements to the slice data.

Видеокодер может определить, имеются ли еще данные в текущем слайсе, различными путями. Например, видеокодер может активировать функцию «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 operation 200 because it can attach all the syntax elements of the current slice to the slice data.

На Фиг. 5 представлена блок-схема, иллюстрирующая примерную операцию 250 для декодирования блока NAL кодированного слайса. Видеодекодер, такой как видеодекодер 30 (фиг. 1 и 3) может выполнять операцию 250. Показанное на Фиг. 5, является просто одним из примеров. В других примерах для декодирования блоков NAL кодированного слайса могут использоваться другие операции.In FIG. 5 is a flowchart illustrating an example operation 250 for decoding a NAL unit of an encoded slice. A video decoder such as video decoder 30 (FIGS. 1 and 3) may perform operation 250. As shown in FIG. 5 is just one example. In other examples, other operations may be used to decode the NAL blocks of the encoded slice.

В примере по Фиг. 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 row 300A of tree blocks. In parallel, coding of tree blocks of other streams in rows 300B, 300C and 300D of tree blocks can be performed. In the example of FIG. 6, in the first stream, the coding of the tree block 302A is performed, in the second stream, the coding of the tree block 302B is performed, in the third stream, the coding of the tree block 302C is performed and in the fourth stream, the coding of the tree block 302D is performed. This description can be attributed to treeblocks 302A, 302B, 302C, and 302D, designated together as “current treeblocks 302”. Since the video encoder can start encoding a row of tree blocks after encoding more than two tree blocks of a row located directly above this row, the current tree blocks 302 are placed horizontally from each other to the width of two tree blocks.

В примере по Фиг. 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 image 350 that is partitioned into multiple tiles 352A, 352B, and 352C. Each square white block in image 350 represents a video block associated with a tree block. Bold vertical dashed lines indicate approximate vertical borders of tiles. Bold gray lines indicate the approximate border of the slice.

Числа в видеоблоках указывают позиции соответствующих древовидных блоков (блоков 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 image 350. As shown in the example of FIG. 7, each of the treeblocks in the leftmost tile 352A appears in the order of coding of the treeblocks before any treeblock in the middle tile 352B. Each of the tree blocks in the middle tile 352B appears in the order of coding of the tree blocks in front of any tree block in the far right tile 352C. Within each tile 352A, 352B, and 352C, treeblocks are encoded according to the raster scan order.

Видеокодер может создать два блока 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 image 350. The first NAL block of the encoded slice may be associated with the left slice of the image 350. The first NAL block of the encoded slice may include encoded representations of tree blocks 1-23. The slice data of the first NAL block of the encoded slice may include two segments. The first segment may include encoded representations of tree blocks 1-15. The second segment may include encoded representations of the tree blocks 16-30. According to the techniques disclosed herein, the first segment may be filled with insignificant information providing the beginning of the second segment from the byte boundary.

Второй блок 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 image 350. The second NAL block of the encoded slice may include encoded representations of the tree blocks 24-45. The slice data of the second NAL block of the encoded slice may include two segments. The first segment may include encoded representations of the tree blocks 24-30. The second segment may include encoded representations of treeblocks 31-45. The first segment can be filled with insignificant information so that the second segment starts from the byte boundary.

На Фиг. 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)

1. Способ кодирования видеоданных, причем способ содержит:
разделение изображения на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков указанного изображения; и
создание блока уровня абстракции сети (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.
2. Способ по п. 1, в котором создание блока NAL кодированного слайса содержит создание заголовка слайса, который указывает точки ввода одного или более указанных сегментов.2. The method of claim 1, wherein creating the NAL unit of the encoded slice comprises creating a slice header that indicates the entry points of one or more of said segments. 3. Способ по п. 2, в котором точки ввода для указанных сегментов указывают байтовые смещения сегментов.3. The method of claim 2, wherein the input points for said segments indicate byte offsets of the segments. 4. Способ по п. 1, в котором разделами изображения являются тайлы или волны волновой параллельной обработки (WPP).4. The method of claim 1, wherein the image sections are tiles or waves of wave parallel processing (WPP). 5. Способ по п. 1, дополнительно содержащий создание набора параметров, связанного с указанным изображением, при этом набор параметров включает в себя флаг, имеющий первое значение, указывающее, что один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта, и
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут не начинаться с границ байта.
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.
6. Способ по п. 1,
в котором указанные разделы изображения представляют собой тайлы; и
в котором создание блока 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.
7. Способ декодирования видеоданных, причем способ содержит:
запоминание блока уровня абстракции сети (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.
8. Способ по п. 7, в котором блок NAL кодированного слайса содержит заголовок слайса, который указывает точки ввода для одного или более указанных сегментов.8. The method of claim 7, wherein the NAL unit of the encoded slice comprises a slice header that indicates entry points for one or more of said segments. 9. Способ по п. 8, в котором точки ввода для указанных сегментов указывают байтовые смещения сегментов.9. The method of claim 8, wherein the input points for said segments indicate byte offsets of the segments. 10. Способ по п. 7, в котором разделами изображения являются тайлы или волны волновой параллельной обработки (WPP).10. The method of claim 7, wherein the image sections are tiles or waves of wave parallel processing (WPP). 11. Способ по п. 7, дополнительно содержащий запоминание набора параметров, связанного с указанным изображением, при этом набор параметров включает в себя флаг, имеющий первое значение, указывающее, что один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта, и
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут и не начинаться с границ байтов.
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. Способ по п. 7,
в котором указанные разделы изображения представляют собой тайлы; и
в котором один или более указанных сегментов заполняют незначащей информацией, так что указанные сегменты начинаются с границ байтов, когда указанные тайлы не зависят друг от друга.
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.
13. Способ по п. 7, в котором декодирование кодированных представлений указанных древовидных блоков содержит параллельное декодирование кодированных представлений древовидных блоков в двух или более указанных сегментах.13. The method of claim 7, wherein decoding the encoded representations of said treeblocks comprises parallel decoding of encoded representations of the treeblocks in two or more of said segments. 14. Устройство видеокодирования, которое кодирует видеоданные, причем устройство видеокодирования содержит:
носитель для хранения данных, сконфигурированный для хранения видеоданных; и
один или более процессоров, сконфигурированных для:
разделения изображения видеоданных на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения; и
создания блока уровня абстракции сети (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.
15. Устройство видеокодирования по п. 14, в котором один или более процессоров сконфигурированы для создания блока NAL кодированного слайса, так что блок NAL кодированного слайса включает в себя заголовок слайса, который указывает точки ввода для одного или более указанных сегментов.15. The video coding apparatus of claim 14, wherein the one or more processors are configured to create a coded slice NAL unit, so that the coded slice NAL unit includes a slice header that indicates entry points for one or more of said segments. 16. Устройство видеокодирования по п. 15, в котором точки ввода для указанных сегментов указывают байтовые смещения сегментов.16. The video coding apparatus of claim 15, wherein the input points for said segments indicate byte offsets of the segments. 17. Устройство видеокодирования по п. 14, в котором разделами изображения являются тайлы или волны волновой параллельной обработки (WPP).17. The video coding apparatus of claim 14, wherein the image sections are tiles or wave parallel processing (WPP) waves. 18. Устройство видеокодирования по п. 14, в котором один или более процессоров сконфигурированы для создания набора параметров, связанного с указанным изображением, при этом набор параметров включает в себя флаг, имеющий первое значение, указывающее, что один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта, и
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут не начинаться с границ байта.
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. Устройство видеокодирования по п. 14,
в котором указанные разделы изображения представляют собой тайлы; и
в котором один или более процессоров сконфигурированы для выполнения операции заполнения незначащей информацией, которая обеспечивает, что указанные сегменты начинаются на границах байта только после определения того, что указанные тайлы не зависят друг от друга.
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.
20. Устройство видеокодирования по п. 14, при этом устройство видеокодирования представляет собой мобильное вычислительное устройство.20. The video encoding device according to claim 14, wherein the video encoding device is a mobile computing device. 21. Устройство видеодекодирования, которое декодирует видеоданные, причем устройство видеодекодирования содержит:
память, в которой хранится блок уровня абстракции сети (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.
22. Устройство видеодекодирования по п. 21, в котором блок NAL кодированного слайса содержит заголовок слайса, который указывает точки ввода для одного или более указанных сегментов.22. The video decoding apparatus of claim 21, wherein the NAL unit of the encoded slice comprises a slice header that indicates entry points for one or more of said segments. 23. Устройство видеодекодирования по п. 22, в котором точки ввода для указанных сегментов указывают байтовые смещения сегментов.23. The video decoding apparatus of claim 22, wherein the input points for said segments indicate byte offsets of the segments. 24. Устройство видеодекодирования по п. 21, в котором разделами изображения являются тайлы или волны волновой параллельной обработки (WPP).24. The video decoding apparatus of claim 21, wherein the image sections are tiles or wave parallel processing (WPP) waves. 25. Устройство видеодекодирования по п. 21, в котором в памяти хранится набор параметров, связанный с указанным изображением, при этом набор параметров включает в себя флаг, имеющий первое значение, указывающее, что один или более из указанных сегментов заполнены незначащей информацией, так что каждый из указанных сегментов начинается с границы байта, и
при этом в том случае, когда флаг имеет второе значение, указанные сегменты могут начинаться или могут и не начинаться с границ байта.
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.
26. Устройство видеодекодирования по п. 21, при этом устройство видеодекодирования представляет собой мобильное вычислительное устройство.26. The video decoding device according to claim 21, wherein the video decoding device is a mobile computing device. 27. Устройство видеодекодирования по п. 21, в котором один или более процессоров сконфигурированы для параллельного декодирования кодированных представлений указанных древовидных блоков в двух или более сегментах.27. The video decoding device according to claim 21, in which one or more processors are configured to parallelly decode the encoded representations of these tree blocks in two or more segments. 28. Постоянный машиночитаемый носитель информации, который хранит команды, которые при их выполнении одним или более процессорами конфигурируют устройство видеокодирования для:
разделения изображения на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения; и
создания блока уровня абстракции сети (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.
29. Машиночитаемый носитель информации, который хранит команды, которые при их выполнении одним или более процессорами конфигурируют устройство видеодекодирования для
запоминания блока уровня абстракции сети (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.
30. Устройство видеокодирования, которое кодирует видеоданные, причем устройство видеокодирования содержит:
средство для разделения изображения на множество разделов изображения, при этом изображение содержит множество древовидных блоков, причем разделы изображения связаны с неперекрывающимися поднаборами древовидных блоков данного изображения; и
средство для создания блока уровня абстракции сети (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.
31. Устройство видеодекодирования, которое декодирует видеоданные, причем устройство видеодекодирования содержит:
средство для хранения блока уровня абстракции сети (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.
RU2014122537/08A 2011-11-04 2012-11-01 Padding of segments in coded slice network abstraction layer units RU2575397C2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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