RU2574280C2 - Selection of common candidates of mode of convergence and adaptive motion vector prediction mode - Google Patents

Selection of common candidates of mode of convergence and adaptive motion vector prediction mode Download PDF

Info

Publication number
RU2574280C2
RU2574280C2 RU2014101348/08A RU2014101348A RU2574280C2 RU 2574280 C2 RU2574280 C2 RU 2574280C2 RU 2014101348/08 A RU2014101348/08 A RU 2014101348/08A RU 2014101348 A RU2014101348 A RU 2014101348A RU 2574280 C2 RU2574280 C2 RU 2574280C2
Authority
RU
Russia
Prior art keywords
candidate
block
candidate block
motion vector
motion
Prior art date
Application number
RU2014101348/08A
Other languages
Russian (ru)
Other versions
RU2014101348A (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/487,914 external-priority patent/US9131239B2/en
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2014101348A publication Critical patent/RU2014101348A/en
Application granted granted Critical
Publication of RU2574280C2 publication Critical patent/RU2574280C2/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: motion vector encoding in video encoding comprises the definition one of multiple modes for prediction of motion vector for the current set of video data to be encoded. Prediction of motion vector for the current set of video data is performed with the help of the definite mode and set of candidate units. Note here that the latter are identical for each of said multiple modes. Note also that said multiple modes includes the mode of convergence and adaptive motion vector prediction mode. Note that the set of candidate units comprises the left top candidate unit, top candidate unit, right top candidate unit, left candidate unit, bottom left candidate unit and temporary candidate unit.
EFFECT: reduced complexity of motion vector prediction.
28 cl, 21 dwg

Description

[0001] Эта заявка испрашивает приоритет предварительной заявки на патент США № 61/506,558, поданной 11 июля 2011, предварительной заявки на патент США № 61/499,114, поданной 20 июня 2011 и предварительной заявки на патент США № 61/509,007, поданной 18 июля 2011, все из которых тем самым включены в настоящее описание по ссылке во всей их полноте.[0001] This application claims the priority of provisional patent application US No. 61 / 506,558, filed July 11, 2011, provisional patent application US No. 61 / 499,114, filed June 20, 2011 and provisional patent application US No. 61 / 509,007, filed July 18 2011, all of which are hereby incorporated by reference in their entirety.

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[0002] Настоящее раскрытие относится к кодированию видео, и более подробно к способам для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения.[0002] The present disclosure relates to video coding, and in more detail, to methods for selecting motion vector prediction candidate blocks in a motion vector prediction process.

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDAs), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиаплееры, видео игровые устройства, пульты видеоигр, сотовые или спутниковые радиотелефоны, устройства организации видео телеконференций и т.п. Цифровые видео устройства реализуют способы сжатия видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарта высокоэффективного кодирования видео (HEVC), развивающегося в настоящее время, и расширениях таких стандартов, чтобы передавать, принимать и хранить цифровую видео информацию более эффективно.[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, digital recorders, digital media players, video gaming devices, video game consoles, cellular or satellite radiotelephones, video conferencing devices, etc. Digital video devices implement video compression methods, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), the standard for high-performance video coding (HEVC ), currently evolving, and extensions of such standards to transmit, receive and store digital video information more efficiently.

[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для на основании блоках кодирования видео кадр видео или вырезка могут быть разделены в блоки. Каждый блок может быть далее разделен Видео блоки во внутренне кодированной (I) вырезке картинки кодируют, используя пространственное предсказание относительно опорных выборок в соседних блоках в том же самом кадре или вырезке. Блоки во внешне кодированном (P или B) кадре или вырезке могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в том же самом кадре или вырезке или временное предсказание относительно опорных выборок в других опорных кадрах. Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть кодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком.[0004] Video compression methods perform spatial (intra picture) prediction and / or temporal (between picture) prediction to reduce or remove the redundancy inherent in video sequences. For, based on the coding blocks of a video, a video frame or clipping can be divided into blocks. Each block can be further divided. Video blocks in an internally coded (I) clip of a picture are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same frame or clip. Blocks in an externally encoded (P or B) frame or slice may use spatial prediction for reference samples in neighboring blocks in the same frame or slice or temporal prediction for reference samples in other reference frames. Spatial or temporal prediction results in a predictive block for the block to be encoded. The residual data represents pixel differences between the original block to be encoded and the predictive block.

[0005] Внешне кодированный блок кодируют согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между кодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть сканированы в конкретном порядке, чтобы сформировать одномерный вектор коэффициентов преобразования для энтропийного кодирования.[0005] An externally coded block is encoded according to a motion vector that points to a block of reference samples forming a predictive block, and residual data indicating a difference between the encoded block and the predictive block. The internally encoded block is encoded according to the internal encoding mode and the residual data. For further compression, residual data can be converted from the pixel region to the transformation region, resulting in residual transform coefficients, which can then be quantized. The quantized transform coefficients originally placed in a two-dimensional array can be scanned in a specific order to form a one-dimensional vector of transform coefficients for entropy coding.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[0006] В целом настоящее раскрытие описывает способы для кодирования видео данных. Настоящее раскрытие описывает способы для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения.[0006] In general, the present disclosure describes methods for encoding video data. The present disclosure describes methods for selecting motion vector prediction candidate blocks in a motion vector prediction process.

[0007] В одном примере раскрытия способ кодирования вектора движения в процессе кодирования видео содержит определение одного из множества режимов для процесса предсказания вектора движения и выполнение процесса предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одним и тем же для каждого из множества режимов.[0007] In one example disclosure, a method of encoding a motion vector in a video encoding process comprises determining one of a plurality of modes for a motion vector prediction process and performing a motion vector prediction process for the current video data block using a specific mode and a set of candidate blocks in which the set candidate blocks is the same for each of the many modes.

[0008] В другом примере раскрытия способ декодирования вектора движения в процессе кодирования видео содержит определение одного из множества режимов для процесса предсказания вектора движения для текущего блока видео данных и определение блока-кандидата из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.[0008] In another example disclosure, a method for decoding a motion vector in a video encoding process comprises determining one of a plurality of modes for a motion vector prediction process for the current video data block and determining a candidate block from the set of candidate blocks in which the set of candidate blocks is the same for each of the many modes, and in which the information associated with the candidate block is used to decode the motion vector for the current block.

[0009] В другом примере раскрытия способ кодирования вектора движения в процессе кодирования видео содержит определение одного из множества режимов для процесса предсказания вектора движения и выполнение процесса предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, и в котором дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен.[0009] In another example disclosure, a method for encoding a motion vector in a video encoding process comprises determining one of a plurality of modes for a motion vector prediction process and performing a motion vector prediction process for the current video data block using a specific mode and a set of candidate blocks, wherein candidate blocks is the same for each of the many modes in which one candidate block in the set of candidate blocks is defined as an additional candidate block, and in which Tel'nykh candidate block is used if the other of the set of candidate blocks of the candidate blocks is unavailable.

[0010] В другом примере раскрытия способ декодирования вектора движения в процессе кодирования видео содержит прием элемента синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и прием индекса, указывающего блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, в котором этот дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.[0010] In another disclosure example, a method for decoding a motion vector in a video encoding process includes receiving a syntax element indicating one of a plurality of modes for the motion vector prediction process for the current video data block, and receiving an index indicating a candidate block from a set of candidate blocks, in which the set of candidate blocks is the same for each of the many modes, in which one candidate block in the set of candidate blocks is defined as an additional candidate block in which this complementary th candidate block is used if the other of the set of candidate blocks of the candidate blocks is unavailable and wherein the information associated with the candidate block, is used to decode the motion vector for the current block.

[0011] Детали одного или более примеров сформулированы в сопровождающих чертежах и описании ниже. Другие признаки, объекты, и преимущества будут очевидны из описания и чертежей и из формулы изобретения.[0011] Details of one or more examples are set forth in the accompanying drawings and description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

[0012] Фиг. 1A является концептуальным чертежом, иллюстрирующим блоки-кандидаты для предсказания вектора движения согласно режиму адаптивного предсказания вектора движения (AMVP).[0012] FIG. 1A is a conceptual drawing illustrating candidate blocks for motion vector prediction according to the adaptive motion vector prediction (AMVP) mode.

[0013] Фиг. 1B является концептуальным чертежом, иллюстрирующим блоки-кандидаты для предсказания вектора движения согласно режиму слияния.[0013] FIG. 1B is a conceptual drawing illustrating candidate blocks for predicting a motion vector according to a merge mode.

[0014] Фиг. 2 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео.[0014] FIG. 2 is a block diagram illustrating an example video encoding and decoding system.

[0015] Фиг. 3 является блок-схемой, иллюстрирующей примерный кодер видео.[0015] FIG. 3 is a block diagram illustrating an example video encoder.

[0016] Фиг. 4A является концептуальным чертежом информации сигнализации для режима слияния.[0016] FIG. 4A is a conceptual drawing of signaling information for a merge mode.

[0017] Фиг. 4B является концептуальным чертежом информации сигнализации для режима AMVP.[0017] FIG. 4B is a conceptual drawing of signaling information for AMVP mode.

[0018] Фиг. 5A является концептуальным чертежом, иллюстрирующим блоки-кандидаты для AMVP и режима слияния в соответствии с одним примером раскрытия.[0018] FIG. 5A is a conceptual drawing illustrating candidate blocks for AMVP and merge mode in accordance with one disclosure example.

[0019] Фиг. 5B является концептуальным чертежом, иллюстрирующим блоки-кандидаты для AMVP и режима слияния в соответствии с другим примером раскрытия.[0019] FIG. 5B is a conceptual drawing illustrating candidate blocks for AMVP and merge mode in accordance with another disclosure example.

[0020] Фиг. 6 является концептуальным чертежом, иллюстрирующим блоки-кандидаты для AMVP и режима слияния в соответствии с другим примером раскрытия.[0020] FIG. 6 is a conceptual drawing illustrating candidate blocks for AMVP and merge mode in accordance with another disclosure example.

[0021] Фиг. 7 является концептуальным чертежом, иллюстрирующим блоки-кандидаты и шаблон проверки для AMVP и режима слияния в соответствии с другим примером раскрытия.[0021] FIG. 7 is a conceptual drawing illustrating candidate blocks and a validation pattern for AMVP and merge mode in accordance with another disclosure example.

[0022] Фиг. 8 является блок-схемой, иллюстрирующей примерный декодер видео.[0022] FIG. 8 is a block diagram illustrating an example video decoder.

[0023] Фиг. 9 является последовательностью операций, иллюстрирующей примерный способ кодирования видео.[0023] FIG. 9 is a flowchart illustrating an example video encoding method.

[0024] Фиг. 10 является последовательностью операций, иллюстрирующей примерный способ кодирования видео в режиме слияния.[0024] FIG. 10 is a flowchart illustrating an exemplary method of merging video encoding.

[0025] Фиг. 11 является последовательностью операций, иллюстрирующей примерный способ кодирования видео в режиме AMVP.[0025] FIG. 11 is a flowchart illustrating an example method for encoding video in AMVP mode.

[0026] Фиг. 12 является последовательностью операций, иллюстрирующей примерный способ декодирования видео.[0026] FIG. 12 is a flowchart illustrating an example video decoding method.

[0027] Фиг. 13 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в режиме слияния.[0027] FIG. 13 is a flowchart illustrating an example method for decoding video in a merge mode.

[0028] Фиг. 14 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в режиме AMVP.[0028] FIG. 14 is a flowchart illustrating an example method for decoding video in AMVP mode.

[0029] Фиг. 15 является последовательностью операций, иллюстрирующей другой примерный способ кодирования видео.[0029] FIG. 15 is a flowchart illustrating another example video encoding method.

[0030] Фиг. 16 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео.[0030] FIG. 16 is a flowchart illustrating another example video decoding method.

[0031] Фиг. 17 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео в режиме слияния.[0031] FIG. 17 is a flowchart illustrating another exemplary merge mode video decoding method.

[0032] Фиг. 18 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео в режиме AMVP.[0032] FIG. 18 is a flowchart illustrating another exemplary method for decoding video in AMVP mode.

ДЕТАЛЬНОЕ ОПИСАНИЕDETAILED DESCRIPTION

[0033] В целом настоящее раскрытие описывает способы для кодирования видео данных. Настоящее раскрытие описывает способы для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения. В одном примере настоящее раскрытие предлагает, чтобы каждый из множества режимов предсказания вектора движения использовал один и тот же набор блоков-кандидатов, чтобы предсказать вектор движения для текущего блока. В другом примере настоящее раскрытие предлагает, чтобы один блок-кандидат в наборе блоков-кандидатов определялся как дополнительный блок-кандидат. Этот дополнительный блок-кандидат используется, если другой один из блоков в наборе недоступен.[0033] In general, the present disclosure describes methods for encoding video data. The present disclosure describes methods for selecting motion vector prediction candidate blocks in a motion vector prediction process. In one example, the present disclosure proposes that each of the plurality of motion vector prediction modes use the same set of candidate blocks to predict a motion vector for the current block. In another example, the present disclosure proposes that one candidate block in a set of candidate blocks is defined as an additional candidate block. This optional candidate block is used if the other one of the blocks in the set is unavailable.

[0034] Цифровые видео устройства реализуют способы сжатия видео, чтобы кодировать и декодировать цифровую видео информацию более эффективно. Сжатие видео может применять способы предсказания с пространственным (внутрикадровым) и/или временным (меж-кадровым) предсказанием, чтобы уменьшить или удалить избыточность, присущую видео последовательностям.[0034] Digital video devices implement video compression methods to encode and decode digital video information more efficiently. Video compression can apply spatial (intra-frame) and / or temporal (inter-frame) prediction methods to reduce or remove the redundancy inherent in video sequences.

[0035] Для кодирования видео согласно стандарту высокоэффективного кодирования видео (HEVC), в настоящее время развиваемому объединенной совместной командой для кодирования видео (JCT-VC), видео кадр может быть разделен на единицы кодирования. Единица кодирования (CU) обычно относится к области изображения, которая служит базовой единицей, к которой различные инструменты кодирования применяются для сжатия видео. CU обычно имеет компоненту яркости, обозначенную как Y, и две компоненты цветности, обозначенные как U и V. В зависимости от формата дискретизации видео размер U и V компонент, в терминах количества выборок, может быть таким же или отличающимся от размера компоненты Y. CU является типично квадратной, и, как можно полагать, подобна так называемому макроблоку, например, в других стандартах кодирования видео, таких как ITU-T H.264.[0035] For video encoding according to the high-performance video encoding standard (HEVC) currently being developed by the joint joint team for video encoding (JCT-VC), the video frame can be divided into encoding units. A coding unit (CU) generally refers to a region of an image that serves as a basic unit to which various coding tools are used to compress video. A CU typically has a luminance component denoted by Y and two color components denoted by U and V. Depending on the video sampling format, the size of the U and V components, in terms of the number of samples, may be the same or different from the size of the Y component. CU is typically square, and can be assumed to be similar to the so-called macroblock, for example, in other video coding standards such as ITU-T H.264.

[0036] Чтобы достигнуть лучше эффективности кодирования, единица кодирования может иметь переменные размеры в зависимости от видео контента. Кроме того, единица кодирования может быть разделена на меньшие блоки для предсказания или преобразования. В частности, каждая единица кодирования может быть далее разделена на единицы предсказания (PUs) и единицы преобразования (TUs). Единицы предсказания могут рассматриваться как аналогичные так называемому разделению в других стандартах кодирования видео, таких как H.264. Единицы преобразования (TUs) относятся к блокам остаточных данных, к которым применено преобразование, чтобы сформировать коэффициенты преобразования.[0036] In order to achieve better coding efficiency, the coding unit may have variable sizes depending on the video content. In addition, the coding unit may be divided into smaller blocks for prediction or conversion. In particular, each coding unit can be further divided into prediction units (PUs) and transform units (TUs). Prediction units can be considered similar to the so-called separation in other video coding standards such as H.264. Transformation units (TUs) refer to residual data blocks to which a transformation is applied to form transformation coefficients.

[0037] Кодирование согласно некоторым из в настоящее время предложенных аспектов развития стандарта HEVC будет описано в этой заявки в целях иллюстрации. Однако, способы, описанные в этом раскрытии, могут быть полезными для других процессов кодирования видео, таких как определенные согласно H.264 или другим стандартным или составляющим собственность процессам кодирования видео.[0037] Coding according to some of the currently proposed aspects of the development of the HEVC standard will be described in this application for illustrative purposes. However, the methods described in this disclosure may be useful for other video encoding processes, such as those defined according to H.264 or other standard or proprietary video encoding processes.

[0038] Усилия по стандартизации HEVC основаны на модели устройства кодирования видео, называемой Тестовой Моделью HEVC (HM). HM предполагает несколько дополнительных возможностей устройств кодирования видео перед существующими устройствами согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать четыре режима кодирования с внутренним предсказанием.[0038] The HEVC standardization efforts are based on a model of a video encoding device called the HEVC Test Model (HM). HM involves several additional features of video encoding devices over existing devices according to, for example, ITU-T H.264 / AVC. For example, while H.264 provides nine intra-prediction coding modes, HM provides as many as thirty-four intra-prediction coding modes.

[0039] Согласно HM, CU может включать в себя одну или более единиц предсказания (PUs) и/или одну или более единиц преобразования (TUs). Данные синтаксиса в пределах потока битов могут определять наибольшую единицу кодирования (LCU), которая является наибольшей CU в терминах количества пикселей. Обычно, CU имеет аналогичную цель макроблоку H.264, за исключением того, что CU не имеет разности в размерах. Таким образом, CU может быть разделена на суб-CUs. Обычно, ссылки в этом раскрытии на CU могут относиться к наибольшей единице кодирования картинки или суб-CU в LCU. LCU может быть разделена на суб-CU, и каждая суб-CU может быть далее разделена на суб-CU. Данные синтаксиса для потока битов могут определить максимальное количество раз, сколько LCU может быть разделена, называемая глубиной CU. Соответственно, поток битов может также определять наименьшую единицу кодирования (SCU). Настоящее раскрытие также использует термин "блок" или "часть", чтобы относиться к любой из CU, PU, или TU. Обычно, "часть" может относиться к любому поднабору видео кадра.[0039] According to the HM, a CU may include one or more prediction units (PUs) and / or one or more transformation units (TUs). The syntax data within the bitstream can determine the largest coding unit (LCU), which is the largest CU in terms of the number of pixels. Typically, a CU has a similar purpose to the H.264 macroblock, except that the CU does not have a difference in size. Thus, CUs can be divided into sub-CUs. Typically, references in this disclosure to CUs may refer to the largest picture coding unit or sub-CU in the LCU. The LCU can be divided into sub-CUs, and each sub-CU can be further divided into sub-CUs. The syntax data for the bitstream can determine the maximum number of times how many LCUs can be split, called the CU depth. Accordingly, the bitstream may also determine the smallest coding unit (SCU). The present disclosure also uses the term “block” or “part” to refer to any of a CU, PU, or TU. Typically, a “part” can refer to any subset of a video frame.

[0040] LCU может быть ассоциирована со структурой данных квадродерева. Обычно структура данных квадродерева включает в себя один узел для каждой CU, где корневой узел соответствует LCU. Если CU разделена на четыре суб-CU, узел, соответствующий CU, включает в себя четыре листовых (концевых) узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделена ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU на суб-CU. Если CU не разделена далее, на нее ссылаются как листовую (концевую) CU.[0040] An LCU may be associated with a quad tree data structure. Typically, the quad tree data structure includes one node for each CU, where the root node corresponds to the LCU. If the CU is divided into four sub-CUs, the node corresponding to the CU includes four leaf (leaf) nodes, each of which corresponds to one of the sub-CUs. Each node of the quadtree data structure can provide syntax data for the corresponding CU. For example, a node in a quadtree may include a split flag indicating whether the CU corresponding to the node is divided into sub-CUs. The syntax elements for the CU can be defined recursively, and may depend on whether the CU is divided into sub-CUs. If the CU is not further divided, it is referred to as a leaf (terminal) CU.

[0041] Кроме того, единицы TU листовых CU могут также быть ассоциированы с соответствующими структурами данных квадродерева. Таким образом, листовая CU может включать в себя квадродерево, указывающее, как листовая CU разделена на единицы TU. Настоящее раскрытие относится к квадродереву, указывающему, как LCU разделен как квадродерево CU и это квадродерево указывает, как листовая CU разделена на единицы TU как квадродерево TU. Корневой узел квадродерева TU обычно соответствует листовой CU, в то время как корневой узел квадродерева CU обычно соответствует LCU. Единицы TU квадродерева TU, которые не разделены, упоминаются как листовые (концевые) TU.[0041] In addition, TU units of leafy CUs may also be associated with corresponding quad tree data structures. Thus, the leafy CU may include a quadtree indicating how the leafy CU is divided into TU units. The present disclosure relates to a quad tree indicating how an LCU is partitioned as a CU quad tree and this quad tree indicates how a leaf CU is divided into TU units as a TU quad tree. The root node of the TU quad tree usually corresponds to the leaf CU, while the root node of the CU quad tree usually corresponds to the LCU. The TU units of the TU quad tree that are not split are referred to as leaf (terminal) TUs.

[0042] Листовая CU может включать в себя одну или более единиц предсказания (PU). Обычно PU представляет всю или часть соответствующей CU, и может включать в себя данные для того, чтобы извлечь опорную выборку для PU. Например, когда PU является кодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорный кадр, на который указывает вектор движения и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для листовой CU, определяющие единицу(ы) PU могут также описывать, например, разделение CU в одну или более PU. Режимы разделения могут отличаться в зависимости от того, не является ли CU кодированной с предсказанием, кодированной в режиме внутреннего предсказания, или кодированной в режиме внешнего предсказания. Для внутреннего кодирования PU может быть обработана так же, как единица преобразования листа, описанный ниже.[0042] The leaf CU may include one or more prediction units (PUs). Typically, the PU represents all or part of the corresponding CU, and may include data in order to extract a reference sample for the PU. For example, when the PU is external encoded, the PU may include data defining a motion vector for the PU. The motion vector data can describe, for example, the horizontal component of the motion vector, the vertical component of the motion vector, the resolution for the motion vector (for example, one quarter pixel accuracy or one eighth pixel accuracy), a reference frame that the motion vector points to, and / or a reference list (e.g., list 0 or list 1) for the motion vector. The data for the leaf CU defining the PU unit (s) may also describe, for example, the division of the CU into one or more PUs. Separation modes may differ depending on whether the CU is prediction encoded, intra prediction mode encoded, or inter prediction mode encoded. For internal coding, the PU can be handled in the same way as the sheet conversion unit described below.

[0043] Чтобы закодировать блок (например, единицу предсказания (PU) видео данных), сначала получают предсказатель для блока. Предсказатель может быть получен любое из внешнее (I) предсказание (то есть, пространственное предсказание) или внешнее (P или B) предсказание (то есть, временное предсказание). Следовательно, некоторые блоки предсказания могут быть внутренне кодированы (I), используя пространственное предсказание относительно соседних опорных блоков в том же самом кадре, и другие блоки предсказания могут быть внешне кодированы (P или B) относительно опорных блоков в других кадрах.[0043] To encode a block (for example, a prediction unit (PU) of video data), a predictor for the block is first obtained. The predictor can be obtained from any of the external (I) prediction (i.e., spatial prediction) or external (P or B) prediction (i.e., temporal prediction). Therefore, some prediction blocks can be internally encoded (I) using spatial prediction with respect to neighboring reference blocks in the same frame, and other prediction blocks can be externally encoded (P or B) with respect to reference blocks in other frames.

[0044] После идентификации предсказателя вычисляют разность между первоначальным видео блоком данных и его предсказателем. Эта разность также называют остатком предсказания, и относится к разностям пиксельных значений между пикселями блока, который должен быть кодирован, и соответствующими пикселями опорного блока, то есть, предсказателя. Чтобы достигнуть лучшего сжатия, остаток предсказания (то есть, массив значений пиксельной разности) обычно преобразуют, например, используя дискретное косинусное преобразование (DCT), целочисленное преобразование, преобразование Кархунена-Лоэва (Karhunen-Loeve) (K-L) или другое преобразование.[0044] After identifying the predictor, a difference between the original video data block and its predictor is calculated. This difference is also called the remainder of the prediction, and refers to the differences in pixel values between the pixels of the block to be encoded and the corresponding pixels of the reference block, that is, the predictor. In order to achieve better compression, the prediction remainder (i.e., an array of pixel difference values) is usually transformed, for example, using a discrete cosine transform (DCT), an integer transform, a Karhunen-Loeve transform (K-L), or another transform.

[0045] Кодирование PU с использованием внешнего предсказания вовлекает вычисление вектора движения между текущим блоком и блоком в опорном кадре. Вектора движения вычисляют с помощью процесса, названного оценкой движения (или поиском движения). Вектор движения, например, может указывать смещение блока предсказания в текущем кадре относительно опорной выборки опорного кадра. Опорная выборка может быть блоком, который, как находят, близко соответствует части CU, включая PU, кодированную в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками разности. Опорная выборка может иметь место где-нибудь в пределах опорного кадра или опорной вырезки. В некоторых примерах опорная выборка может иметь место во фракционной позиции пикселя. После обнаружения части опорного кадра, которая лучше всего совпадает с текущей частью, кодер определяет текущий вектор движения для текущей части как разность в местоположении от текущей части до совпадающей части в опорном кадре (то есть, от центра текущей части к центру совпадающей части).[0045] PU coding using inter prediction involves computing a motion vector between the current block and the block in the reference frame. Motion vectors are calculated using a process called motion estimation (or motion search). The motion vector, for example, may indicate the offset of the prediction block in the current frame relative to the reference sample of the reference frame. The reference sample may be a block that is found to closely match the portion of the CU, including the PU encoded in terms of the pixel difference, which can be determined by the sum of the absolute differences (SAD), the sum of the differences of the squares (SSD), or other difference metrics. The reference sample may take place anywhere within the reference frame or reference clipping. In some examples, a reference sample may take place at a fractional position of a pixel. After detecting the part of the reference frame that best matches the current part, the encoder determines the current motion vector for the current part as the difference in location from the current part to the matching part in the reference frame (that is, from the center of the current part to the center of the matching part).

[0046] В некоторых примерах кодер может сигнализировать вектор движения для каждой части в закодированном видео потоке битов. Сигнализированный вектор движения используется декодером, чтобы выполнить компенсацию движения, чтобы декодировать видео данные. Однако, сигнализация первоначального вектора движения непосредственно может привести к менее эффективному кодированию, поскольку большое количество битов обычно необходимо, чтобы передать информацию.[0046] In some examples, the encoder may signal a motion vector for each part in the encoded video bitstream. The signalized motion vector is used by the decoder to perform motion compensation to decode the video data. However, signaling the initial motion vector directly may lead to less efficient coding, since a large number of bits are usually necessary to transmit information.

[0047] В некоторых случаях вместо непосредственной сигнализации первоначального вектора движения, кодер может предсказать вектор движения для каждого разделения, то есть, для каждой PU. При выполнении этого предсказания вектора движения кодер может выбрать набор векторов-кандидатов движения, определенных из пространственно соседних блоков в том же самом кадре, что текущая часть или вектор-кандидат движения, определенный из совместно расположенного блока в опорном кадре. Кодер может выполнить предсказание вектора движения, и если нужно, сигнализировать разность предсказания, вместо чем сигнализировать первоначальный вектор движения, чтобы уменьшить частоту следования битов в сигнализации. Векторы вектора-кандидата движения из пространственно соседних блоков могут называться как пространственные MVP-кандидаты, тогда как вектор-кандидат движения из совместно расположенного блока в другом опорном кадре может упоминаться как временный MVP-кандидат.[0047] In some cases, instead of directly signaling the initial motion vector, the encoder may predict the motion vector for each division, that is, for each PU. When performing this motion vector prediction, the encoder may select a set of motion candidate vectors determined from spatially adjacent blocks in the same frame as the current portion or motion candidate vector determined from a co-located block in the reference frame. The encoder can perform motion vector prediction, and if necessary, signal the prediction difference, rather than signal the original motion vector to reduce the bit rate in the signaling. Vectors of a motion candidate vector from spatially adjacent blocks may be referred to as spatial MVP candidates, while a motion candidate vector from a co-located block in another reference frame may be referred to as a temporary MVP candidate.

[0048] Два различных режима или типы предсказания вектора движения предложены в текущем рабочем проекте стандарта HEVC. Один режим упоминается как режим "слияния". Другой режим упоминается как адаптивное предсказание вектора движения (AMVP). В режиме слияния кодер инструктирует декодер, посредством сигнализации потока битов синтаксиса предсказания, скопировать вектор движения, опорный индекс (идентифицирующий опорный кадр в заданном списке опорных картинок, на который вектор движения указывает), и направление предсказания движения (которое идентифицирует список опорных картинок (Список 0 или Список 1), то есть, в терминах того, предшествует ли опорный кадр временно или следует за текущим кадром) от выбранного вектора-кандидата движения для текущей части кадра. Это достигается посредством сигнализации в потоке битов индекса в список векторов-кандидатов движения, идентифицирующий выбранный вектор-кандидат движения (то есть, конкретный пространственный MVP-кандидат или временный MVP-кандидат). Таким образом, для режима слияния синтаксис предсказания может включать в себя флаг, идентифицирующий режим (в этом случае режим "слияния") и индекс, идентифицирующий выбранный вектор-кандидат движения. В некоторых случаях вектор-кандидат движения будет в причинной части в ссылке на текущую часть. Таким образом, вектор-кандидат движения будет уже декодирован декодером. Как таковой, декодер уже принял и/или определил вектор движения, опорный индекс, и направление предсказания движения для причинной части. Как таковой, декодер может просто извлечь вектор движения, опорный индекс, и направление предсказания движения, ассоциированные с причинной частью, из памяти и копировать эти значения в качестве информации движения для текущей части. Чтобы восстановить блок в режиме слияния, декодер получает предсказывающий блок, используя полученную информацию движения для текущей части, и добавляет остаточные данные к предсказывающему блоку, чтобы восстановить закодированный блок.[0048] Two different modes or types of motion vector prediction are proposed in the current work draft of the HEVC standard. One mode is referred to as a merge mode. Another mode is referred to as adaptive motion vector prediction (AMVP). In merge mode, the encoder instructs the decoder, by signaling the bitstream of the prediction syntax, to copy the motion vector, the reference index (identifying the reference frame in the given list of reference pictures to which the motion vector points), and the direction of the motion prediction (which identifies the list of reference pictures (List 0 or List 1), that is, in terms of whether the reference frame temporarily precedes or follows the current frame) from the selected motion candidate vector for the current part of the frame. This is achieved by signaling the index bit stream to a list of motion candidate vectors identifying the selected motion candidate vector (i.e., a particular spatial MVP candidate or temporary MVP candidate). Thus, for the merge mode, the prediction syntax may include a flag identifying the mode (in this case, the "merge" mode) and an index identifying the selected motion candidate vector. In some cases, the motion vector candidate will be in the causal part in reference to the current part. Thus, the motion vector candidate will already be decoded by the decoder. As such, the decoder has already accepted and / or determined a motion vector, a reference index, and a motion prediction direction for the causal part. As such, the decoder can simply extract the motion vector, reference index, and motion prediction direction associated with the causal part from the memory and copy these values as motion information for the current part. To restore the block in merge mode, the decoder obtains the predictive block using the obtained motion information for the current part, and adds residual data to the predictive block to restore the encoded block.

[0049] В AMVP кодер инструктирует декодер, через сигнализацию потока битов, только скопировать вектор движения из части кандидата и использовать скопированный вектор в качестве предсказателя для вектора движения текущей части, и сигнализирует разность векторов движения (MVD). Опорный кадр и направление предсказания, ассоциированные с вектором движения текущей части, сообщаются по отдельности. MVD является разностью между текущим вектором движения для текущей части и предсказателем вектора движения, полученным из части кандидата. В этом случае, кодер, используя оценку движения, определяет фактический вектор движения для блока, который должен быть закодирован, и затем определяет разность между фактическим вектором движения и предсказателем вектора движения в качестве значения MVD. Таким образом, декодер не использует точную копию вектора-кандидата движения в качестве текущего вектора движения, как в режиме слияния, но может вместо этого использовать вектор-кандидат движения, который может быть "близким" по значению к текущему вектору движения, определенному из оценки движения, и добавить MVD, чтобы восстановить текущий вектор движения. Чтобы восстановить блок в режиме AMVP, декодер добавляет соответствующие остаточные данные, чтобы восстановить закодированный блок.[0049] In AMVP, the encoder instructs the decoder, through the signaling of the bitstream, to only copy the motion vector from the candidate part and use the copied vector as a predictor for the motion vector of the current part, and signal the motion vector difference (MVD). The reference frame and the prediction direction associated with the motion vector of the current part are reported separately. MVD is the difference between the current motion vector for the current part and the motion vector predictor obtained from the candidate part. In this case, the encoder, using the motion estimate, determines the actual motion vector for the block to be encoded, and then determines the difference between the actual motion vector and the motion vector predictor as the MVD value. Thus, the decoder does not use an exact copy of the motion candidate vector as the current motion vector, as in the merge mode, but can instead use the motion candidate vector, which may be “close” in value to the current motion vector determined from the motion estimate , and add MVD to restore the current motion vector. To restore a block in AMVP mode, the decoder adds the corresponding residual data to restore the encoded block.

[0050] При большинстве обстоятельств MVD требует меньше битов сигнализации, чем весь текущий вектор движения. Также, AMVP обеспечивает более точную сигнализацию текущего вектора движения, в то же время поддерживая эффективность кодирования по посылке всего вектора движения. Напротив, режим слияния не обеспечивает спецификацию MVD, и как таковой, режим слияния жертвует точностью сигнализации вектора движения для увеличенной эффективности сигнализации (то есть, меньше битов). Синтаксис предсказания для AMVP может включать в себя флаг для этого режима (в этом случае флаг AMVP), индекс для части кандидата, MVD между текущим вектором движения и предсказывающим вектором движения от части кандидата, опорный индекс, и направление предсказания движения.[0050] In most circumstances, MVD requires fewer signaling bits than the entire current motion vector. Also, AMVP provides more accurate signaling of the current motion vector, while at the same time supporting the coding efficiency of sending the entire motion vector. In contrast, the merge mode does not provide the MVD specification, and as such, the merge mode sacrifices the accuracy of the motion vector signaling for increased signaling efficiency (i.e., fewer bits). The prediction syntax for AMVP may include a flag for this mode (in this case, the AMVP flag), an index for the candidate part, an MVD between the current motion vector and a predictive motion vector from the candidate part, a reference index, and a motion prediction direction.

[0051] Как только оценка движения выполнена, чтобы определить вектор движения для текущей части, кодер сравнивает совпадающую часть в опорном кадре с текущей частью. Это сравнение типично вовлекает вычитание части (которая обычно упоминается как "опорная выборка") в опорном кадре из текущей части и приводит к так называемым остаточным данным, как упомянуто выше. Остаточные данные указывают значения пиксельной разности между текущей частью и опорной выборкой. Кодер затем преобразовывает эти остаточные данные из пространственной области в область преобразования, такую как частотная область. Обычно кодер применяет дискретное косинусное преобразование (DCT) к остаточным данным, чтобы достигнуть этого преобразования. Кодер выполняет это преобразование, чтобы облегчить сжатие остаточных данных, так как результирующие коэффициенты преобразования представляют различные частоты, в котором большинство энергии обычно концентрируется на нескольких низкочастотных коэффициентах.[0051] Once the motion estimation is performed to determine the motion vector for the current part, the encoder compares the matching part in the reference frame with the current part. This comparison typically involves subtracting the part (which is commonly referred to as the “reference sample”) in the reference frame from the current part and yields the so-called residual data, as mentioned above. The residual data indicates the pixel difference between the current part and the reference sample. The encoder then converts this residual data from the spatial domain to a transform domain, such as a frequency domain. Typically, an encoder applies a discrete cosine transform (DCT) to residual data to achieve this transform. The encoder performs this conversion in order to facilitate compression of the residual data, since the resulting conversion coefficients represent different frequencies, in which most of the energy is usually concentrated on several low-frequency coefficients.

[0052] Как правило, результирующие коэффициенты преобразования группируются способом, который допускает кодирование длин серий, особенно если коэффициенты преобразования сначала квантуются (округляются). Кодер выполняет это кодирование длин серий квантованных коэффициентов преобразования и затем выполняет статистическое кодирование без потерь (или так называемое "энтропийное"), чтобы дополнительно сжать кодированные по длинам серий квантованные коэффициенты преобразования.[0052] Typically, the resulting transform coefficients are grouped in a manner that allows encoding of series lengths, especially if the transform coefficients are first quantized (rounded). The encoder performs this encoding of the lengths of the series of quantized transform coefficients and then performs lossless statistical encoding (or the so-called "entropy") to further compress the series-encoded quantized transform coefficients.

[0053] После выполнения энтропийного кодирования без потерь кодер генерирует поток битов, который включает в себя закодированные видео данные. Этот поток битов также включает в себя количество элементов синтаксиса предсказания в некоторых случаях, которые задают, было ли, например, предсказание вектора движения выполнено, режим вектора движения, и индекс предсказателя вектора движения (MVP) (то есть, индекс части кандидата с выбранным вектором движения). Индекс MVP может также упоминаться в качестве его имени "mvp idx" переменной элемента синтаксиса.[0053] After performing lossless entropy encoding, the encoder generates a bit stream that includes encoded video data. This bitstream also includes the number of prediction syntax elements in some cases that specify whether, for example, motion vector prediction has been performed, motion vector mode, and motion vector predictor index (MVP) (i.e., the candidate part index with the selected vector movement). The MVP index may also be referred to as its name "mvp idx" syntax element variable.

[0054] В текущей структуре, предлагаемой для принятия ITU-T/ISO/IEC объединенной совместной командой в отношении кодирования видео (JCT-VC), называемого высокоэффективным кодированием видео (HEVC), кодер выполняет ряд режимов предсказания вектора движения, чтобы предсказать вектор движения для текущей части, включая 1) AM VP и 2) режим слияния, описанный выше. Эти два режима аналогичны, хотя AMVP предусматривает больше гибкости в терминах способности определить MVDs, направления предсказания движения и опорные индексы, в то время как режим слияния просто копирует эту информацию вектора движения (то есть, вектор движения, направление предсказания движения, и опорный индекс) и не учитывает повышенную точность MVD.[0054] In the current structure proposed for adoption by ITU-T / ISO / IEC by an integrated joint team for video coding (JCT-VC) called high-performance video coding (HEVC), the encoder performs a number of motion vector prediction modes to predict the motion vector for the current part, including 1) AM VP and 2) the merge mode described above. The two modes are similar, although AMVP provides more flexibility in terms of the ability to define MVDs, motion prediction directions and reference indices, while the merge mode simply copies this motion vector information (i.e., motion vector, motion prediction direction, and reference index) and does not take into account the increased accuracy of MVD.

[0055] Фиг. 1A показывает набор блоков-кандидатов 100 (или части/блоки в PU) в настоящее время предложенный в стандарте HEVC для использования в режиме AMVP, в то время как Фиг. 1B показывает набор блоков-кандидатов 110 в настоящее время предложенный в стандарте HEVC для использования в режиме слияния. Режим AMVP использует шесть блоков-кандидатов: нижний левый (BL) блок 101, левый (L) блок 102, правый верхний (RA) блок 103, верхний (A) блок 104, левый верхний (LA) блок 105, и временный блок (T) 106. Следует отметить что в дополнение к набору блоков-кандидатов режим AMVP также определяет порядок относительно проверки блоков-кандидатов. В примере на фиг. 1A, шаблон проверки происходит следующим образом: BL-L-RA-A-LA-T. Как показано на фиг. 1B, режим слияния использует пять блоков-кандидатов: нижний левый (BL) блок 111, левый (L) блок 112, правый верхний (RA) блок 113, верхний (A) блок 114, и временный (T) блок 115. Вектора движения, ассоциированные с этими блоками-кандидатами, используются для того, чтобы определить предсказатель вектора движения в режиме слияния и режиме AMVP. Режим слияния может использовать аналогичный шаблон проверки как AMVP, или может использовать другой шаблон проверки.[0055] FIG. 1A shows a set of candidate blocks 100 (or parts / blocks in a PU) currently proposed in the HEVC standard for use in AMVP mode, while FIG. 1B shows a set of candidate blocks 110 currently proposed in the HEVC standard for use in merge mode. AMVP mode uses six candidate blocks: the lower left (BL) block 101, the left (L) block 102, the upper right (RA) block 103, the upper (A) block 104, the upper left (LA) block 105, and the temporary block ( T) 106. It should be noted that in addition to the set of candidate blocks, the AMVP mode also determines the procedure for checking candidate blocks. In the example of FIG. 1A, the verification pattern is as follows: BL-L-RA-A-LA-T. As shown in FIG. 1B, the merge mode uses five candidate blocks: the lower left (BL) block 111, the left (L) block 112, the upper right (RA) block 113, the upper (A) block 114, and the temporary (T) block 115. The motion vectors associated with these candidate blocks are used to determine the motion vector predictor in merge mode and AMVP mode. Merge mode may use a similar validation pattern as AMVP, or may use a different validation pattern.

[0056] Как описано выше, режим AMVP использует шесть блоков-кандидатов, в то время как режим слияния использует пять блоков-кандидатов. Кроме того, кроме правого верхнего (RA), нижнего левого (BL), и временного (T) блоков, блоки-кандидаты для режима AMVP и режима слияния находятся в различных местоположениях. Как таковое, большое количество блоков-кандидатов должно быть сохранено и рассмотрено и во время процесса кодирования и во время процесса декодирования. Кроме того, шаблон проверки для AMVP может быть не оптимальным, поскольку нижний левый блок может быть не доступен во всех обстоятельствах. Такие обстоятельства включают в себя такие, когда нижний левый блок еще не был закодирован (например, он пересекает границу вырезки или CU), или если данные для нижнего левого блока повреждены.[0056] As described above, the AMVP mode uses six candidate blocks, while the merge mode uses five candidate blocks. In addition to the right upper (RA), lower left (BL), and temporary (T) blocks, the candidate blocks for AMVP mode and merge mode are in different locations. As such, a large number of candidate blocks must be stored and reviewed both during the encoding process and during the decoding process. In addition, the validation pattern for AMVP may not be optimal, since the lower left block may not be available in all circumstances. Such circumstances include when the lower left block has not yet been encoded (for example, it crosses the cut border or CU), or if the data for the lower left block is corrupted.

[0057] В этом раскрытии предложен объединенный набор блоков-кандидатов и для режима AMVP и для режима слияния. Обычно один и тот же набор блоков-кандидатов используется, независимо от того, какой используются режим предсказания вектора движения (например, режим слияния или режим AMVP). Также, меньше памяти необходимо для того, чтобы сохранить вектора движения, и другую относящуюся к внешнему предсказанию информацию (например, опорный кадр, направление предсказания, и т.д.). В других примерах этого раскрытия предложены способы для того, чтобы использовать набор блоков-кандидатов, который включает в себя дополнительный блок-кандидат. Кроме того, также раскрыты способы для более оптимального шаблона проверки.[0057] In this disclosure, a combined set of candidate blocks is proposed for both the AMVP mode and the merge mode. Typically, the same set of candidate blocks is used, regardless of which motion vector prediction mode is used (e.g., merge mode or AMVP mode). Also, less memory is needed in order to save motion vectors, and other information related to external prediction (for example, a reference frame, prediction direction, etc.). In other examples of this disclosure, methods are provided for using a set of candidate blocks that includes an additional candidate block. In addition, methods for a more optimal check pattern are also disclosed.

[0058] Фиг. 2 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может конфигурироваться, чтобы использовать способы для предсказания вектора движения в соответствии с примерами этого раскрытия. Как показано на фиг. 2, система 10 включает в себя устройство-источник 12, который передает кодированное видео на устройство 14 назначения через канал связи 16. Закодированные видео данные могут также сохраняться на носителе данных 34 или файловом сервере 36 и могут быть доступны устройству 14 назначения при необходимости. Когда сохранены на носитель данных или файловый сервер, видео кодер 20 может выдать кодированные видео данные другому устройству, такому как сетевой интерфейс, устройству прожигания или штамповки компакт-диска (CD), Blu-ray или цифровой видео диска (DVD), или другие устройства, для того, чтобы сохранить закодированные видео данные на носитель данных. Аналогично, устройство, отдельное от видео декодера 30, такое как сетевой интерфейс, CD или считыватель DVD, или подобное, может извлечь кодированные видео данные с носителя данных и подать извлеченные данные к видео декодеру 30.[0058] FIG. 2 is a block diagram illustrating an example video encoding and decoding system 10 that can be configured to use methods for predicting a motion vector in accordance with examples of this disclosure. As shown in FIG. 2, system 10 includes a source device 12 that transmits encoded video to a destination device 14 via a communication channel 16. Encoded video data can also be stored on a storage medium 34 or file server 36 and can be accessed by the destination device 14 if necessary. When stored on a storage medium or file server, video encoder 20 may provide encoded video data to another device, such as a network interface, a burning device or stamping compact disc (CD), Blu-ray or digital video disc (DVD), or other device , in order to save the encoded video data to the storage medium. Similarly, a device separate from the video decoder 30, such as a network interface, a CD or a DVD reader, or the like, can extract encoded video data from the storage medium and feed the extracted data to the video decoder 30.

[0059] Устройство-источник 12 и устройство 14 назначения могут содержать любое из широкого разнообразия устройств, включая настольные компьютеры, портативные компьютеры(то есть, ноутбуки), планшетный компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые «смартфоны», телевизоры, камеры, устройства отображения, цифровые медиаплееры, видео игровые пульты, или подобное. Во многих случаях такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал связи 16 может содержать беспроводный канал, проводной канал или комбинацию беспроводных и проводных каналов, подходящих для передачи закодированных видео данных. Точно так же, к файловому серверу 36 может получить доступ устройство 14 назначения через любое стандартное соединение данных, включая интернет-соединение. Оно может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.) или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранившим на файловом сервере.[0059] The source device 12 and the destination device 14 may comprise any of a wide variety of devices, including desktop computers, laptop computers (that is, laptops), tablet computers, set-top boxes, handsets such as so-called smartphones, televisions , cameras, display devices, digital media players, video game consoles, or the like. In many cases, such devices may be equipped for wireless communication. Therefore, the communication channel 16 may comprise a wireless channel, a wired channel, or a combination of wireless and wired channels suitable for transmitting encoded video data. Likewise, destination device 14 can be accessed by file server 36 via any standard data connection, including an Internet connection. It can include a wireless channel (for example, a Wi-Fi connection), a wired connection (for example, DSL, cable modem, etc.) or a combination of both, which is suitable in order to access encoded video data, stored on a file server.

[0060] Способы для предсказания вектора движения, в соответствии с примерами этого раскрытия, могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как передачи телевизионного вещания, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для хранения на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или других приложениях. В некоторых примерах система 10 может конфигурироваться, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.[0060] Methods for predicting a motion vector, in accordance with examples of this disclosure, can be applied to video encoding in support of any of a variety of multimedia applications, such as television broadcasts, cable television, satellite television, video streaming, for example, over the Internet, encoding digital video for storage on a storage medium, decoding a digital video stored on a storage medium, or other applications. In some examples, system 10 may be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.

[0061] В примере на фиг. 2 устройство-источник 12 включает в себя видео источник 18, видео кодер 20, модулятор/демодулятор 22 и передатчик 24. В исходном устройстве 12 видео источник 18 может включать в себя источник, такой как устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео, чтобы принять видео от поставщика видео контента, и/или систему компьютерной графики для того, чтобы генерировать данные компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если видео источник 18 является видео камерой, устройство-источник 12 и устройство 14 назначения могут сформировать так называемые камерофоны или видео телефоны. Однако, способы, описанные в этом раскрытии, могут быть применимыми обычно к кодированию видео, и могут быть применены к беспроводным и/или проводным приложениям, или приложению, в котором кодированные видео данные хранятся на локальном диске.[0061] In the example of FIG. 2, source device 12 includes a video source 18, video encoder 20, modulator / demodulator 22, and transmitter 24. In source device 12, video source 18 may include a source, such as a video capture device, such as a video camera, video archive comprising previously captured video, a video feed interface for receiving video from a video content provider, and / or a computer graphics system in order to generate computer graphics data as source video, or a combination of such sources. As one example, if the video source 18 is a video camera, the source device 12 and the destination device 14 can form so-called camera phones or video phones. However, the methods described in this disclosure may be applicable generally to video encoding, and may be applied to wireless and / or wired applications, or an application in which encoded video data is stored on a local disk.

[0062] Захваченное, предварительно захваченное, или генерируемое компьютером видео может быть закодировано видео кодером 20. Кодированная видео информация может модулироваться модемом 22 согласно стандарту связи, такому как протокол беспроводной связи, и передана на устройство 14 назначения через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для того, чтобы передавать данные, включая усилители, фильтры и одну или более антенн.[0062] Captured, pre-captured, or computer generated video may be encoded by video encoder 20. The encoded video information may be modulated by modem 22 according to a communication standard, such as a wireless communication protocol, and transmitted to destination device 14 via transmitter 24. Modem 22 may include various mixers, filters, amplifiers or other components designed to modulate the signal. The transmitter 24 may include circuits designed to transmit data, including amplifiers, filters, and one or more antennas.

[0063] Захваченное, предварительно захваченное, или генерируемое компьютером видео, которое кодировано видео кодером 20, может также быть сохранено на носителе данных 34 или файловом сервере 36 для более позднего использования. Носитель данных 34 может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память, или любые другие подходящие цифровые носители данных для того, чтобы хранить кодированное видео. К кодированному видео, сохраненному на носителе данных 34, может затем получить доступ устройство 14 назначения для декодирования и воспроизведения.[0063] Captured, pre-captured, or computer generated video that is encoded by video encoder 20 may also be stored on a storage medium 34 or file server 36 for later use. The storage medium 34 may include Blu-ray discs, DVDs, CD-ROMs, flash memory, or any other suitable digital storage media in order to store encoded video. The encoded video stored on the storage medium 34 can then be accessed by the destination device 14 for decoding and playback.

[0064] Файловый сервер 36 может быть любым типом сервера, способного к хранению кодированного видео и передаче этого кодированного видео на устройство 14 назначения. Файловые серверы в качестве примера включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства сетевых систем хранения (NAS), локальный дисковый накопитель, или любой другой тип устройства, способного к тому, чтобы хранить закодированные видео данные и передавать его на устройство назначения. Передача закодированных видео данных от файлового сервера 36 может быть потоковой передачей, передачей загрузки или комбинацией обеих. К файловому серверу 36 может получить доступ устройство 14 назначения через любое стандартное соединение данных, включая интернет-соединение. Оно может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB, и т.д.), или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере.[0064] File server 36 may be any type of server capable of storing encoded video and transmitting this encoded video to destination device 14. Example file servers include a web server (e.g. for a website), an FTP server, network attached storage (NAS) devices, a local disk drive, or any other type of device capable of storing encoded video data and transmitting him to the destination device. Transmission of encoded video data from file server 36 may be streaming, download transfer, or a combination of both. The file server 36 can be accessed by the destination device 14 through any standard data connection, including an Internet connection. It can include a wireless channel (e.g. Wi-Fi connection), a wired connection (e.g. DSL, cable modem, Ethernet, USB, etc.), or a combination of both that is suitable for access to encoded video data stored on a file server.

[0065] Устройство 14 назначения в примере на фиг. 2 включает в себя приемник 26, модем 28, видео декодер 30 и устройство 32 отображения. Приемник 26 из устройства 14 назначения принимают информацию по каналу 16, и модем 28 демодулирует информацию, чтобы сформировать демодулированный поток битов для видео декодера 30. Информация, переданная по каналу 16, может включать в себя разнообразную информацию синтаксиса, генерируемую видео кодером 20 для использования видео декодером 30 при декодировании видео данных. Такой синтаксис может также быть включен с закодированными видео данными, хранящимися на носителе данных 34 или файловом сервере 36. Каждый видео кодер 20 и видео декодер 30 может являться частью соответствующего декодера-кодера (кодек), который способен к кодированию или декодированию видео данных.[0065] The destination device 14 in the example of FIG. 2 includes a receiver 26, a modem 28, a video decoder 30, and a display device 32. A receiver 26 from destination device 14 receives information on channel 16, and modem 28 demodulates the information to form a demodulated bitstream for video decoder 30. Information transmitted on channel 16 may include various syntax information generated by video encoder 20 for using video decoder 30 when decoding video data. Such syntax may also be included with encoded video data stored on a storage medium 34 or file server 36. Each video encoder 20 and video decoder 30 may be part of a corresponding decoder-encoder (codec) that is capable of encoding or decoding video data.

[0066] Устройство 32 отображения может интегрироваться с, или быть внешним к, устройству 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также конфигурироваться, чтобы соединяться с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. Обычно, устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.[0066] The display device 32 may integrate with, or be external to, the destination device 14. In some examples, the destination device 14 may include an integrated display device and also be configured to connect to an external display device. In other examples, the destination device 14 may be a display device. Typically, the display device 32 displays the decoded video data to the user, and 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.

[0067] В примере на фиг. 2 канал связи 16 может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотного (РЧ) спектра или одну или более физических линий передачи, или любую комбинацию беспроводного и проводного носителей. Канал связи 16 может являться частью основанной на передаче пакетов сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Канал связи 16 обычно представляет любой подходящий коммуникационный носитель, или коллекцию различных коммуникационных носителей, для того, чтобы передавать видео данные от исходного устройства 12 на устройство 14 назначения, включая любую подходящую комбинацию проводного или беспроводного носителей. Канал связи 16 может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.[0067] In the example of FIG. 2, communication channel 16 may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired media. Communication channel 16 may be part of a packet-based network, such as a local area network, a regional network, or a wide area network, such as the Internet. Communication channel 16 typically represents any suitable communication medium, or collection of various communication media, in order to transmit video data from source device 12 to destination device 14, including any suitable combination of wired or wireless media. Communication channel 16 may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from source device 12 to destination device 14.

[0068] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт высокоэффективного кодирования видео (HEVC) находящегося в развитии, и могут соответствовать Тестовой Модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширениям таких стандартов. Способы этого раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.[0068] Video encoder 20 and video decoder 30 may operate according to a video compression standard, such as the high-performance video encoding standard (HEVC) being developed, and may conform to the HEVC Test Model (HM). Alternatively, video encoder 20 and video decoder 30 may operate according to other proprietary or industry standards, such as ITU-T H.264, alternatively called MPEG-4, Part 10, Advanced Video Encoding (AVC), or extensions to such standards . The methods of this disclosure, however, are not limited to any particular coding standard. Other examples include MPEG-2 and ITU-T H.263.

[0069] Хотя не показано на фиг. 2, в некоторых аспектных видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексоров-демультиплексоров), или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).[0069] Although not shown in FIG. 2, in some aspects, video encoder 20 and video decoder 30 may each integrate with an audio encoder and decoder, and may include respective MUX-DEMUX (multiplexer-demultiplexer) units, or other hardware and software to perform encoding as audio and video in the general data stream or in separate data streams. If applicable, the MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols, such as the user datagram protocol (UDP).

[0070] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSPs), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Когда способы реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрированным как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.[0070] Video encoder 20 and video decoder 30 can each be implemented as any of a variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSPs), specialized integrated circuits (ASICs), field programmable gate arrays (FPGAs) , discrete logic, software, hardware, firmware, or any combination thereof. When the methods are implemented in part in software, the device may store instructions for the software in a suitable non-transitory computer-readable medium and execute instructions in the hardware using one or more processors to perform the methods of the present disclosure. Each of video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (codec) in a corresponding device.

[0071] Видео кодер 20 может реализовать любые из способов этого раскрытия для предсказания вектора движения в процессе кодирования видео. Аналогично, видео декодер 30 может реализовать любой или все из этих способов предсказания вектора движения в процессе кодирования видео. Видео кодер, как описано в этом раскрытии, может относиться к видео кодеру или видео декодеру. Точно так же, устройство кодирования видео может относиться к видео кодеру или видео декодеру. Аналогично, кодирование видео может относиться к кодированию видео или декодированию видео.[0071] Video encoder 20 may implement any of the methods of this disclosure for predicting a motion vector in a video encoding process. Similarly, video decoder 30 may implement any or all of these methods for predicting a motion vector in a video encoding process. A video encoder, as described in this disclosure, may refer to a video encoder or video decoder. Similarly, a video encoding device may refer to a video encoder or video decoder. Similarly, video encoding may relate to video encoding or video decoding.

[0072] В одном примере раскрытия видео кодер 20 из исходного устройства 12 могут конфигурироваться, чтобы определить один из множества режимов для процесса предсказания вектора движения, и выполнить процесс предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов.[0072] In one disclosure example, video encoder 20 from source device 12 may be configured to determine one of a plurality of modes for the motion vector prediction process, and perform the motion vector prediction process for the current video data block using a specific mode and a set of candidate blocks, in which the set of candidate blocks is the same for each of the many modes.

[0073] В другом примере раскрытия видео кодер 20 из исходного устройства 12 может конфигурироваться, чтобы определить один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и выполнить процесс предсказания вектора движения для текущего блока, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, и в котором дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен.[0073] In another disclosure example, video encoder 20 from source device 12 may be configured to determine one of a plurality of modes for a motion vector prediction process for a current block of video data, and perform a motion vector prediction process for a current block using a specific mode and set of blocks candidates, in which the set of candidate blocks is the same for each of the multiple modes, and in which one candidate block in the set of candidate blocks is defined as an additional candidate block, and in Oromo additional candidate block is used if the other of the set of candidate blocks of the candidate blocks is unavailable.

[0074] В другом примере раскрытия видео декодер 30 из устройства 14 назначения может конфигурироваться, чтобы принимать элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и принимать индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.[0074] In another disclosure example, the video decoder 30 from the destination device 14 may be configured to receive a syntax element indicating one of a plurality of modes for the motion vector prediction process for the current block of video data, and receive an index indicating a candidate block from the set of blocks - candidates, in which the set of candidate blocks is the same for each of the multiple modes, and in which the information associated with the candidate block is used to decode the motion vector for the current block .

[0075] В другом примере раскрытия видео декодер 30 из устройства 14 назначения может конфигурироваться, чтобы принимать элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и принимать индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, при этом этот дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.[0075] In another disclosure example, the video decoder 30 from the destination device 14 may be configured to receive a syntax element indicating one of a plurality of modes for the motion vector prediction process for the current block of video data, and receive an index indicating a candidate block from the set of blocks - candidates, in which the set of candidate blocks is the same for each of the many modes, in which one candidate block in the set of candidate blocks is defined as an additional candidate block, this additional ny candidate block is used if the other of the set of candidate blocks of the candidate blocks is unavailable and wherein the information associated with the candidate block, is used to decode the motion vector for the current block.

[0076] Фиг. 3 является блок-схемой, иллюстрирующей пример видео кодера 20, который может использовать способы для предсказания вектора движения, как описано в этом раскрытии. Видео кодер 20 будет описан в контексте кодирования HEVC в целях иллюстрации, но без ограничения этого раскрытия относительно других стандартов или способов кодирования, которые могут потребовать сканирования коэффициентов преобразования. Видео кодер 20 может выполнять внутреннее и внешнее кодирование единиц CU в пределах видео кадров. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео данных в пределах заданного видео кадра. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность между текущим кадром и ранее закодированными кадрами видео последовательности. Внутренний режим (I-режим) может относиться к любому из нескольких на основании пространственном сжатии режимов видео. Внешние режимы, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим) могут относиться к любому из нескольких на основании временном сжатии режимов видео.[0076] FIG. 3 is a flowchart illustrating an example of a video encoder 20 that can use methods for predicting a motion vector, as described in this disclosure. Video encoder 20 will be described in the context of HEVC coding for purposes of illustration, but without limiting this disclosure, to other coding standards or methods that may require scanning of transform coefficients. Video encoder 20 may perform internal and external encoding of CU units within video frames. Internal coding relies on spatial prediction to reduce or remove spatial redundancy in video data within a given video frame. External coding relies on temporal prediction to reduce or remove temporal redundancy between the current frame and previously encoded frames of the video sequence. The internal mode (I-mode) may refer to any of several based on the spatial compression of video modes. External modes such as unidirectional prediction (P-mode) or bidirectional prediction (B-mode) may refer to any of several based on temporal compression of video modes.

[0077] Как показано на фиг. 3, видео кодер 20 принимает текущий видео блок в пределах видео кадра, который должен быть закодирован. В примере на фиг.3 видео кодер 20 включает в себя блок 44 компенсации движения, блок 42 оценки движения, блок 46 внутреннего предсказания, буфер 64 опорных кадров, сумматор 50, модуль 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Модуль 52 преобразования, иллюстрированный на фиг. 3, является структурой или устройством, которое применяет фактическое преобразование или комбинацию преобразований к блоку остаточных данных, и не должно быть перепутано с блоком коэффициентов преобразования, который может упоминаться как единица преобразования (TU) в CU. Для реконструкции блока видео, видео кодер 20 также включает в себя блок 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 3) может также быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности типично может фильтровать выходной сигнал сумматора 62.[0077] As shown in FIG. 3, the video encoder 20 receives the current video block within the video frame to be encoded. In the example of FIG. 3, video encoder 20 includes a motion compensation unit 44, a motion estimation unit 42, an intra prediction unit 46, a reference frame buffer 64, an adder 50, a transform unit 52, a quantization unit 54, and an entropy encoding unit 56. The conversion module 52 illustrated in FIG. 3 is a structure or device that applies an actual transform or combination of transforms to a residual data block, and should not be confused with a transform coefficient block, which may be referred to as a transform unit (TU) in a CU. To reconstruct a video block, video encoder 20 also includes an inverse quantization block 58, an inverse transform module 60, and an adder 62. A deblocking filter (not shown in FIG. 3) may also be included to filter the block boundaries to remove blocking artifacts from the recovered video. If desired, the deblocking filter may typically filter the output of the adder 62.

[0078] Во время процесса кодирования видео кодер 20 принимает видео кадр или вырезку, которая должна быть закодирована. Кадр или вырезка могут быть разделены на множественные видео блоки, например, наибольшие единицы кодирования (LCUs). Блок 42 оценки движения и блок 44 компенсации движения выполняют внешнее предсказывающее кодирование принятого видео блока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Блок 46 внутреннего предсказания может выполнить внутреннее предсказывающее кодирование принятого видео блока относительно одного или более соседних блоков в том же самом кадре или вырезке как блока, который должен быть закодирован, чтобы обеспечить пространственное сжатие.[0078] During the video encoding process, the encoder 20 receives a video frame or clip to be encoded. A frame or clip can be divided into multiple video blocks, for example, largest coding units (LCUs). The motion estimation unit 42 and the motion compensation unit 44 perform external predictive coding of the received video block relative to one or more blocks in one or more reference frames to provide temporal compression. The intra prediction unit 46 may perform intra predictive coding of the received video block relative to one or more neighboring blocks in the same frame or clipping as the block to be encoded to provide spatial compression.

[0079] Блок 40 выбора режима может выбрать один из режимов кодирования, внутреннее или внешнее, например, на основании результатов ошибки (то есть, искажения) для каждого режима, и выдает результирующий внутренне или внешне предсказанный блок (например, единицу предсказания (PU)) к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в опорном кадре. Сумматор 62 объединяет предсказанный блок с обратно квантованными обратно преобразованными данными из модуля 60 обратного преобразования для этого блока, чтобы восстановить закодированный блок, как описано более подробно ниже. Некоторые видео кадры могут определяться как I-кадры, где все блоки в I-кадре кодированы в режиме внутреннего предсказания. В некоторых случаях блок 46 внутреннего предсказания может выполнить кодирование с внутренним предсказанием блока в P- или B-кадре, например, когда поиск движения, выполненный блоком 42 оценки движения, не приводит к достаточному предсказанию блока.[0079] The mode selection unit 40 may select one of the encoding modes, internal or external, for example, based on error results (that is, distortion) for each mode, and outputs a resulting internally or externally predicted unit (eg, a prediction unit (PU) ) to adder 50 to generate residual block data, and to adder 62 to restore the encoded block for use in the reference frame. An adder 62 combines the predicted block with the inverse quantized inverse transformed data from the inverse transform unit 60 for that block to recover the encoded block, as described in more detail below. Some video frames can be defined as I-frames, where all blocks in the I-frame are encoded in intra-prediction mode. In some cases, intra prediction block 46 may perform intra prediction coding of the block in a P or B frame, for example, when the motion search performed by motion estimation block 42 does not lead to sufficient block prediction.

[0080] Блок 42 оценки движения и блок 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы по отдельности в концептуальных целях. Оценка движения (или поиск движения) является процессом генерирования векторов движения, которые оценивают движение для видео блоков. Вектор движения, например, может указывать смещение блока предсказания в текущем кадре относительно опорной выборки опорного кадра. Блок 42 оценки движения вычисляет вектор движения для блока предсказания внешне кодированного кадра, сравнивая блок предсказания с опорными выборками опорного кадра, сохраненного в буфере 64 опорных кадров. Опорная выборка может быть блоком, который, как находят, близко соответствует части CU, включая PU, кодированной в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками разности. Опорная выборка может находиться где-нибудь в пределах опорного кадра или опорной вырезки. В некоторых примерах опорная выборка может находиться во фракционном местоположении пикселя.[0080] The motion estimation unit 42 and the motion compensation unit 44 may be highly integrated, but individually illustrated for conceptual purposes. Motion estimation (or motion search) is the process of generating motion vectors that evaluate motion for video blocks. The motion vector, for example, may indicate the offset of the prediction block in the current frame relative to the reference sample of the reference frame. Motion estimation unit 42 calculates a motion vector for an externally encoded frame prediction block by comparing the prediction block with reference samples of a reference frame stored in the reference frame buffer 64. The reference sample may be a block that is found to closely match the portion of the CU, including the PU, encoded in terms of pixel difference, which can be determined by the sum of the absolute differences (SAD), the sum of the differences of the squares (SSD), or other difference metrics. The reference sample may be anywhere within the reference frame or reference clipping. In some examples, the reference sample may be in the fractional location of a pixel.

[0081] Часть опорного кадра, идентифицированная вектором движения, может упоминаться как опорная выборка. Блок 44 компенсации движения может вычислить значение предсказания для единицы предсказания текущей CU, например, извлекая опорную выборку, идентифицированную вектором движения для PU. В некоторых способах кодирования видео блок 42 оценки движения посылает вычисленные вектор движения, опорный кадр и направление предсказания (то есть, направление в терминах того, предшествует ли опорный кадр во времени или следует за текущим кадром) к блоку 56 энтропийного кодирования и блоку 44 компенсации движения. Другие способы кодирования видео используют процесс предсказания вектора движения, чтобы кодировать вектор движения. Процесс предсказания вектора движения может быть выбран из числа множества режимов, включая режим слияния и режим AMVP.[0081] The portion of the reference frame identified by the motion vector may be referred to as a reference sample. Motion compensation unit 44 may calculate a prediction value for the prediction unit of the current CU, for example, by extracting a reference sample identified by a motion vector for the PU. In some video encoding methods, the motion estimation block 42 sends the calculated motion vector, reference frame, and prediction direction (i.e., the direction in terms of whether the reference frame precedes or follows the current frame) to entropy encoding block 56 and motion compensation block 44 . Other video encoding methods use a motion vector prediction process to encode a motion vector. The motion vector prediction process can be selected from among a variety of modes, including merge mode and AMVP mode.

[0082] В режиме слияния кодер рассматривает набор блоков-кандидатов и выбирает блок, который имеет те же самые (или наиболее близко соответствует), вектор движения, опорный кадр и направление предсказания, что и текущий блок. Это достигают проверкой каждого блока-кандидата по очереди и выбирая тот, который приводит к наилучшей эффективности «скорость передачи - искажение», как только его вектор движения, опорный кадр и направление предсказания скопированы в текущий блок. Затем, вместо того, чтобы сигнализировать эту информацию вектора движения (то есть, вектор движения, опорный кадр и направление предсказания) в закодированном видео потоке битов, кодер сигнализирует номер индекса для выбранного блока-кандидата. Декодер может скопировать информацию вектора движения из блока-кандидата, указанного сигнализированным индексом, и использовать скопированную информацию вектора движения для текущего блока. Фиг. 4A показывает пример сигнализации режима слияния. Флаг 201 слияния указывает, что используется режим слияния. Индекс 202 блока-кандидата указывает, какой из блоков-кандидатов из набора блоков-кандидатов, определенных для режима слияния, должен использоваться, чтобы извлечь информацию вектора движения для текущего блока.[0082] In merge mode, the encoder considers a set of candidate blocks and selects a block that has the same (or most closely matches), motion vector, reference frame, and prediction direction as the current block. This is achieved by checking each candidate block in turn and choosing the one that leads to the best transmission rate - distortion efficiency as soon as its motion vector, reference frame, and prediction direction are copied to the current block. Then, instead of signaling this motion vector information (i.e., motion vector, reference frame and prediction direction) in the encoded video bit stream, the encoder signals the index number for the selected candidate block. The decoder can copy the motion vector information from the candidate block indicated by the signaling index, and use the copied motion vector information for the current block. FIG. 4A shows an example of merge mode signaling. A merge flag 201 indicates that a merge mode is being used. The candidate block index 202 indicates which of the candidate blocks from the set of candidate blocks defined for the merge mode should be used to extract motion vector information for the current block.

[0083] Нужно отметить, что в некоторых случаях, чтобы удовлетворить конкретному количеству кандидатов для набора кандидатов режима слияния, некоторая "искусственная" информация вектора движения может генерироваться, чтобы заполнить набор кандидатов. Эта "искусственная" информация вектора движения может генерироваться с помощью частичных комбинаций информации вектора движения из различных блоков-кандидатов. Например, вектор движения Списка 0 из блока- кандидата 1 может быть объединен с вектором движения Списка 1 из кандидата 2, вместе с индексом опорного кадра и направлением предсказания, чтобы сформировать новую информацию вектора движения в наборе кандидатов. В некоторых других примерах могут также быть добавлены нулевые вектора движения в качестве дополнительной информации вектора движения, чтобы заполнить набор кандидатов. Однако, независимо от того, как набор кандидатов сформирован, в режиме слияния только индекс в наборе кандидата должен быть сигнализирован к декодеру, чтобы указать, какой кандидат выбран, чтобы предоставить информацию вектора движения для текущего блока. На стороне декодера формируется тот же набор кандидатов, и информация вектора движения может быть идентифицирована через сигнализированный индекс в набор кандидатов.[0083] It should be noted that in some cases, in order to satisfy a specific number of candidates for a set of merge mode candidates, some “artificial” motion vector information may be generated to populate the set of candidates. This “artificial” motion vector information can be generated using partial combinations of motion vector information from various candidate blocks. For example, the motion vector of List 0 from candidate block 1 can be combined with the motion vector of List 1 from candidate 2, together with the reference frame index and prediction direction, to generate new motion vector information in the candidate set. In some other examples, null motion vectors may also be added as additional motion vector information to populate the candidate set. However, no matter how the candidate set is formed, in the merge mode only the index in the candidate set should be signaled to the decoder to indicate which candidate is selected to provide motion vector information for the current block. The same set of candidates is formed on the decoder side, and the motion vector information can be identified through the signalized index into the set of candidates.

[0084] В режиме AMVP кодер рассматривает набор блоков-кандидатов и выбирает блок, который формирует разность векторов движения (то есть, разность между вектором движения соответствующего блока-кандидата и фактическим вектором движения текущего блока), которая приводит к наилучшему значению «искажение - скорость передачи» или удовлетворяет некоторому заранее определенному порогу (например, порогу «искажение - скорость передачи»). Режим AMVP может рассмотреть блоки-кандидаты в шаблоне проверки, пока удовлетворительный кандидат не будет найден и выбран. Альтернативно, в некоторых примерах все блоки-кандидаты могут быть проверены, и блок-кандидат, приводящий к лучшему результату, выбран как MVP для блока, который должен быть закодирован. Кодер может затем сигнализировать индекс для блока-кандидата, использованного для формирования разности векторов движения, наряду с разностью векторов движения. Декодер может затем обновить вектор движения для текущего блока, суммируя принятую разность векторов движения с вектором движения, извлеченным из блока-кандидата, указанного сигнализированным индексом. Фиг. 4B показывает пример сигнализации режима AMVP. Флаг 205 режима AMVP указывает, что используется режим AMVP. Индекс 206 блока-кандидата указывает, какой из блоков-кандидатов из набора блоков-кандидатов, определенных для режима AMVP, должен использоваться, чтобы извлечь вектор движения. Режим AMVP также сигнализирует разность 207 векторов движения, опорный кадр 208 и направление предсказания 209. В некоторых примерах вместо того, чтобы явно сигнализировать опорный кадр и направление предсказания, опорный кадр и направление предсказания вместо этого извлекают из информации вектора движения, ассоциированной с блоком-кандидатом.[0084] In AMVP mode, the encoder considers a set of candidate blocks and selects a block that generates the difference of the motion vectors (that is, the difference between the motion vector of the corresponding candidate block and the actual motion vector of the current block), which leads to the best value "distortion - speed transmission "or satisfies some predetermined threshold (for example, the threshold" distortion - transmission speed "). AMVP mode may consider candidate blocks in a validation pattern until a satisfactory candidate is found and selected. Alternatively, in some examples, all candidate blocks can be checked, and the candidate block leading to the best result is selected as MVP for the block to be encoded. The encoder may then signal the index for the candidate block used to form the difference of the motion vectors, along with the difference of the motion vectors. The decoder can then update the motion vector for the current block by summing the received motion vector difference with the motion vector extracted from the candidate block indicated by the signaling index. FIG. 4B shows an example of AMVP mode signaling. The AMVP mode flag 205 indicates that AMVP mode is being used. The candidate block index 206 indicates which of the candidate blocks from the set of candidate blocks defined for the AMVP mode should be used to extract the motion vector. The AMVP mode also signals the difference of 207 motion vectors, the reference frame 208 and the prediction direction 209. In some examples, instead of explicitly signaling the reference frame and the prediction direction, the reference frame and the prediction direction are instead extracted from the motion vector information associated with the candidate block .

[0085] В примерах, описанных выше, сигнализация информации вектора движения в закодированном потоке битов не требует передачи в реальном времени таких элементов от кодера к декодеру, а вместо этого означает, что такая информация закодирована в поток битов и сделана доступной для декодера любым способом. Это может включать в себя передачу в реальном времени (например, в видео конференц-связи), так же как сохранение закодированного потока битов на считываемом компьютером носителе для будущего использования декодером (например, в потоковой передаче, загрузке, дисковом доступе, доступе к карте, DVD, Blu-ray, и т.д.).[0085] In the examples described above, signaling motion vector information in an encoded bit stream does not require real-time transmission of such elements from an encoder to a decoder, but instead means that such information is encoded in a bit stream and made available to the decoder in any way. This may include real-time transmission (e.g., in video conferencing), as well as storing the encoded bit stream on computer-readable media for future use by the decoder (e.g., in streaming, downloading, disk access, card access, DVD, Blu-ray, etc.).

[0086] В соответствии с примерами этого раскрытия режим слияния и режим AMVP используют один и тот же набор блоков-кандидатов (то есть, и в терминах количества и в терминах местоположения блоков). Также, и кодер и декодер могут уменьшить объем памяти, необходимый для хранения информации вектора движения для блоков-кандидатов. Это может также уменьшить требование полосы пропускания памяти при восстановлении таких векторов движения во время процесса кодирования текущего блока.[0086] In accordance with examples of this disclosure, the merge mode and AMVP mode use the same set of candidate blocks (that is, in terms of quantity and in terms of block location). Also, both the encoder and the decoder can reduce the amount of memory needed to store motion vector information for candidate blocks. It can also reduce the memory bandwidth requirement when recovering such motion vectors during the encoding process of the current block.

[0087] В первом примере раскрытия режим слияния и режим AMVP оба используют один и тот же набор 120 блоков-кандидатов, показанный на фиг. 5A. В этом примере режим слияния теперь будет использовать шесть блоков-кандидатов вместо пяти. Однако, общее количество блоков-кандидатов и для режима слияния и для режима AMVP уменьшено, поскольку оба режима используют блоки-кандидаты в одних и тех же местоположениях. В этом примере блоки-кандидаты находятся в нижней левой (BL) 121, левой (L) 122, левой верхней (LA) 125, верхней (A) 124, правой верхней (RA) 123, и временный (T) 126 позициях, как показано на фиг. 5A. В этом примере левый блок-кандидат 122 является смежным с левым краем текущего блока 127. Нижний край левого блока 122 выровнен с нижним краем текущего блока 127. Вышеупомянутый блок 124 является смежным с верхним краем текущего блока 127. Правый край вышеупомянутого блока 124 выровнен с правым краем текущего блока 127.[0087] In the first disclosure example, the merge mode and the AMVP mode both use the same set of candidate blocks 120 shown in FIG. 5A. In this example, the merge mode will now use six candidate blocks instead of five. However, the total number of candidate blocks for both the merge mode and the AMVP mode is reduced, since both modes use candidate blocks at the same locations. In this example, candidate blocks are in the lower left (BL) 121, left (L) 122, left upper (LA) 125, upper (A) 124, upper right (RA) 123, and temporary (T) 126 positions, as shown in FIG. 5A. In this example, the left candidate block 122 is adjacent to the left edge of the current block 127. The lower edge of the left block 122 is aligned with the lower edge of the current block 127. The above block 124 is adjacent to the upper edge of the current block 127. The right edge of the above block 124 is aligned with the right edge of the current block 127.

[0088] Во втором примере раскрытия режим AMVP и режим слияния используют набор 130 блоков-кандидатов, показанный на фиг. 5B. В этом примере количество блоков-кандидатов для режима AMVP сокращено до 5. Дальнейшее сокращение блоков-кандидатов достигнуто, так как и режим слияния и режим AMVP теперь используют блоки-кандидаты в одних и тех же местоположениях. В этом примере блоки-кандидаты находятся в нижем левом (BL) 131, левом (L) 132, верхнем (A) 134, правом верхнем (RA) 133, и временном (T) 135 местоположениях. Следует отметить, что местоположения вышеупомянутого блока 134 и левого блока 132 отличаются от местоположений вышеупомянутого блока 124 и левого блока 122 в примере на фиг. 5A. В этом примере левый блок-кандидат 132 является смежным с левым краем текущего блока 137. Верхний край левого блока 132 выровнен с верхним краем текущего блока 137. Вышеупомянутый блок 134 является смежным с верхним краем текущего блока 137. Левый край вышеупомянутого блока 134 выровнен с левым краем текущего блока 137. В одном примере шаблон проверки для режима AMVP является следующим: BL-L-RA-T.[0088] In the second disclosure example, the AMVP mode and the merge mode use the set of candidate blocks 130 shown in FIG. 5B. In this example, the number of candidate blocks for AMVP mode has been reduced to 5. Further reduction of candidate blocks has been achieved since both merge mode and AMVP mode now use candidate blocks at the same locations. In this example, candidate blocks are located in the lower left (BL) 131, left (L) 132, upper (A) 134, upper right (RA) 133, and temporary (T) 135 locations. It should be noted that the locations of the above block 134 and the left block 132 are different from the locations of the above block 124 and the left block 122 in the example of FIG. 5A. In this example, the left candidate block 132 is adjacent to the left edge of the current block 137. The upper edge of the left block 132 is aligned with the upper edge of the current block 137. The above block 134 is adjacent to the upper edge of the current block 137. The left edge of the above block 134 is aligned with the left the edge of the current block 137. In one example, the check pattern for AMVP mode is as follows: BL-L-RA-T.

[0089] В третьем примере раскрытия режим слияния и режим AMVP используют набор 140 блоков-кандидатов, показанный на фиг. 6. В этом примере сокращено количество блоков-кандидатов; оба уменьшая общее количество для каждого режима до 5, а также объединяя местоположения блоков-кандидатов для обоих режимов. В этом примере блоки-кандидаты находятся в нижем левом (BL) 141, левом (L) 142, верхнем (A) 143, правом верхнем (RA) 144, и временном (T) 145. В этом примере левый блок-кандидат 142 является смежным с левым краем текущего блока 147. Нижний край левого блока 142 выровнен с нижним краем текущего блока 147. Вышеупомянутый блок 143 является смежным с верхним краем текущего блока 147. Правый край вышеупомянутого блока 143 выровнен с правым краем текущего блока 147.[0089] In the third disclosure example, the merge mode and the AMVP mode use the candidate block set 140 shown in FIG. 6. In this example, the number of candidate blocks has been reduced; both reducing the total for each mode to 5, and also combining the locations of the candidate blocks for both modes. In this example, the candidate blocks are in the lower left (BL) 141, left (L) 142, upper (A) 143, upper right (RA) 144, and temporary (T) 145. In this example, the left candidate block 142 is adjacent to the left edge of the current block 147. The lower edge of the left block 142 is aligned with the lower edge of the current block 147. The above block 143 is adjacent to the upper edge of the current block 147. The right edge of the above block 143 is aligned with the right edge of the current block 147.

[0090] В другом примере раскрытие описывает улучшенный шаблон проверки для режима AMVP. Как показано на фиг. 7, например, шаблон проверки является следующим: L-BL-A-RA-LA-T. Вместо того, чтобы начинаться в блоке-кандидате BL, как показано на фиг. 1A, пример на фиг. 7 начинается в блоке-кандидате L. Блоки с левой стороны обычно более коррелированы к текущему блоку, поскольку видео контент типично перемещается в горизонтальном направлении. Блок-кандидат L проверяется первым, так как блок-кандидат BL может быть не доступен (то есть, возможно, не был уже закодирован) во всех ситуациях. Кроме того, блок-кандидат А проверяется перед блоком-кандидатом RA, так как вектор движения блока-кандидата А, как было показано, имеет более высокую статистическую корреляцию к вектору движения текущего блока, чем таковой блока-кандидата RA.[0090] In another example, the disclosure describes an improved verification pattern for AMVP mode. As shown in FIG. 7, for example, the verification pattern is as follows: L-BL-A-RA-LA-T. Instead of starting at the BL candidate block, as shown in FIG. 1A, the example of FIG. 7 starts at candidate block L. The blocks on the left side are usually more correlated to the current block, since video content typically moves horizontally. The candidate block L is checked first, since the candidate block BL may not be available (that is, it may not have already been encoded) in all situations. In addition, candidate block A is checked before the candidate block RA, since the motion vector of block candidate A has been shown to have a higher statistical correlation to the motion vector of the current block than that of the candidate block RA.

[0091] Режим слияния может использовать один и тот же шаблон проверки, показанный на фиг. 7, или может использовать разный шаблон проверки. В качестве одного примера, шаблон проверки для режима слияния может являться следующим: L-A-RA-BL-(LA)-T. В этом примере включение блока LA является необязательным или адаптивным в зависимости от того, если один из первых четырех блоков-кандидатов недоступен.[0091] The merge mode may use the same validation pattern shown in FIG. 7, or may use a different validation pattern. As one example, a check pattern for a merge mode may be as follows: L-A-RA-BL- (LA) -T. In this example, the inclusion of an LA block is optional or adaptive depending on if one of the first four candidate blocks is unavailable.

[0092] Пример на фиг. 7 показан в отношении набора блоков-кандидатов на фиг. 5A. Однако, этот шаблон проверки может быть применимым с любым набором кандидатов. Обычно левый блок-кандидат должен проверяется перед нижним левым блоком-кандидатом. Затем вышеупомянутый блок-кандидат должен быть проверен перед правым верхним блоком-кандидатом. Любые оставшиеся блоки-кандидаты могут затем быть проверены в любом порядке. В некоторых примерах временный блок-кандидат может быть проверен последним.[0092] The example of FIG. 7 is shown with respect to a set of candidate blocks in FIG. 5A. However, this validation pattern may be applicable to any set of candidates. Usually the left candidate block should be checked before the lower left candidate block. Then, the above candidate block should be checked in front of the upper right candidate block. Any remaining candidate blocks can then be checked in any order. In some examples, the temporary candidate block may be checked last.

[0093] В другом примере раскрытия раскрыты гибкие дополнительные кандидаты и для режима слияния и режима AMVP. Как показано в примере на фиг. 5A, имеются пять пространственных блоков-кандидатов (то есть, L, BL, A, RA, и LA) и один временной блок-кандидат (то есть, T), для в общей сложности шести блоков-кандидатов. В предыдущем предложении к стандарту HEVC максимальное количество блоков-кандидатов для режима слияния равно пяти. Также, один из блоков-кандидатов, показанных на фиг. 5A, может быть удален для режима слияния. В одном примере блок-кандидат LA может быть определен как дополнительный блок-кандидат (то есть, он первоначально не рассматривается как часть набора блоков-кандидатов для режима слияния).[0093] In another example disclosure, flexible additional candidates are disclosed for both the merge mode and the AMVP mode. As shown in the example of FIG. 5A, there are five spatial candidate blocks (i.e., L, BL, A, RA, and LA) and one temporary candidate block (i.e., T), for a total of six candidate blocks. In the previous sentence to the HEVC standard, the maximum number of candidate blocks for the merge mode is five. Also, one of the candidate blocks shown in FIG. 5A may be deleted for merge mode. In one example, an LA candidate block can be defined as an additional candidate block (that is, it is not initially considered as part of a set of candidate blocks for the merge mode).

[0094] Однако, как упомянуто выше, не все блоки-кандидаты доступны во всех ситуациях. Например, блок-кандидат BL может быть еще не закодирован в то время, когда текущий блок кодируется. Кроме того, данные для некоторых блоков-кандидатов могут стать поврежденными или могут не быть приняты вообще (например, при декодировании в реальном времени). Также, настоящее раскрытие предлагает использовать дополнительные блоки-кандидаты в ситуациях, когда найдено, что блок-кандидат в наборе недоступен. Таким образом, общее количество кандидатов сохранено равным максимальному пределу, не тратя впустую проверку в отношении недоступного кандидата.[0094] However, as mentioned above, not all candidate blocks are available in all situations. For example, a BL candidate block may not yet be encoded while the current block is being encoded. In addition, the data for some candidate blocks may become corrupt or may not be received at all (for example, when decoding in real time). Also, the present disclosure proposes the use of additional candidate blocks in situations where it is found that the candidate block in the set is not available. Thus, the total number of candidates is kept equal to the maximum limit, without wasting a check on an inaccessible candidate.

[0095] В одном примере кандидаты L и BL сначала проверяются кодером или декодером, как применимые. Если один из этих блоков-кандидатов не является действительным (например, поврежден), или недоступен, дополнительный блок-кандидат (например, LA) может использоваться вместо него. Если оба блока-кандидата L и BL действительны, блоки-кандидаты A и RA проверяются. Если один из этих блоков-кандидатов не действителен или не доступен, блок-кандидат LA может использоваться вместо него. Если оба блока-кандидата A и RA будут действительны, то блок-кандидат LA не будет использоваться. В этом примере блок-кандидат LA используется как дополнительный блок-кандидат. Однако, любой дополнительный блок-кандидат в любой причинной позиции (то есть, в позиции, относительно текущего блока, где блок-кандидат был уже закодирован) относительно текущего блока может использоваться.[0095] In one example, candidates L and BL are first checked by an encoder or decoder, as applicable. If one of these candidate blocks is not valid (for example, damaged), or unavailable, an additional candidate block (for example, LA) can be used instead. If both candidate blocks L and BL are valid, candidate blocks A and RA are checked. If one of these candidate blocks is not valid or not available, the LA candidate block may be used instead. If both candidate blocks A and RA are valid, then candidate block LA will not be used. In this example, the block candidate LA is used as an additional block candidate. However, any additional candidate block at any causal position (i.e., at a position relative to the current block where the candidate block has already been encoded) relative to the current block can be used.

[0096] В другом примере будут использоваться все блоки-кандидаты, показанные на фиг. 5A. Для режима слияния, где максимальное количество блоков-кандидатов равно N (где N меньше чем 6), первые N доступных блоков-кандидатов в шаблоне проверки будут использоваться как блоки-кандидаты для режима слияния. В примере на фиг. 5A имеется шесть блоков-кандидатов с шаблоном проверки L-RA-BL-LA-T. Первые N доступных блоков-кандидатов в шаблоне проверки будут формировать финальный набор блоков-кандидатов для режима слияния. В этом примере шаблон проверки фиксирован. В другом примере шаблон проверки может быть выбран на основании размера блока, размера разделения и/или индекса разделения. В другом примере шаблон проверки может быть обновлен адаптивно во время кодирования и декодирования. Обновление может зависеть от индекса слияния, режима предсказания вектора движения, размера разделения, индекса разделения и/или информации вектора движения (например, опорный индекс, разность векторов движения, предсказатель вектора движения) ранее закодированных/декодированных блоков.[0096] In another example, all candidate blocks shown in FIG. 5A. For the merge mode, where the maximum number of candidate blocks is N (where N is less than 6), the first N available candidate blocks in the check pattern will be used as candidate blocks for the merge mode. In the example of FIG. 5A there are six candidate blocks with a validation pattern L-RA-BL-LA-T. The first N available candidate blocks in the test pattern will form the final set of candidate blocks for the merge mode. In this example, the validation pattern is fixed. In another example, a validation pattern may be selected based on block size, partition size, and / or partition index. In another example, the verification pattern may be updated adaptively during encoding and decoding. The update may depend on the merge index, motion vector prediction mode, separation size, separation index and / or motion vector information (e.g., reference index, motion vector difference, motion vector predictor) of previously encoded / decoded blocks.

[0097] Согласно другому примеру, способы использования дополнительного блока-кандидата могут быть также применены к режиму AMVP. Режим AMVP в текущем рабочем проекте стандарта HEVC уже учитывает проверку всех шести блоков-кандидатов, показанных на фиг. 5A. Однако, как упомянуто выше, некоторые из этих блоков-кандидатов могут быть недоступными или недействительными. В таком случае может быть определен дополнительный кандидат слияния. Такой кандидат слияния может быть в любой позиции, которая является причинной к текущей PU.[0097] According to another example, methods for using an additional candidate block can also be applied to AMVP mode. The AMVP mode in the current working draft of the HEVC standard already takes into account the verification of all six candidate blocks shown in FIG. 5A. However, as mentioned above, some of these candidate blocks may be unavailable or invalid. In such a case, an additional merger candidate may be determined. Such a merger candidate may be in any position that is causal to the current PU.

[0098] Возвращаясь к фиг. 3, блок 46 внутреннего предсказания может выполнить внутреннее предсказание в отношении принятого блока, как альтернатива внешнему предсказанию, выполненному блоком 42 оценки движения и блоком 44 компенсации движения. Блок 46 внутреннего предсказания может предсказать принятый блок относительно соседних, ранее кодированных блоков, например, блоков выше, выше и справа, выше и слева, или слева от текущего блока, принимая порядок кодирования слева направо сверху вниз для блоков. Блок 46 внутреннего предсказания может быть сконфигурирован с помощью множества различных режимов внутреннего предсказания. Например, блок 46 внутреннего предсказания может быть сконфигурирован с помощью некоторого числа направленных режимов предсказания, например, тридцатью четырех направленных режимов предсказания, на основании размера кодированной CU.[0098] Returning to FIG. 3, the intra prediction block 46 may perform intra prediction with respect to the received block, as an alternative to the inter prediction performed by the motion estimation block 42 and the motion compensation block 44. The intra prediction block 46 may predict the received block relative to neighboring, previously encoded blocks, for example, blocks above, above and to the right, above and to the left, or to the left of the current block, taking the coding order from left to right from top to bottom for the blocks. Block 46 intra prediction can be configured using many different modes of intra prediction. For example, intra prediction unit 46 may be configured using a number of directional prediction modes, for example, thirty-four directional prediction modes, based on the size of the encoded CU.

[0099] Блок 46 внутреннего предсказания может выбрать режим внутреннего предсказания, например, вычисляя значения ошибки предсказания для различных режимов внутреннего предсказания и выбирая режим, который приводит к самому низкому значению ошибки. Направленные режимы предсказания могут включать в себя функции для того, чтобы объединять значения пространственно соседних пикселей и применять объединенные значения к одной или более пиксельным позициям в PU. Как только значения для всех пиксельных позиций в PU были вычислены, блок 46 внутреннего предсказания может вычислить значение ошибки для режима предсказания на основании пиксельных разностей между вычисленными или предсказанными значениями PU и принятого первоначального блока, который должен быть кодирован. Блок 46 внутреннего предсказания может продолжить проверять режимы внутреннего предсказания до режима внутреннего предсказания, пока не будет обнаружено приемлемое значение ошибки. Блок 46 внутреннего предсказания может затем послать PU в сумматор 50.[0099] The intra prediction unit 46 may select an intra prediction mode, for example, calculating prediction error values for various intra prediction modes and selecting a mode that results in the lowest error value. Directional prediction modes may include functions to combine the values of spatially adjacent pixels and apply the combined values to one or more pixel positions in the PU. Once the values for all the pixel positions in the PU have been calculated, the intra prediction unit 46 may calculate the error value for the prediction mode based on the pixel differences between the calculated or predicted PU values and the received original block to be encoded. Inter prediction unit 46 may continue to check intra prediction modes to intra prediction mode until an acceptable error value is detected. Inter prediction unit 46 may then send the PU to adder 50.

[0100] Видео кодер 20 формирует остаточный блок, вычитая данные предсказания, вычисленные блоком 44 компенсации движения или блоком 46 внутреннего предсказания, из первоначального закодированного блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двумерной матрице значений пиксельной разности, где количество значений в остаточном блоке является таким же как количество пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, то есть, ошибке, между значениями совместно расположенных пикселей в PU и в первоначальном блоке, который должен быть закодирован. Такая операция применяется к компонентам и яркости и цветности, так что разности могут быть разностями цветности или яркости в зависимости от типа блока, который закодирован.[0100] Video encoder 20 generates a residual block by subtracting the prediction data calculated by the motion compensation block 44 or the intra prediction block 46 from the original encoded video block. The adder 50 represents the component or components that perform this subtraction operation. The residual block may correspond to a two-dimensional matrix of pixel difference values, where the number of values in the residual block is the same as the number of pixels in the PU corresponding to the residual block. The values in the residual block may correspond to the differences, that is, the error, between the values of the co-located pixels in the PU and in the original block to be encoded. Such an operation is applied to the components of both luminance and chrominance, so that the differences can be color or luminance differences depending on the type of block that is encoded.

[0101] Модуль 52 преобразования может сформировать одну или более единиц преобразования (единицы TU) из остаточного блока. Модуль 52 преобразования выбирает преобразование из числа множества преобразований. Преобразование может быть выбрано на основании одной или более характеристик кодирования, таких как размер блока, режим кодирования или подобное. Модуль 52 преобразования затем применяет выбранное преобразование к TU, производя видео блок, содержащий двумерный массив коэффициентов преобразования.[0101] Transformation unit 52 may generate one or more transformation units (TU units) from a residual block. Transform unit 52 selects a transform from among a plurality of transforms. The transform may be selected based on one or more encoding characteristics, such as block size, encoding mode, or the like. The transform unit 52 then applies the selected transform to the TU, producing a video block containing a two-dimensional array of transform coefficients.

[0102] Модуль 52 преобразования может послать результирующие коэффициенты преобразования в блок 54 квантования. Блок 54 квантования может затем квантовать коэффициенты преобразования. Блок 56 энтропийного кодирования может затем выполнить сканирование квантованных коэффициентов преобразования в матрице согласно режиму сканирования. Настоящее раскрытие описывает блок 56 энтропийного кодирования как выполняющий сканирование. Однако, нужно подразумевать, что в других примерах другие блоки обработки, такие как блок 54 квантования, могут выполнить сканирование.[0102] The transform unit 52 may send the resulting transform coefficients to quantization unit 54. The quantization unit 54 may then quantize the transform coefficients. Entropy coding unit 56 may then scan the quantized transform coefficients in the matrix according to the scanning mode. The present disclosure describes entropy encoding unit 56 as performing a scan. However, it should be understood that in other examples, other processing units, such as quantization unit 54, may perform a scan.

[0103] Как только коэффициенты преобразования сканированы в одномерный массив, блок 56 энтропийного кодирования может применить энтропийное кодирование, такое как контекстно-адаптивное кодирования с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), или другой способ энтропийного кодирования, к коэффициентам. Энтропийное кодирование может также быть применено к элементам синтаксиса, таким как элементы синтаксиса, используемые в режиме слияния и режиме AMVP.[0103] Once the conversion coefficients are scanned into a one-dimensional array, entropy coding unit 56 may apply entropy coding, such as context adaptive variable-length coding (CAVLC), context adaptive binary arithmetic coding (CABAC) based on contextual syntax adaptive binary arithmetic coding (SBAC), or another way of entropy coding, to coefficients. Entropy coding can also be applied to syntax elements, such as syntax elements used in merge mode and AMVP mode.

[0104] Чтобы выполнить CAVLC, блок 56 энтропийного кодирования может выбрать код с переменной длиной кода для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан.[0104] To perform CAVLC, entropy encoding unit 56 may select a code with a variable code length for the character to be transmitted. Code words in VLC can be constructed so that relatively shorter codes correspond to more likely characters, while longer codes correspond to less likely characters. Thus, the use of VLC can achieve bit saving, for example, using codewords of equal length for each character to be transmitted.

[0105] Чтобы выполнить CABAC, блок 56 энтропийного кодирования может выбрать контекстную модель для применения к некоторому контексту, чтобы закодировать символы, которые должны быть переданы. В случае коэффициентов преобразования контекст может относиться, например, к тому, являются ли соседние значения ненулевыми или нет. Блок 56 энтропийного кодирования может также энтропийно кодировать элементы синтаксиса, такие как сигнал, представляющий выбранное преобразование. В соответствии с способами этого раскрытия, блок 56 энтропийного кодирования может выбрать контекстную модель, используемую, чтобы кодировать эти элементы синтаксиса, на основании, например, направления внутреннего предсказания для режимов внутреннего предсказания, позиции сканирования коэффициентов, соответствующих элементам синтаксиса, типу блока, и/или типу преобразования, среди других факторов, используемых для выбора контекстной модели.[0105] To perform CABAC, entropy coding unit 56 may select a context model to apply to some context to encode characters to be transmitted. In the case of transform coefficients, the context may relate, for example, to whether neighboring values are nonzero or not. Entropy encoding unit 56 may also entropy encode syntax elements, such as a signal representing a selected transform. In accordance with the methods of this disclosure, entropy encoding unit 56 may select a context model used to encode these syntax elements based on, for example, the intra prediction direction for intra prediction modes, the scan position of the coefficients corresponding to the syntax elements, block type, and / or type of transformation, among other factors used to select a context model.

[0106] После энтропийного кодирования блоком 56 энтропийного кодирования, результирующее закодированное видео может быть передано на другое устройство, такое как видео декодер 30, или заархивировано для более поздней передачи или поиска.[0106] After entropy encoding by entropy encoding unit 56, the resulting encoded video may be transmitted to another device, such as video decoder 30, or archived for later transmission or retrieval.

[0107] В некоторых случаях блок 56 энтропийного кодирования или другой блок видео кодера 20 могут конфигурироваться, чтобы выполнить другие функции кодирования в дополнение к энтропийному кодированию. Например, блок 56 энтропийного кодирования может быть сконфигурирован, чтобы определить значения шаблона кодированных блоков (CBP) для единиц CU и PU. Кроме того, в некоторых случаях блок 56 энтропийного кодирования может выполнить кодирование длин серий коэффициентов.[0107] In some cases, the entropy encoding unit 56 or another video encoder unit 20 may be configured to perform other encoding functions in addition to entropy encoding. For example, entropy coding unit 56 may be configured to determine coded block pattern (CBP) values for CUs and PUs. In addition, in some cases, entropy encoding unit 56 may encode the lengths of a series of coefficients.

[0108] Блок 58 обратного квантования и модуль 60 обратного преобразования применяет обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для более позднего использования при восстановлении опорного блока. Блок 44 компенсации движения может вычислить опорный блок, суммируя остаточный блок с предсказывающим блоком, сформированным из одного из кадров буфера 64 опорных кадров. Блок 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному опорному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания со скомпенсированным движением, сформированным блоком 44 компенсации движения, чтобы сформировать восстановленный видео блок для сохранения в буфере 64 опорных кадров. Восстановленный видео блок может использоваться блоком 42 оценки движения и блоком 44 компенсации движения как опорный блок, чтобы внешне кодировать блок в последующем видео кадре.[0108] The inverse quantization unit 58 and the inverse transform unit 60 apply inverse quantization and inverse transform, respectively, to restore the residual block in the pixel region, for example, for later use in reconstructing the reference block. Motion compensation unit 44 may calculate the reference block by summing the residual block with the predictive block formed from one of the frames of the reference frame buffer 64. Motion compensation unit 44 may also apply one or more interpolation filters to the reconstructed reference unit to calculate sub-integer pixel values for use in motion estimation. An adder 62 summarizes the reconstructed residual block with the motion compensated prediction block generated by the motion compensation block 44 to form the reconstructed video block for storing reference frames in the buffer 64. The reconstructed video block may be used by the motion estimation block 42 and the motion compensation block 44 as a reference block to externally encode the block in a subsequent video frame.

[0109] Фиг. 8 является блок-схемой, иллюстрирующей пример видео декодера 30, который декодирует закодированную видео последовательность. В примере на фиг. 8 видео декодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок внутреннего 74 предсказания, блок 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Видео декодер 30 в некоторых примерах может выполнить проход декодирования, обычно обратный к проходу кодирования, описанному относительно видео кодера 20 (см. фиг. 3).[0109] FIG. 8 is a block diagram illustrating an example of a video decoder 30 that decodes an encoded video sequence. In the example of FIG. 8, the video decoder 30 includes an entropy decoding unit 70, a motion compensation unit 72, an intra prediction unit 74, an inverse quantization unit 76, an inverse transform unit 78, a reference frame buffer 82, and an adder 80. The video decoder 30 in some examples may perform a decoding pass typically inverse to the coding pass described with respect to video encoder 20 (see FIG. 3).

[0110] Блок 70 энтропийного декодирования выполняет процесс энтропийного декодирования в отношении кодированного потока битов, чтобы извлечь одномерный массив коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, используемого видео кодером 20 (например, CABAC, CAVLC, и т.д.). Процесс энтропийного кодирования, используемый кодером, может быть сигнализирован в закодированном потоке битов или может быть заранее определенным процессом.[0110] The entropy decoding unit 70 performs an entropy decoding process with respect to the encoded bit stream to extract a one-dimensional array of transform coefficients. The entropy decoding process used depends on the entropy encoding used by video encoder 20 (e.g., CABAC, CAVLC, etc.). The entropy encoding process used by the encoder may be signaled in a coded bit stream or may be a predetermined process.

[0111] В некоторых примерах блок 70 энтропийного декодирования (или блок 76 обратного квантования) может сканировать принятые значения, используя сканирование, отражающее режим сканирования, используемый блоком 56 энтропийного кодирования (или блоком 54 квантования) видео кодера 20. Хотя сканирование коэффициентов может быть выполнено в блоке 76 обратного квантования, сканирование будет описан в целях иллюстрации, как выполняемое блоком 70 энтропийного декодирования. Кроме того, хотя показано как отдельные функциональные блоки для простоты иллюстрации, структура и функциональные возможности блока 70 энтропийного декодирования, блока 76 обратного квантования и других блоков видео декодера 30, могут быть высоко интегрированы друг с другом.[0111] In some examples, entropy decoding unit 70 (or inverse quantization unit 76) may scan received values using a scan reflecting the scanning mode used by entropy encoding unit 56 (or quantization unit 54) of video encoder 20. Although coefficient scanning may be performed in the inverse quantization unit 76, the scan will be described for purposes of illustration as being performed by the entropy decoding unit 70. In addition, although it is shown as separate functional blocks for ease of illustration, the structure and functionality of the entropy decoding unit 70, the inverse quantization unit 76, and other blocks of the video decoder 30 can be highly integrated with each other.

[0112] Блок 76 обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, подобный процессам, предложенным для HEVC, или определенный посредством стандарта декодирования H.264. Процесс обратного квантования может включать в себя использование параметра квантования QP, вычисленного видео кодером 20 для CU, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Блок 76 обратного квантования может обратно квантовать коэффициенты преобразования или прежде или после того, как коэффициенты преобразованы из одномерного массива в двумерный массив.[0112] The inverse quantization unit 76 inversely quantizes, that is, de-quantizes, the quantized transform coefficients provided in the bitstream and decoded by the entropy decoding unit 70. The inverse quantization process may include a conventional process, for example, similar to the processes proposed for HEVC, or defined by the H.264 decoding standard. The inverse quantization process may include using the quantization parameter QP computed by the video encoder 20 for the CU to determine the degree of quantization and, likewise, the degree of inverse quantization to be applied. The inverse quantization unit 76 may inverse quantize the transform coefficients either before or after the coefficients are converted from a one-dimensional array to a two-dimensional array.

[0113] Модуль 78 обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах модуль 78 обратного преобразования может определить обратное преобразование, на основании сигнализации от видео кодера 20, или логически выводя преобразование из одной или более характеристик кодирования, таких как размер блока, режим кодирования, или подобное. В некоторых примерах модуль 78 обратного преобразования может определить преобразование, чтобы применить к текущему блоку, на основании сигнализированного преобразования в корневом узле квадродерева для LCU, включающей текущий блок. Альтернативно, преобразование может быть сообщено в корне квадродерева TU для листового узла CU в квадродереве LCU. В некоторых примерах модуль 78 обратного преобразования может применить каскадное обратное преобразование, в котором модуль 78 обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования текущего декодируемого блока.[0113] The inverse transform unit 78 applies the inverse transform to the inverse quantized transform coefficients. In some examples, the inverse transform module 78 may determine the inverse transform based on signaling from the video encoder 20, or infer the transform from one or more encoding characteristics such as block size, encoding mode, or the like. In some examples, the inverse transform module 78 may determine the transform to apply to the current block based on the signaling transform in the root node of the quad tree for the LCU including the current block. Alternatively, a transformation may be reported at the root of the TU quad tree for the leaf CU in the LCU quad tree. In some examples, the inverse transform module 78 may apply a cascaded inverse transform in which the inverse transform module 78 applies two or more inverse transforms to the transform coefficients of the current decoded block.

[0114] Блок 74 внутреннего предсказания может генерировать данные предсказания для текущего блока текущего кадра, на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра.[0114] The intra prediction block 74 may generate prediction data for the current block of the current frame, based on the signaled intra prediction mode and data from previously decoded blocks of the current frame.

[0115] Согласно примерам этого раскрытия, видео декодер 30 может принять из кодированного потока битов синтаксис предсказания, который идентифицирует режим предсказания вектора движения и ассоциированную информацию вектора движения (например, см. Фиг. 4A и 4B и относящееся описание). В частности, видео декодер 30 может принять индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока. Набор блоков-кандидатов может быть наборами, показанными на фиг. 5A, фиг. 5B или фиг. 6, или любым другим набором блоков-кандидатов, причинных к текущему блоку.[0115] According to examples of this disclosure, video decoder 30 may receive a prediction syntax from an encoded bitstream that identifies a motion vector prediction mode and associated motion vector information (eg, see Figs. 4A and 4B and related description). In particular, video decoder 30 may receive an index indicating a candidate block from a set of candidate blocks, in which the set of candidate blocks is the same for each of the plurality of modes, and in which information associated with the candidate block is used to decode a vector movements for the current block. The set of candidate blocks may be the sets shown in FIG. 5A, FIG. 5B or FIG. 6, or any other set of candidate blocks causal to the current block.

[0116] В случае, когда элемент синтаксиса указывает режим слияния, видео декодер далее конфигурируется, чтобы извлечь вектор движения, опорный кадр и направление предсказания, ассоциированные с блоком-кандидатом, имеющим принятый индекс, и выполнить процесс внешнего предсказания для текущего блока, используя извлеченный вектор движения, опорный кадр и направление предсказания.[0116] In the case where the syntax element indicates the merge mode, the video decoder is further configured to extract the motion vector, reference frame, and prediction direction associated with the candidate block having the received index, and perform an inter prediction process for the current block using the extracted motion vector, reference frame and direction of prediction.

[0117] В случае, когда элемент синтаксиса указывает режим адаптивного предсказания вектора движения (AMVP), видео декодер далее конфигурируется, чтобы принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания, чтобы извлечь вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс, вычислить вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения, и выполнять процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания.[0117] In the case where the syntax element indicates an adaptive motion vector prediction (AMVP) mode, the video decoder is further configured to receive a reference frame index, a motion vector difference and a syntax element indicating a prediction direction to extract a motion candidate vector associated with by the candidate block having the adopted index, calculate the motion vector for the current block using the motion candidate vector and the difference of the motion vectors, and perform the inter prediction process using the calculated the first motion vector received reference picture index and prediction of the direction taken.

[0118] Независимо от режима предсказания, как только направление предсказания, индекс опорного кадра и вектор движения определены для текущего блока, блок компенсации движения формирует блок со скомпенсированным движением для текущего блока. Эти блоки со скомпенсированным движением по существу создают заново предсказывающий блок, используемый для формирования остаточных данных.[0118] Regardless of the prediction mode, once the prediction direction, the reference frame index and the motion vector are determined for the current block, the motion compensation block forms a motion compensated block for the current block. These motion compensated blocks essentially re-create the predictive block used to generate the residual data.

[0119] Блок 72 компенсации движения может сформировать блоки со скомпенсированным движением, возможно выполняя интерполяцию, основанную на фильтрах интерполяции. Идентификаторы для фильтров интерполяции, которые должны использоваться для оценки движения с субпиксельной точностью, могут быть включены в элементы синтаксиса. Блок 72 компенсации движения может использовать фильтры интерполяции, которые используется видео кодером 20 во время кодирования видео блока, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорного блока. Блок 72 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, согласно принятой информации синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки.[0119] The motion compensation unit 72 may form compensated motion blocks, possibly performing interpolation based on interpolation filters. Identifiers for interpolation filters, which should be used to evaluate motion with subpixel accuracy, can be included in syntax elements. The motion compensation unit 72 may use the interpolation filters that are used by the video encoder 20 during the encoding of the video block to calculate the interpolated values for the sub-integer pixels of the reference block. Motion compensation unit 72 may determine the interpolation filters used by video encoder 20 according to the received syntax information, and use these interpolation filters to form predictive blocks.

[0120] Дополнительно, блок 72 компенсации движения и блок 74 внутреннего предсказания, в примере HEVC, могут использовать некоторую из информации синтаксиса (например, предоставленную квадродеревом), чтобы определить размеры единиц LCU, используемые чтобы кодировать кадр(ы) кодированной видео последовательности. Блок 72 компенсации движения и блок 74 внутреннего предсказания могут также использовать информацию синтаксиса, чтобы определить информацию разделения, которая описывает, как каждая единица CU кадра закодированной видео последовательности разделена (и аналогично, как разделены суб-CU). Информация синтаксиса может также включать в себя режимы, указывающие, как каждая CU кодирована (например, с внутренним или внешним предсказанием, и для внутреннего предсказания режим кодирования с внутренним предсказанием), один или более опорных кадров (и/или опорные списки, содержащие идентификаторы для опорных кадров) для каждой внешне кодированной PU, и другую информацию, чтобы декодировать закодированную видео последовательность.[0120] Additionally, the motion compensation unit 72 and the intra prediction unit 74, in the HEVC example, may use some of the syntax information (for example, provided by a quad tree) to determine the unit sizes of the LCUs used to encode the frame (s) of the encoded video sequence. Motion compensation unit 72 and intra prediction unit 74 may also use syntax information to determine partitioning information that describes how each unit of the CU frame of the encoded video sequence is divided (and similarly, how sub-CUs are divided). The syntax information may also include modes indicating how each CU is encoded (e.g., intra or inter prediction, and for intra prediction, intra prediction encoding mode), one or more reference frames (and / or reference lists containing identifiers for reference frames) for each externally coded PU, and other information to decode the encoded video sequence.

[0121] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, генерируемыми блоком 72 компенсации движения или блоком 74 внутреннего предсказания, чтобы сформировать декодированные блоки. Декодированные блоки, в действительности, восстанавливают первоначально закодированные блоки, подвергаемые потере из-за квантования или других аспектов кодирования. Если желательно, фильтр удаления блочности может также быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Декодированные видео блоки затем сохраняются в буфере 82 опорных кадров, который обеспечивает опорные блоки для последующей компенсации движения и также формирует декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения согласно фиг. 2).[0121] An adder 80 combines the residual blocks with corresponding prediction blocks generated by the motion compensation block 72 or the intra prediction block 74 to form decoded blocks. The decoded blocks, in fact, restore the originally encoded blocks subjected to loss due to quantization or other aspects of encoding. If desired, the deblocking filter may also be applied to filter decoded blocks to remove blocking artifacts. The decoded video blocks are then stored in a reference frame buffer 82, which provides reference blocks for subsequent motion compensation and also generates decoded video for presentation on a display device (such as the display device 32 of FIG. 2).

[0122] Как упомянуто выше, способы этого раскрытия применимы и для кодера и для декодера. Обычно, и в соответствии с описанием выше, кодер использует один и тот же набор блоков-кандидатов, чтобы выполнить процесс предсказания вектора движения (например, режим слияния и режим AMVP). Декодер может затем декодировать вектор движения на основании элементов синтаксиса, принятых, используя тот же набор блоков-кандидатов, используемых кодером. Объединяя блоки-кандидаты для всех режимов предсказания вектора движения, объем памяти, который должен хранить информацию вектора движения (например, вектор движения, направление предсказания, индексы опорного кадра и т.д.) уменьшается. Требование полосы пропускания памяти при восстановлении информации вектора движения от тех блоков-кандидатов может также быть уменьшено.[0122] As mentioned above, the methods of this disclosure are applicable to both the encoder and the decoder. Typically, and as described above, the encoder uses the same set of candidate blocks to perform the motion vector prediction process (e.g., merge mode and AMVP mode). The decoder can then decode the motion vector based on the syntax elements received using the same set of candidate blocks used by the encoder. By combining candidate blocks for all motion vector prediction modes, the amount of memory that should store the motion vector information (e.g., motion vector, prediction direction, reference frame indices, etc.) is reduced. The memory bandwidth requirement for recovering motion vector information from those candidate blocks can also be reduced.

[0123] Фиг. 9 является последовательностью операций, иллюстрирующей примерный способ кодирования видео, который может быть выполнен видео кодером, таким как видео кодер 20 согласно фиг. 3. Видео кодер 20 может быть сконфигурирован, чтобы определить вектор движения относительно опорного кадра для текущего блока видео данных (900). Видео кодер 20 может также определить один из множества режимов (например, режим слияния или AMVP) для процесса предсказания вектора движения (901), и выполнить процесс предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов. Набор блоков-кандидатов является одинаковым для каждого из множества режимов.[0123] FIG. 9 is a flowchart illustrating an example video encoding method that can be performed by a video encoder, such as video encoder 20 according to FIG. 3. Video encoder 20 may be configured to determine a motion vector relative to a reference frame for the current video data block (900). Video encoder 20 may also determine one of a variety of modes (e.g., merge mode or AMVP) for the motion vector prediction process (901), and perform the motion vector prediction process for the current video data block using a specific mode and a set of candidate blocks. The set of candidate blocks is the same for each of the many modes.

[0124] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Фиг. 10 иллюстрирует примерный способ кодирования видео, когда процесс предсказания вектора движения находится в режиме слияния. В этом случае видео кодер далее конфигурируется, чтобы определить вектор-кандидат движения из набора блоков-кандидатов, который приводит к удовлетворительной эффективности «искажение - скорость передачи», когда ее вектор движения, опорный кадр и направление предсказания скопированы в текущий блок (1001) и сигнализирует индекс, идентифицирующий вектор-кандидат движения (1002).[0124] A plurality of modes may include a merge mode and an adaptive motion vector prediction mode. FIG. 10 illustrates an example video encoding method when a motion vector prediction process is in a merge mode. In this case, the video encoder is further configured to determine the motion vector candidate from the set of candidate blocks, which leads to satisfactory distortion-transmission rate efficiency when its motion vector, reference frame, and prediction direction are copied to the current block (1001) and signals an index identifying a motion candidate vector (1002).

[0125] В одном примере набор блоков-кандидатов может включать в себя верхний блок-кандидат, правый верхний блок-кандидата, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Левый блок-кандидат является смежным с левым краем текущего блока и верхний край левого блока-кандидата выровнен с главного края текущего блока. Вышеупомянутый блок-кандидат является смежным с, верхним краем текущего блока и левый край вышеупомянутого блока-кандидата выровнен с левым краем текущего блока.[0125] In one example, a set of candidate blocks may include an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block. The left candidate block is adjacent to the left edge of the current block and the upper edge of the left candidate block is aligned with the main edge of the current block. The above candidate block is adjacent to, the top edge of the current block and the left edge of the above candidate block is aligned with the left edge of the current block.

[0126] В другом примере левый блок-кандидат является смежным с левым краем текущего блока и нижний край левого блока-кандидата выровнен с нижним краем текущего блока. Вышеупомянутый блок-кандидат является смежным с верхним краем текущего блока и правый край вышеупомянутого блока-кандидата выровнен с правым краем текущего блока.[0126] In another example, the left candidate block is adjacent to the left edge of the current block, and the lower edge of the left candidate block is aligned with the lower edge of the current block. The above candidate block is adjacent to the top edge of the current block and the right edge of the above candidate block is aligned with the right edge of the current block.

[0127] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.[0127] In another example, a set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.

[0128] Фиг. 11 иллюстрирует примерный способ кодирования видео, когда процесс предсказания вектора движения находится в режиме AMVP. В этом случае, видео кодер конфигурируется, чтобы определить вектор-кандидат движения из каждого блока-кандидата в наборе блоков-кандидатов (1101) и вычислить разность векторов движения между вектором движения для текущего блока и вектором движения кандидата от каждого из блоков-кандидатов согласно шаблону проверки (1102). Видео кодер также конфигурируется, чтобы выбрать один из векторов-кандидатов движения, на основании вычисленных разностей вектора движения (1103), и сигнализировать индекс, идентифицирующий блок-кандидат, имеющий выбранный один из векторов-кандидатов движения, чтобы сигнализировать разность векторов движения, вычисленную относительно выбранного одного из векторов-кандидатов движения, чтобы сигнализировать опорный кадр, и сигнализировать направление предсказания (1104).[0128] FIG. 11 illustrates an example video encoding method when the motion vector prediction process is in AMVP mode. In this case, the video encoder is configured to determine the motion vector candidate from each candidate block in the set of candidate blocks (1101) and calculate the difference of the motion vectors between the motion vector for the current block and the motion vector of the candidate from each of the candidate blocks according to the pattern checks (1102). The video encoder is also configured to select one of the motion candidate vectors based on the calculated motion vector differences (1103) and signal an index identifying a candidate block having a selected one of the motion candidate vectors to signal the motion vector difference calculated with respect to selected one of the motion candidate vectors to signal a reference frame and signal a prediction direction (1104).

[0129] В одном примере набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. В этом примере шаблон проверки происходит в следующем порядке: нижний левый блок-кандидат, левый блок-кандидат, правый верхний блок-кандидат, верхний блок-кандидат, временной блок-кандидат.[0129] In one example, the set of candidate blocks includes an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block. In this example, the validation pattern occurs in the following order: lower left candidate block, left candidate block, upper right candidate block, upper candidate block, temporary candidate block.

[0130] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Шаблон проверки происходит в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.[0130] In another example, a set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block. The check pattern occurs in the following order: left candidate block, lower left candidate block, upper candidate block, upper right candidate block, left upper candidate block, temporary candidate block.

[0131] Фиг. 12 является последовательностью операций, иллюстрирующей примерный способ декодирования видео, который может быть выполнен видео декодером, таким как видео декодер 30 согласно фиг. 3. Видео декодер 30 может быть сконфигурирован, чтобы принять элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных (1201), и принять индекс, указывающий блок-кандидат из набора блоков-кандидатов (1202), в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока. Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения.[0131] FIG. 12 is a flowchart illustrating an example video decoding method that may be performed by a video decoder, such as video decoder 30 of FIG. 3. Video decoder 30 may be configured to receive a syntax element indicating one of a plurality of modes for the motion vector prediction process for the current video data block (1201), and receive an index indicating a candidate block from a set of candidate blocks (1202), in which the set of candidate blocks is the same for each of the multiple modes, and in which the information associated with the candidate block is used to decode a motion vector for the current block. Many modes may include a merge mode and an adaptive motion vector prediction mode.

[0132] Фиг. 13 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в случае, когда процесс предсказания вектора движения является режимом слияния. В этом случае видео декодер далее конфигурируется, чтобы извлечь вектор движения, опорный кадр и направление предсказания ассоциированные с блоком-кандидатом, имеющим принятый индекс (1301), и выполнить процесс внешнего предсказания в отношении текущего блока, используя извлеченные вектор движения, опорный кадр и направление предсказания (1302).[0132] FIG. 13 is a flowchart illustrating an example video decoding method in a case where the motion vector prediction process is a merge mode. In this case, the video decoder is further configured to extract a motion vector, a reference frame, and a prediction direction associated with a candidate block having a received index (1301), and perform an inter prediction process on the current block using the extracted motion vector, reference frame, and direction predictions (1302).

[0133] В одном примере набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Левый блок-кандидат является смежным с левым краем текущего блока и верхний край левого блока-кандидата выровнен с верхним краем текущего блока. Верхний блок-кандидат является смежным с верхним краем текущего блока и левый край верхнего блока-кандидата выровнен с левым краем текущего блока.[0133] In one example, a set of candidate blocks includes an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block. The left candidate block is adjacent to the left edge of the current block and the upper edge of the left candidate block is aligned with the upper edge of the current block. The upper candidate block is adjacent to the upper edge of the current block and the left edge of the upper candidate block is aligned with the left edge of the current block.

[0134] В другом примере левый блок-кандидат является смежным с левым краем текущего блока и нижний край левого блока-кандидата выровнен с нижним краем текущего блока. Верхний блок-кандидат является смежным с верхним краем текущего блока и правый край верхнего блока-кандидата выровнен с правым краем текущего блока.[0134] In another example, the left candidate block is adjacent to the left edge of the current block, and the lower edge of the left candidate block is aligned with the lower edge of the current block. The upper candidate block is adjacent to the upper edge of the current block and the right edge of the upper candidate block is aligned with the right edge of the current block.

[0135] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.[0135] In another example, a set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.

[0136] Фиг. 14 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в случае, когда процесс предсказания вектора движения является режимом AMVP. В этом случае видео декодер конфигурируется, чтобы принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания (1401), и извлекать вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс (1402). Видео декодер далее конфигурируется, чтобы вычислить вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения (1403), и выполнить процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания (1404).[0136] FIG. 14 is a flowchart illustrating an example video decoding method in the case where the motion vector prediction process is an AMVP mode. In this case, the video decoder is configured to receive the reference frame index, the motion vector difference and the syntax element indicating the direction of prediction (1401), and extract the motion candidate vector associated with the candidate block having the received index (1402). The video decoder is further configured to calculate a motion vector for the current block using a motion candidate vector and a motion vector difference (1403), and perform an inter prediction process using the calculated motion vector, a received reference frame index, and a received prediction direction (1404).

[0137] В одном примере набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат, и шаблон проверки для набора блоков-кандидатов имеет место в следующем порядке: нижний левый блок-кандидат, левый блок-кандидат, правый верхний блок-кандидат, верхний блок-кандидат, временной блок-кандидат.[0137] In one example, a set of candidate blocks includes an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block, and a check pattern for the set of candidate blocks is in the following order: lower left candidate block, left candidate block, upper right candidate block, upper candidate block, temporary candidate block.

[0138] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат, и шаблон проверки для набора блоков-кандидатов имеет место в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.[0138] In another example, the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block and a temporary candidate block, and a check pattern for a set of candidate blocks takes place in the following order: left candidate block, lower left candidate block, upper candidate block, right upper candidate block, left upper candidate block, temporary candidate block.

[0139] Фиг. 15 является последовательностью операций, иллюстрирующей другой примерный способ кодирования видео, которое может быть выполнено видео кодером, таким как видео кодер 20 согласно фиг. 3. Видео кодер 20 может быть сконфигурирован, чтобы определить вектор движения относительно опорного кадра для текущего блока видео данных (1501), определить один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных (1502), и выполнить процесс предсказания вектора движения для текущего блока, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат (1503). Дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен. Видео кодер 20 может далее конфигурироваться, чтобы обновить шаблон проверки, на основании одного или более из индекса слияния, определенного режима, размера разделения, индекса опорного кадра, разности векторов движения и предсказания (1504) вектора движения.[0139] FIG. 15 is a flowchart illustrating another exemplary video encoding method that may be performed by a video encoder, such as video encoder 20 of FIG. 3. Video encoder 20 may be configured to determine a motion vector relative to a reference frame for the current video data block (1501), determine one of a plurality of modes for the motion vector prediction process for the current video data block (1502), and perform the motion vector prediction process for the current block, using a specific mode and a set of candidate blocks, in which the set of candidate blocks is the same for each of the many modes, and in which one candidate block in the set of candidate blocks is determined It is offered as an additional candidate block (1503). An additional candidate block is used if another of the candidate blocks of the set of candidate blocks is not available. Video encoder 20 may be further configured to update the check pattern based on one or more of a merge index, a specific mode, split size, reference frame index, motion vector difference, and motion vector prediction (1504).

[0140] Упомянутое множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Режим слияния может иметь максимальное количество N блоков-кандидатов для использования при выполнении процесса предсказания вектора движения. В этом случае процесс предсказания вектора движения выполняется согласно шаблону проверки, причем шаблон проверки определяет порядок для проверки каждого из блоков-кандидатов в наборе блоков-кандидатов. Набор блоков-кандидатов определен как первые N доступных блоков-кандидатов в наборе блоков-кандидатов вдоль шаблона проверки. Шаблон проверки может быть основан на одном или более из размера блока, размера разделения, и индекса разделения. Более конкретно, например, шаблон проверки для каждого различного размера блока, размера разделения или индекса разделения может быть обновлен или изменен на основании статистики выбора кандидата во многих предыдущих закодированных блоках, имеющих один и тот же размер блока, размер разделения или индекс разделения, и т.д.[0140] The plurality of modes may include a merge mode and an adaptive motion vector prediction mode. The merge mode may have a maximum number of N candidate blocks for use in performing the motion vector prediction process. In this case, the motion vector prediction process is performed according to the check pattern, the check pattern determining the order for checking each of the candidate blocks in the set of candidate blocks. The set of candidate blocks is defined as the first N available candidate blocks in the set of candidate blocks along the check pattern. The validation pattern may be based on one or more of block size, partition size, and partition index. More specifically, for example, a check pattern for each different block size, split size, or split index can be updated or changed based on candidate selection statistics in many previous encoded blocks having the same block size, split size, or split index, and t .d.

[0141] В другом примере набор блоков-кандидатов включает в себя нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат. В этом примере дополнительным блоком-кандидатом является левый верхний блок-кандидат. Однако, дополнительный блок-кандидат может быть любым блоком-кандидатом, который находится в причинных отношениях к текущему блоку.[0141] In another example, a set of candidate blocks includes a lower left candidate block, a left candidate block, an upper candidate block, a right upper candidate block, a left upper candidate block, and a temporary candidate block. In this example, an additional candidate block is the upper left candidate block. However, the additional candidate block may be any candidate block that is in a causal relationship to the current block.

[0142] Фиг. 16 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео, который может быть выполнен видео декодером, таким как видео декодер 30 согласно фиг. 3. Видео декодер 30 может быть сконфигурирован, чтобы принять элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных (1601), и принять индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат (1602). Дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен. Информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.[0142] FIG. 16 is a flowchart illustrating another exemplary video decoding method that may be performed by a video decoder, such as video decoder 30 of FIG. 3. Video decoder 30 may be configured to receive a syntax element indicating one of a plurality of modes for the motion vector prediction process for the current video data block (1601), and receive an index indicating a candidate block from a set of candidate blocks in which the set candidate blocks is the same for each of a plurality of modes in which one candidate block in the set of candidate blocks is defined as an additional candidate block (1602). An additional candidate block is used if another of the candidate blocks of the set of candidate blocks is not available. The information associated with the candidate block is used to decode the motion vector for the current block.

[0143] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Фиг. 17 изображает способ декодирования в случае, когда принятый элемент синтаксиса указывает, что используется режим слияния. В этом случае видео декодер далее конфигурируется, чтобы извлечь вектор движения, опорный кадр и направление предсказания, ассоциированные с блоком-кандидатом, имеющим принятый индекс (1701), и выполнить процесс внешнего предсказания в отношении текущего блока, используя извлеченный вектор движения, опорный кадр и направление предсказания (1702).[0143] A plurality of modes may include a merge mode and an adaptive motion vector prediction mode. FIG. 17 shows a decoding method when a received syntax element indicates that a merge mode is being used. In this case, the video decoder is further configured to extract a motion vector, a reference frame, and a prediction direction associated with a candidate block having a received index (1701), and perform an inter prediction process on the current block using the extracted motion vector, a reference frame, and direction of prediction (1702).

[0144] Режим слияния может быть определен как имеющий максимальное количество N блоков-кандидатов для использования при выполнении процесса предсказания вектора движения. В этом случае процесс предсказания вектора движения может быть выполнен согласно шаблону проверки, причем шаблон проверки определяет порядок относительно проверки каждого из блоков-кандидатов в наборе блоков-кандидатов. Набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов вдоль шаблона проверки. Шаблон проверки основан на одном или более из размера блока, размера разделения, и индекса разделения.[0144] A merge mode can be defined as having a maximum number N candidate blocks for use in performing the motion vector prediction process. In this case, the motion vector prediction process can be performed according to the verification pattern, wherein the verification pattern determines the order with respect to verification of each of the candidate blocks in the set of candidate blocks. A set of candidate blocks is defined as the first N available candidate blocks in the set of candidate blocks along the check pattern. The validation pattern is based on one or more of block size, partition size, and partition index.

[0145] В другом примере, как для режима слияния так и для режима AMVP, набор блоков-кандидатов может включать в себя нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат. Дополнительный блок-кандидат является левым верхним блоком-кандидатом. Однако, дополнительный блок-кандидат может быть любым блоком-кандидатом, который находится в причинных отношениях к текущему блоку.[0145] In another example, for both the merge mode and the AMVP mode, the set of candidate blocks may include a lower left candidate block, a left candidate block, an upper candidate block, a right upper candidate block, a left upper block candidate and temporary block candidate. The additional candidate block is the upper left candidate block. However, the additional candidate block may be any candidate block that is in a causal relationship to the current block.

[0146] Фиг. 18 изображает способ декодирования в случае, когда принятый элемент синтаксиса указывает, что режим AMVP используется. В этом случае видео декодер далее конфигурируется, чтобы принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания (1801), и извлекать вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс (1802). Видео декодер далее конфигурируется, чтобы вычислить вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения (1803), и выполнять процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания (1804).[0146] FIG. 18 depicts a decoding method in the case where the received syntax element indicates that the AMVP mode is being used. In this case, the video decoder is further configured to receive a reference frame index, a motion vector difference and a syntax element indicating a direction of prediction (1801), and extract a motion candidate vector associated with the candidate block having the received index (1802). The video decoder is further configured to calculate a motion vector for the current block using a motion candidate vector and a motion vector difference (1803), and perform an inter prediction process using the calculated motion vector, a received reference frame index, and a received prediction direction (1804).

[0147] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы, как одна или более инструкций или код, считываемый компьютером носитель и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемые компьютером носители данных, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель обычно может соответствовать (1) материальным считываемым компьютером носителям данных, которые являются невременными или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.[0147] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted as one or more instructions or code, a computer-readable medium, and executed by a hardware-based processing unit. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as storage media, or communication media, including any medium that facilitates transferring a computer program from one place to another, for example, according to a communication protocol. In this method, a computer-readable medium can typically correspond to (1) material computer-readable storage media that is non-transitory or (2) a communication medium, such as a signal or carrier. Storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the methods described in this disclosure. A computer program product may include computer-readable media.

[0148] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может использоваться, чтобы сохранить желательный программный код в форме инструкций или структур данных и к которому может получить доступ компьютер. Также, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии такие как инфракрасная, радио- и микроволновая, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером носители данных и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные материальные носители данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.[0148] By way of example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk storage device, or other magnetic storage devices, flash memory, or any another medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly referred to as a computer readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair cable, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then this coaxial cable , fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. It should be understood, however, that computer-readable storage media and storage media do not include connections, carriers, signals, or other temporary storage media, but are instead directed to non-temporal material storage media. The disc and disc, as used here, include a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disk and a blu-ray disc, where discs (disks) typically reproduce data in magnetic manner while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0149] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относиться к любой известной структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Также, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в объединенный кодек. Также, способы могли быть полностью реализованы в одной или более схемах или логических элементах.[0149] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, specialized integrated circuits (ASICs), user programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic scheme. Accordingly, the term “processor”, as used herein, may refer to any known structure or any other structure suitable for implementing the methods described herein. Also, in some aspects, the functionality described herein may be provided within specialized hardware and / or software modules configured for encoding and decoding, or integrated in a combined codec. Also, the methods could be fully implemented in one or more circuits or logic elements.

[0150] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны в настоящем описании, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнять раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.[0150] The methods of the present disclosure may be implemented in a wide variety of devices or apparatuses, including a cordless handset, integrated circuit (IC), or IC kit (eg, microprocessor kit). Various components, modules, or blocks are described herein to emphasize the functional aspects of devices configured to perform the disclosed methods, but not necessarily require the implementation of various hardware blocks. Instead, as described above, various units may be combined in a codec hardware unit or provided by a collection of interacting hardware units, including one or more processors, as described above, in conjunction with suitable software and / or firmware.

[0151] Были описаны различные примеры. Эти и другие примеры находятся в рамках нижеследующей формулы изобретения.[0151] Various examples have been described. These and other examples are within the scope of the following claims.

Claims (28)

1. Способ кодирования вектора движения в процессе кодировки видео, содержащий:
определение одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, которые должны быть закодированы; и
выполнение процесса предсказания вектора движения для текущего блока видеоданных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов,
причем множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения, и
причем набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
1. A method of encoding a motion vector in the process of encoding a video, comprising:
determining one of a plurality of modes for the motion vector prediction process for the current block of video data to be encoded; and
the process of predicting the motion vector for the current block of video data using a specific mode and a set of candidate blocks, while the set of candidate blocks is the same for each of the many modes,
wherein the plurality of modes includes a merge mode and an adaptive motion vector prediction mode, and
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
2. Способ по п. 1, в котором определенный режим является режимом слияния и в котором способ также содержит:
определение вектора-кандидата движения из набора блоков-кандидатов, который удовлетворяет порогу «искажение - скорость передачи», и
сигнализацию индекса, идентифицирующего вектор-кандидат движения.
2. The method of claim 1, wherein the particular mode is a merge mode and wherein the method also comprises:
determining a motion candidate vector from a set of candidate blocks that satisfies the “distortion - transmission rate” threshold, and
signaling an index identifying a candidate motion vector.
3. Способ по п. 1, в котором определенным режимом является адаптивный режим предсказания вектора движения и в котором способ также содержит:
определение вектора-кандидата движения для каждого блока-кандидата в наборе блоков-кандидатов;
вычисление разности векторов движения между вектором движения для текущего блока и вектором-кандидатом движения для каждого из блоков-кандидатов согласно шаблону проверки;
выбор одного из векторов-кандидатов движения на основании вычисленных разностей векторов движения; и
сигнализацию индекса, идентифицирующего выбранный один из векторов-кандидатов движения, причем разность векторов движения вычисляют относительно выбранного одного из векторов-кандидатов движения, опорного кадра и направления предсказания.
3. The method of claim 1, wherein the specific mode is an adaptive motion vector prediction mode and wherein the method also comprises:
determining a motion candidate vector for each candidate block in the set of candidate blocks;
calculating the difference of motion vectors between the motion vector for the current block and the motion candidate vector for each of the candidate blocks according to the check pattern;
selecting one of the motion candidate vectors based on the calculated differences of the motion vectors; and
signaling an index identifying a selected one of the motion candidate vectors, the difference of the motion vectors being calculated relative to the selected one of the motion candidate vectors, a reference frame, and a prediction direction.
4. Способ по п. 3, в котором шаблон проверки происходит в порядке, начиная с левого блока-кандидата.4. The method of claim 3, wherein the validation pattern occurs in the order starting from the left candidate block. 5. Способ по п. 3, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, переход к нижнему левому блоку-кандидату, верхний блок-кандидат, переход к правому верхнему блоку-кандидату.5. The method according to p. 3, in which the verification pattern occurs in the following order: the left candidate block, the transition to the lower left candidate block, the upper candidate block, the transition to the upper right candidate block. 6. Способ по п. 3, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.6. The method according to p. 3, in which the verification pattern occurs in the following order: left candidate block, lower left candidate block, upper candidate block, upper right candidate block, left upper candidate block, temporary candidate block. 7. Устройство для кодирования вектора движения в процессе кодирования видео, содержащее:
видеокодер, конфигурируемый, чтобы:
определять один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, который должен быть закодирован; и
выполнять процесс предсказания вектора движения для текущего блока видеоданных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения, и
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
7. A device for encoding a motion vector in a video encoding process, comprising:
A video encoder configured to:
determine one of the many modes for the motion vector prediction process for the current block of video data to be encoded; and
perform the motion vector prediction process for the current block of video data using a specific mode and a set of candidate blocks, while the set of candidate blocks is the same for each of the many modes,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector, and
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
8. Устройство по п. 7, в котором определенный режим является режимом слияния и в котором видеокодер далее конфигурируется, чтобы:
определять вектор-кандидат движения из набора блоков-кандидатов, который удовлетворяет порогу «искажение - скорость передачи»; и
сигнализировать индекс, идентифицирующий вектор-кандидат движения.
8. The device according to claim 7, in which the specific mode is a merge mode and in which the video encoder is further configured to:
determine a motion candidate vector from a set of candidate blocks that satisfies the “distortion - transmission rate” threshold; and
signal an index identifying a motion candidate vector.
9. Устройство по п. 7, в котором определенным режимом является адаптивный режим предсказания вектора движения и в котором видеокодер далее конфигурируется, чтобы:
определять вектор-кандидат движения для каждого блока-кандидата в наборе блоков-кандидатов;
вычислять разность векторов движения между вектором движения для текущего блока и вектором-кандидатом движения для каждого из блоков-кандидатов согласно шаблону проверки;
выбирать один из векторов-кандидатов движения на основании вычисленных разностей векторов движения; и
сигнализировать индекс, идентифицирующий выбранный один из векторов-кандидатов движения, причем разность векторов движения вычислена относительно выбранного одного из векторов-кандидатов движения, опорного кадра и направления предсказания.
9. The device according to claim 7, in which the specific mode is the adaptive prediction mode of the motion vector and in which the video encoder is further configured to:
determine a motion candidate vector for each candidate block in the set of candidate blocks;
calculate the difference of motion vectors between the motion vector for the current block and the motion candidate vector for each of the candidate blocks according to the check pattern;
select one of the motion candidate vectors based on the calculated differences of the motion vectors; and
signal an index identifying the selected one of the motion candidate vectors, the difference of the motion vectors being calculated relative to the selected one of the motion candidate vectors, a reference frame, and a prediction direction.
10. Устройство по п. 9, в котором шаблон проверки происходит в порядке, начиная с левого блока-кандидата.10. The device according to claim 9, in which the verification pattern occurs in the order starting from the left candidate block. 11. Устройство по п. 9, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, переход к нижнему левому блоку-кандидату, верхний блок-кандидат, переход к правому верхнему блоку-кандидату.11. The device according to claim 9, in which the verification pattern occurs in the following order: the left candidate block, the transition to the lower left candidate block, the upper candidate block, the transition to the upper right candidate block. 12. Устройство по п. 9, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.12. The device according to claim 9, in which the verification pattern occurs in the following order: left candidate block, lower left candidate block, upper candidate block, upper right candidate block, left upper candidate block, temporary candidate block. 13. Устройство для кодирования вектора движения в процессе кодирования видео, содержащее:
средство для того, чтобы определить один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, который должен быть закодирован; и
средство для того, чтобы выполнить процесс предсказания вектора движения для текущего блока видеоданных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения, и
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
13. A device for encoding a motion vector in a video encoding process, comprising:
means for determining one of a plurality of modes for the motion vector prediction process for the current block of video data to be encoded; and
means for performing a motion vector prediction process for the current video data block using a specific mode and a set of candidate blocks, wherein the set of candidate blocks is the same for each of the many modes,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector, and
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
14. Считываемый компьютером носитель данных, хранящий на нем инструкции, которые, когда выполняются, вынуждают один или более процессоров устройства для кодирования видеоданных:
определять один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, который должен быть закодирован; и
выполнять процесс предсказания вектора движения для текущего блока видеоданных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения, и
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
14. A computer-readable storage medium that stores instructions on it that, when executed, force one or more processors of the device to encode video data:
determine one of the many modes for the motion vector prediction process for the current block of video data to be encoded; and
perform the motion vector prediction process for the current block of video data using a specific mode and a set of candidate blocks, while the set of candidate blocks is the same for each of the many modes,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector, and
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
15. Способ декодирования вектора движения в процессе кодировки видео, содержащий:
определение одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных; и
определение блока-кандидата из набора блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов и при этом информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения, и
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
15. A method of decoding a motion vector in the process of encoding a video, comprising:
determining one of a plurality of modes for the motion vector prediction process for the current video data block; and
determining a candidate block from the set of candidate blocks, wherein the set of candidate blocks is the same for each of the plurality of modes, and the information associated with the candidate block is used to decode a motion vector for the current block,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector, and
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
16. Способ по п. 15, дополнительно содержащий:
прием элемента синтаксиса, указывающего процесс предсказания вектора движения, в котором принятый элемент синтаксиса указывает, что процесс предсказания вектора движения является режимом слияния;
прием индекса, указывающего блок-кандидат;
извлечение вектора движения, опорного кадра и направления предсказания, ассоциированных с упомянутым блоком-кандидатом, имеющим принятый индекс; и
выполнение процесса внешнего предсказания в отношении текущего блока, используя извлеченные вектор движения, опорный кадр и направление предсказания.
16. The method of claim 15, further comprising:
receiving a syntax element indicating a motion vector prediction process in which the received syntax element indicates that the motion vector prediction process is a merge mode;
receiving an index indicating a candidate block;
extracting a motion vector, a reference frame, and a prediction direction associated with said candidate block having a received index; and
performing an inter prediction process with respect to the current block using the extracted motion vector, reference frame, and prediction direction.
17. Способ по п. 15, дополнительно содержащий:
прием элемента синтаксиса, указывающего процесс предсказания вектора движения, при этом принятый элемент синтаксиса указывает, что процесс предсказания вектора движения является адаптивным режимом предсказания вектора движения;
прием индекса, указывающего блок-кандидат;
прием индекса опорного кадра, разности векторов движения и элемента синтаксиса, указывающего направление предсказания;
извлечение вектора-кандидата движения, ассоциированного с блоком-кандидатом, имеющим принятый индекс;
вычисление вектора движения для текущего блока, используя вектор-кандидат движения и разность векторов движения; и
выполнение процесса внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания.
17. The method of claim 15, further comprising:
receiving a syntax element indicating a motion vector prediction process, wherein the received syntax element indicates that the motion vector prediction process is an adaptive motion vector prediction mode;
receiving an index indicating a candidate block;
receiving an index of a reference frame, a difference of motion vectors and a syntax element indicating a direction of prediction;
extracting a motion candidate vector associated with the candidate block having the received index;
calculating a motion vector for the current block using a motion candidate vector and a difference of motion vectors; and
performing the inter prediction process using the calculated motion vector, the received reference frame index, and the adopted prediction direction.
18. Способ по п. 17, в котором шаблон проверки происходит в порядке, начиная с левого блока-кандидата.18. The method of claim 17, wherein the validation pattern occurs in the order starting from the left candidate block. 19. Способ по п. 17, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, переход к нижнему левому блоку-кандидату, верхний блок-кандидат, переход к правому верхнему блоку-кандидату.19. The method according to p. 17, in which the verification pattern occurs in the following order: the left candidate block, the transition to the lower left candidate block, the upper candidate block, the transition to the upper right candidate block. 20. Способ по п. 17, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.20. The method according to p. 17, in which the verification pattern occurs in the following order: left candidate block, lower left candidate block, upper candidate block, upper right candidate block, left upper candidate block, temporary candidate block. 21. Устройство для декодирования вектора движения в процессе кодирования видео, содержащее:
видеодекодер, конфигурируемый, чтобы:
определять один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных; и
определять блок-кандидат из набора блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов и при этом информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения,
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
21. A device for decoding a motion vector in the video encoding process, comprising:
A video decoder configured to:
determine one of the many modes for the motion vector prediction process for the current block of video data; and
determine a candidate block from the set of candidate blocks, wherein the set of candidate blocks is the same for each of the plurality of modes, and the information associated with the candidate block is used to decode a motion vector for the current block,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector,
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
22. Устройство по п. 21, в котором видео декодер также конфигурируется, чтобы:
принять элемент синтаксиса, указывающий процесс предсказания вектора движения, при этом принятый элемент синтаксиса указывает, что процесс предсказания вектора движения является режимом слияния;
принять индекс, указывающий блок-кандидат;
извлечь вектор движения, опорный кадр и направление предсказания, ассоциированные с блоком-кандидатом, имеющим принятый индекс; и
выполнять процесс внешнего предсказания в отношении текущего блока, используя извлеченные вектор движения, опорный кадр и направление предсказания.
22. The device according to p. 21, in which the video decoder is also configured to:
accept a syntax element indicating the motion vector prediction process, wherein the received syntax element indicates that the motion vector prediction process is a merge mode;
accept an index indicating the candidate block;
extract a motion vector, a reference frame, and a prediction direction associated with a candidate block having a received index; and
perform an inter prediction process with respect to the current block using the extracted motion vector, reference frame, and prediction direction.
23. Устройство по п. 21, в котором видеодекодер также конфигурируется, чтобы:
принять элемент синтаксиса, указывающий процесс предсказания вектора движения, причем принятый элемент синтаксиса указывает, что процесс предсказания вектора движения является адаптивным режимом предсказания вектора движения;
принять индекс, указывающий блок-кандидат;
принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания;
извлечь вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс;
вычислять вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения; и
выполнять процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания.
23. The device according to p. 21, in which the video decoder is also configured to:
receive a syntax element indicating a motion vector prediction process, wherein the received syntax element indicates that the motion vector prediction process is an adaptive motion vector prediction mode;
accept an index indicating the candidate block;
accept the reference frame index, the difference of the motion vectors and the syntax element indicating the direction of the prediction;
extract a motion candidate vector associated with the candidate block having the received index;
calculate the motion vector for the current block using the motion candidate vector and the difference of the motion vectors; and
perform the inter prediction process using the calculated motion vector, the received reference frame index, and the adopted prediction direction.
24. Устройство по п. 23, в котором шаблон проверки происходит в порядке, начиная с левого блока-кандидата.24. The device according to claim 23, wherein the verification pattern occurs in the order starting from the left candidate block. 25. Устройство по п. 23, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, переход к нижнему левому блоку-кандидату, верхний блок-кандидат, переход к правому верхнему блоку-кандидату.25. The device according to p. 23, in which the check pattern occurs in the following order: the left candidate block, the transition to the lower left candidate block, the upper candidate block, the transition to the upper right candidate block. 26. Устройство по п. 23, в котором шаблон проверки происходит в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.26. The device according to p. 23, in which the verification pattern occurs in the following order: left candidate block, lower left candidate block, upper candidate block, right upper candidate block, left upper candidate block, temporary candidate block. 27. Устройство для декодирования вектора движения в процессе декодирования видео, содержащее:
средство для того, чтобы определить один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных; и
средство для того, чтобы определить блок-кандидат из набора блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с этим блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения,
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
27. An apparatus for decoding a motion vector in a video decoding process, comprising:
means for determining one of a plurality of modes for the motion vector prediction process for the current block of video data; and
means for determining a candidate block from the set of candidate blocks, wherein the set of candidate blocks is the same for each of the plurality of modes, and in which the information associated with this candidate block is used to decode a motion vector for the current block ,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector,
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
28. Считываемый компьютером носитель данных, хранящий на нем инструкции, которые, когда выполняются, вынуждают один или более процессоров устройства для декодирования видеоданных, чтобы:
определять один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных; и
определять блок-кандидат из набора блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с упомянутым блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока,
при этом множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения,
при этом набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
28. A computer-readable storage medium that stores instructions on it that, when executed, force one or more processors of the device to decode video data to:
determine one of the many modes for the motion vector prediction process for the current block of video data; and
determining a candidate block from the set of candidate blocks, wherein the set of candidate blocks is the same for each of the plurality of modes, and in which the information associated with said candidate block is used to decode a motion vector for the current block,
however, many modes includes a merge mode and an adaptive mode for predicting a motion vector,
wherein the set of candidate blocks includes a left upper candidate block, an upper candidate block, a right upper candidate block, a left candidate block, a lower left candidate block, and a temporary candidate block.
RU2014101348/08A 2011-06-20 2012-06-05 Selection of common candidates of mode of convergence and adaptive motion vector prediction mode RU2574280C2 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201161499114P 2011-06-20 2011-06-20
US61/499,114 2011-06-20
US201161506558P 2011-07-11 2011-07-11
US61/506,558 2011-07-11
US201161509007P 2011-07-18 2011-07-18
US61/509,007 2011-07-18
US13/487,914 2012-06-04
US13/487,914 US9131239B2 (en) 2011-06-20 2012-06-04 Unified merge mode and adaptive motion vector prediction mode candidates selection
PCT/US2012/040927 WO2012177387A1 (en) 2011-06-20 2012-06-05 Unified merge mode and adaptive motion vector prediction mode candidates selection

Publications (2)

Publication Number Publication Date
RU2014101348A RU2014101348A (en) 2015-07-27
RU2574280C2 true RU2574280C2 (en) 2016-02-10

Family

ID=

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2768377C1 (en) * 2018-11-16 2022-03-24 МедиаТек Инк. Method and device for video coding using improved mode of merging with motion vector difference
US11477478B2 (en) 2018-12-12 2022-10-18 Lg Electronics Inc. Method and apparatus for processing video signal based on history based motion vector prediction
RU2795830C2 (en) * 2018-11-16 2023-05-12 ЭйджЭфАй Инновейшн Инк. Method and device for video encoding using improved merge mode with motion vector difference

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6043846A (en) * 1996-11-15 2000-03-28 Matsushita Electric Industrial Co., Ltd. Prediction apparatus and method for improving coding efficiency in scalable video coding
RU2360375C2 (en) * 2002-07-18 2009-06-27 Эл Джи Электроникс Инк. Method of determining motion vectors for current unit in frame, subject to decoding
RU2391794C2 (en) * 2005-07-05 2010-06-10 Нтт Докомо, Инк. Device of video coding, method of video coding, program of video coding, device of video coding, method of video coding and program of video coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6043846A (en) * 1996-11-15 2000-03-28 Matsushita Electric Industrial Co., Ltd. Prediction apparatus and method for improving coding efficiency in scalable video coding
RU2360375C2 (en) * 2002-07-18 2009-06-27 Эл Джи Электроникс Инк. Method of determining motion vectors for current unit in frame, subject to decoding
RU2391794C2 (en) * 2005-07-05 2010-06-10 Нтт Докомо, Инк. Device of video coding, method of video coding, program of video coding, device of video coding, method of video coding and program of video coding

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2768377C1 (en) * 2018-11-16 2022-03-24 МедиаТек Инк. Method and device for video coding using improved mode of merging with motion vector difference
RU2795830C2 (en) * 2018-11-16 2023-05-12 ЭйджЭфАй Инновейшн Инк. Method and device for video encoding using improved merge mode with motion vector difference
US11477478B2 (en) 2018-12-12 2022-10-18 Lg Electronics Inc. Method and apparatus for processing video signal based on history based motion vector prediction
US11653022B2 (en) 2018-12-12 2023-05-16 Lg Electronics Inc. Method and apparatus for processing video signal based on history based motion vector prediction

Similar Documents

Publication Publication Date Title
US11838548B2 (en) Video coding using mapped transforms and scanning modes
US9131239B2 (en) Unified merge mode and adaptive motion vector prediction mode candidates selection
RU2582062C2 (en) Parallelisation friendly merge candidates for video coding
US9699472B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
RU2645291C2 (en) Quantization parameter (qp) encoding when encoding video
KR101547745B1 (en) Motion vector prediction
JP2014532375A (en) Sample adaptive offset merged with adaptive loop filter in video coding
RU2574280C2 (en) Selection of common candidates of mode of convergence and adaptive motion vector prediction mode
RU2574831C2 (en) Unified merge mode and adaptive motion vector prediction mode candidates selection