RU2800009C2 - Set of history-based non-adjacent mvp for video encoding wave-front processing - Google Patents

Set of history-based non-adjacent mvp for video encoding wave-front processing Download PDF

Info

Publication number
RU2800009C2
RU2800009C2 RU2020143566A RU2020143566A RU2800009C2 RU 2800009 C2 RU2800009 C2 RU 2800009C2 RU 2020143566 A RU2020143566 A RU 2020143566A RU 2020143566 A RU2020143566 A RU 2020143566A RU 2800009 C2 RU2800009 C2 RU 2800009C2
Authority
RU
Russia
Prior art keywords
motion information
motion
history
mvp
buffer
Prior art date
Application number
RU2020143566A
Other languages
Russian (ru)
Other versions
RU2020143566A (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
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2020143566A publication Critical patent/RU2020143566A/en
Application granted granted Critical
Publication of RU2800009C2 publication Critical patent/RU2800009C2/en

Links

Images

Abstract

FIELD: video data encoding.
SUBSTANCE: motion information for the first row of coding tree units (CTU) of the picture is stored in the first history motion vector predictor (MVP) memory buffer. Flush the second history MVP memory buffer. After flushing the second history MVP buffer, the motion information for the second line of the picture CTU is stored in the second history MVP buffer, the second line of the CTU being different from the first line of the CTU.
EFFECT: increased efficiency of video data encoding.
58 cl, 21 dwg

Description

[0001] Настоящая заявка испрашивает приоритет предварительной заявки США № 62/696,281, поданной 10 июля 2018, предварительной заявки США № 62/713,944, поданной 2 августа 2018 и заявки США № 16/506,720 поданной 9 июля 2019, все содержание каждой из которых включено в настоящий документ посредством ссылки. [0001] This application claims priority of U.S. Provisional Application No. 62/696,281, filed July 10, 2018, U.S. Provisional Application No. 62/713,944, filed August 2, 2018, and U.S. Application No. 16/506,720, filed July 9, 2019, the entire contents of each of which are incorporated herein by reference.

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

[0002] Настоящее раскрытие относится к кодированию видео, включая кодирование видео и декодирование видео.[0002] The present disclosure relates to video coding, including video coding and video decoding.

Предшествующий уровень техникиPrior Art

[0003] Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, в том числе, цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или стационарные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видео-телеконференций, устройства потоковой передачи (стриминга) видео и тому подобное. Цифровые видеоустройства реализуют методы кодирования видео, такие как методы, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Расширенное кодирование видео (AVC), стандарте Высокоэффективное кодирование видео (HEVC), ITU-T H.265/Высокоэффективное кодирование видео (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методов кодирования видео. [0003] Digital video functionality can be incorporated into a wide range of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-readers, digital cameras, digital recorders, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, so-called “smartphones”, video teleconferencing devices, streaming devices transmission (streaming) of video and the like. Digital video devices implement video coding techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10, Advanced Video Coding (AVC), High Efficiency Video Coding (HEVC) standard, ITU-T H.265/High Efficiency Video Coding (HEVC), and extensions to such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video coding techniques.

[0004] Методы кодирования видео выполняют пространственное (внутри изображения, внутрикадровое) предсказание и/или временное (между изображениями, межкадровое) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, вырезка (слайс) видео (т.е. изображение видео или часть изображения видео) может разбиваться на блоки видео, которые могут также упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Блоки видео в интра-кодированной (I) вырезке изображения кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в том же самом изображении. Блоки видео в интер-кодированной (P или B) вырезке изображения могут использовать пространственное предсказание по отношению к опорным выборкам в соседних блоках в том же самом изображении или временное предсказание по отношению к опорным выборкам в других опорных изображениях. Изображения могут упоминаться как кадры, и опорные изображения могут упоминаться как опорные кадры. [0004] Video coding techniques perform spatial (intra-picture, intra-picture) prediction and/or temporal (inter-picture, inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video image or a portion of a video image) may be divided into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and/or coding nodes. Video blocks in an intra-coded (I) slice of a picture are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction with respect to reference samples in neighboring blocks in the same picture, or temporal prediction with respect to reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames.

Краткое описание сущности изобретения Brief description of the essence of the invention

[0005] В общем, настоящее раскрытие описывает технологии для кодирования информации движения блоков данных видео. Эти технологии могут использоваться во время параллельной обработки волнового фронта. Информация движения может включать в себя вектора движения, которые предсказываются из основывающихся на истории предсказателей (предикторов) векторов движения (HMVP). Потенциально подходящий (кандидат) HMVP может соответствовать информации движения ранее кодированного блока. Устройство кодирования видео (кодер или декодер) может поддерживать таблицу с множеством кандидатов HMVP во время процесса кодирования (кодирования и декодирования). Устройство кодирования видео может опустошать таблицу, когда появляется новая вырезка. Когда имеется интер-кодированный блок, устройство кодирования видео может присоединять информацию движения, ассоциированную с интер-кодированным блоком, к таблице. [0005] In general, the present disclosure describes technologies for encoding motion information of video data blocks. These technologies can be used during parallel wavefront processing. The motion information may include motion vectors that are predicted from history-based motion vector predictors (HMVPs). A potentially suitable (candidate) HMVP may correspond to motion information of a previously encoded block. A video encoding device (encoder or decoder) may maintain a table with multiple HMVP candidates during the encoding (encoding and decoding) process. The video encoder may empty the table when a new cut appears. When there is an inter-coded block, the video encoding device may append motion information associated with the inter-coded block to a table.

[0006] В одном примере, способ кодирования (кодирования или декодирования) данных видео включает в себя сохранение информации движения для первой строки единиц дерева кодирования (CTU) изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти; сброс второго буфера MVP истории в памяти; и, после сброса второго буфера MVP истории, сохранение информации движения для второй строки CTU изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU. В некоторых примерах, первый подпроцесс (тред) процесса кодирования видео может кодировать первую строку CTU, и второй подпроцесс процесса кодирования видео, отличающийся от первого подпроцесса, может кодировать вторую строку CTU.[0006] In one example, a method for encoding (encoding or decoding) video data includes storing motion information for a first row of coding tree units (CTUs) of an image in a first history-based motion vector predictor (history MVP) buffer in memory; flushing the second MVP history buffer in memory; and, after flushing the second history MVP buffer, storing motion information for the second image CTU row in the second history MVP buffer, the second CTU row being different from the first CTU row. In some examples, a first sub-process (thread) of the video encoding process may encode the first CTU line, and a second sub-process of the video encoding process, different from the first sub-process, may encode the second CTU line.

[0007] В другом примере, устройство для кодирования данных видео включает в себя память, сконфигурированную, чтобы хранить данные видео; и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы: сохранять информацию движения для первой строки единиц дерева кодирования (CTU) изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти; сбрасывать второй буфер памяти MVP истории; и, после сброса второго буфера MVP истории, сохранять информацию движения для второй строки CTU изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0007] In another example, the device for encoding video data includes a memory configured to store video data; and one or more processing units implemented in the circuitry and configured to: store motion information for the first row of coding tree units (CTUs) of the picture in a first history-based motion vector predictor (history MVP) buffer in memory; flush the second history MVP memory buffer; and, after flushing the second history MVP buffer, store motion information for the second image CTU line in the second history MVP buffer, the second CTU line being different from the first CTU line.

[0008] В другом примере, считываемый компьютером носитель данных имеет сохраненные в нем инструкции, которые, при их исполнении, предписывают процессору: сохранять информацию движения для первой строки единиц дерева кодирования (CTU) изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти; сбрасывать второй буфер MVP истории в памяти; и, после сброса второго буфера MVP истории, сохранять информацию движения для второй строки CTU изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0008] In another example, a computer-readable storage medium has instructions stored therein that, when executed, cause the processor to: store motion information for the first row of coding tree units (CTUs) of an image in a first history-based motion vector predictor (history MVP) buffer in memory; flush the second history MVP buffer in memory; and, after flushing the second history MVP buffer, store motion information for the second image CTU line in the second history MVP buffer, the second CTU line being different from the first CTU line.

[0009] В другом примере, устройство для кодирования данных видео включает в себя память, сконфигурированную, чтобы хранить данные видео; средство для сохранения информации движения для первой строки единиц дерева кодирования (CTU) изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти; средство для сброса второго буфера MVP истории в памяти; и средство для сохранения информации движения для второй строки CTU изображения во втором буфере MVP истории после сброса второго буфера MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0009] In another example, the device for encoding video data includes a memory configured to store video data; means for storing motion information for a first row of coding tree units (CTUs) of an image in a first history-based motion vector predictor (history MVP) buffer in a memory; means for flushing a second history MVP buffer in memory; and means for storing motion information for the second row CTU of the image in the second history MVP buffer after flushing the second history MVP buffer, wherein the second CTU row is different from the first CTU row.

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

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

[0011] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может выполнять методы настоящего раскрытия. [0011] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system that can perform the techniques of the present disclosure.

[0012] Фиг. 2A и 2B представляют собой концептуальные диаграммы, иллюстрирующие примерную структуру квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).[0012] FIG. 2A and 2B are conceptual diagrams illustrating an exemplary quadtree-binary tree (QTBT) structure and corresponding coding tree unit (CTU).

[0013] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный процесс для кодирования информации движения с использованием предсказателей векторов движения, основывающихся на истории (HMVP).[0013] FIG. 3 is a flowchart illustrating an exemplary process for encoding motion information using history-based motion vector predictors (HMVPs).

[0014] Фиг. 4 представляет собой концептуальную диаграмму, иллюстрирующую пример обновления таблицы HMVP.[0014] FIG. 4 is a conceptual diagram illustrating an example of updating an HMVP table.

[0015] Фиг. 5 представляет собой концептуальную диаграмму, иллюстрирующую примерный выбор несмежных блоков для кодирования информации движения.[0015] FIG. 5 is a conceptual diagram illustrating an exemplary selection of non-contiguous blocks for encoding motion information.

[0016] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую примерный выбор несмежных блоков на основе родительского (порождающего) блока.[0016] FIG. 6 is a conceptual diagram illustrating exemplary selection of non-contiguous blocks based on a parent (parent) block.

[0017] Фиг. 7 представляет собой концептуальную диаграмму, иллюстрирующую пример желательной обработки волнового фронта единиц дерева кодирования (CTU).[0017] FIG. 7 is a conceptual diagram illustrating an example of desired coding tree unit (CTU) wavefront processing.

[0018] Фиг. 8 представляет собой концептуальную диаграмму, иллюстрирующую пример информации движения, используемой для HMVP.[0018] FIG. 8 is a conceptual diagram illustrating an example of motion information used for HMVP.

[0019] Фиг. 9 представляет собой концептуальную диаграмму, иллюстрирующую пример изображения, разделенной на множество строк единиц дерева кодирования (CTU).[0019] FIG. 9 is a conceptual diagram illustrating an example of an image divided into multiple lines of coding tree units (CTUs).

[0020] Фиг. 10А и 10В представляют собой блочные диаграммы, иллюстрирующие примерные пространственные соседние векторы движения, являющиеся кандидатами для режимов слияния и расширенного предсказания вектора движения (AMVP).[0020] FIG. 10A and 10B are block diagrams illustrating exemplary spatial neighbor motion vectors that are candidates for merging and advanced motion vector prediction (AMVP) modes.

[0021] Фиг. 11A и 11B представляют собой концептуальные диаграммы для иллюстрации кандидатов временного предсказания векторов движения (TMPV).[0021] FIG. 11A and 11B are conceptual diagrams for illustrating temporal motion vector prediction (TMPV) candidates.

[0022] Фиг. 12 представляет собой блочную схему, иллюстрирующую пример единицы дерева кодирования (CTU) и соседних блоков. [0022] FIG. 12 is a block diagram illustrating an example of a coding tree unit (CTU) and neighboring blocks.

[0023] Фиг. 13 представляет собой блочную схему, иллюстрирующую текущую CU в текущей CTU.[0023] FIG. 13 is a block diagram illustrating the current CU in the current CTU.

[0024] Фиг. 14 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может выполнять методы настоящего раскрытия.[0024] FIG. 14 is a block diagram illustrating an exemplary video encoder that may perform the techniques of the present disclosure.

[0025] Фиг. 15 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может выполнять методы настоящего раскрытия.[0025] FIG. 15 is a block diagram illustrating an exemplary video decoder that may perform the techniques of the present disclosure.

[0026] Фиг. 16 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ для кодирования текущего блока данных видео в соответствии с методами настоящего раскрытия.[0026] FIG. 16 is a flowchart illustrating an exemplary method for encoding a current block of video data in accordance with the techniques of the present disclosure.

[0027] Фиг. 17 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ для декодирования текущего блока данных видео в соответствии с методами настоящего раскрытия.[0027] FIG. 17 is a flowchart illustrating an exemplary method for decoding a current block of video data in accordance with the techniques of the present disclosure.

[0028] Фиг. 18 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ кодирования (кодирования или декодирования) данных видео в соответствии с методами данного раскрытия.[0028] FIG. 18 is a flowchart illustrating an exemplary method for encoding (encoding or decoding) video data in accordance with the techniques of this disclosure.

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

[0029] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 100 кодирования и декодирования видео, которая может выполнять методики согласно настоящему раскрытию. Методики по настоящему раскрытию, в основном, направлены на кодирование (кодирование и/или декодирование) данных видео. В принципе, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать необработанное, некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.[0029] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system 100 that can perform techniques according to the present disclosure. The techniques of the present disclosure are generally directed to encoding (encoding and/or decoding) video data. In principle, video data includes any video processing data. Thus, video data may include raw, unencoded video, encoded video, decoded (eg, reconstructed) video, and video metadata such as signaling data.

[0030] Как показано на фиг. 1, система 100 включает в себя устройство 102 источника, которое обеспечивает кодированные данные видео, подлежащие декодированию и отображению устройством 116 места назначения (получателем), в данном примере. В частности, устройство 102 источника предоставляет данные видео на устройство 116 места назначения посредством считываемого компьютером носителя 110. Устройство 102 источника и устройство 116 места назначения могут содержать любое из широкого спектра устройств, включая настольные компьютеры, ноутбуки, планшетные компьютеры, телевизионные приставки, телефоны, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, устройства потоковой передачи видео и тому подобное. В некоторых случаях, устройство 102 источника и устройство 116 места назначения могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.[0030] As shown in FIG. 1, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by destination device 116 (destination), in this example. In particular, source device 102 provides video data to destination device 116 via computer-readable media 110. Source device 102 and destination device 116 may comprise any of a wide variety of devices, including desktop computers, laptops, tablet computers, set-top boxes, telephones such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, and the like. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and thus may be referred to as wireless communication devices.

[0031] В примере на фиг. 1, устройство 102 источника включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство 116 места назначения включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с настоящим раскрытием, кодер 200 видео устройства 102 источника и декодер 300 видео устройства 116 места назначения могут быть сконфигурированы, чтобы применять методы для кодирования информации движения. Таким образом, устройство 102 источника представляет собой пример устройства кодирования видео, в то время как устройство 116 места назначения представляет собой пример устройства декодирования видео. В других примерах, устройство источника и устройство места назначения могут включать в себя другие компоненты или устройства. Например, устройство 102 источника может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство 116 места назначения может взаимодействовать с внешним устройством отображения вместо того, чтобы включать в себя встроенное устройство отображения.[0031] In the example of FIG. 1, the source device 102 includes a video source 104, a memory 106, a video encoder 200, and an output interface 108. The destination device 116 includes an input interface 122, a video decoder 300, a memory 120, and a display device 118. In accordance with the present disclosure, the video encoder 200 of the source device 102 and the video decoder 300 of the destination device 116 may be configured to apply techniques for encoding motion information. Thus, the source device 102 is an example of a video encoding device, while the destination device 116 is an example of a video decoding device. In other examples, the source device and the destination device may include other components or devices. For example, source device 102 may receive video data from an external video source such as an external camera. Likewise, destination device 116 may communicate with an external display device instead of including an embedded display device.

[0032] Система 100, как показано на фиг. 1, является лишь одним примером. В принципе, любое цифровое устройство кодирования и/или декодирования видео может выполнять методы для кодирования информации движения. Устройство 102 источника и устройство 116 места назначения являются лишь примерами таких кодирующих устройств, в которых устройство 102 источника генерирует кодированные данные видео для передачи на устройство 116 места назначения. Настоящее раскрытие ссылается на “кодирующее” устройство как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют собой примеры кодирующих устройств, в частности, кодер видео и декодер видео, соответственно. В некоторых примерах, устройство 102 источника и устройство 116 места назначения могут работать по существу симметрично, так что каждое из устройства 102 источника и устройства 116 места назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать однонаправленную или двунаправленную передачу видео между устройством 102 источника и устройством 116 места назначения, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии. [0032] System 100, as shown in FIG. 1 is just one example. In principle, any digital video encoding and/or decoding device can perform techniques for encoding motion information. Source device 102 and destination device 116 are just examples of such encoders in which source device 102 generates encoded video data for transmission to destination device 116 . The present disclosure refers to an “encoder” as a device that performs encoding (encoding and/or decoding) of data. Thus, video encoder 200 and video decoder 300 are examples of encoders, specifically a video encoder and a video decoder, respectively. In some examples, source device 102 and destination device 116 may operate substantially symmetrically such that source device 102 and destination device 116 each include video encoding and decoding components. Therefore, system 100 can support unidirectional or bidirectional video transmission between source device 102 and destination device 116, such as for video streaming, video playback, video broadcasting, or video telephony.

[0033] В общем случае, источник 104 видео представляет источник данных видео (т.е. необработанных, некодированных данных видео) и предоставляет последовательность картинок (также упоминаемых как “кадры”) данных видео на кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства 102 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс подачи видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию живого видео, архивного видео и генерируемого компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочивать изображения из принятого порядка (иногда называемого “порядком отображения”) в порядок кодирования для кодирования. Кодер 200 видео может генерировать битовый поток, включающий кодированные данные видео. Устройство 102 источника может затем выводить кодированные данные видео через выходной интерфейс 108 на считываемый компьютером носитель 110 для приема и/или извлечения данных, например, входным интерфейсом 122 устройства 116 места назначения.[0033] In general, video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides a sequence of pictures (also referred to as “frames”) of video data to video encoder 200, which encodes the data for the pictures. Video source 104 of source device 102 may include a video capture device such as a video camera, a video archive containing previously captured raw video, and/or a video feed interface for receiving video from a video content provider. As a further alternative, video source 104 may generate computer graphics based data as source video, or a combination of live video, archived video, and computer generated video. In each case, video encoder 200 encodes captured, pre-captured, or computer-generated video data. The video encoder 200 may reorder the pictures from the received order (sometimes referred to as "display order") into the encoding order for encoding. Video encoder 200 may generate a bitstream including encoded video data. Source device 102 may then output encoded video data via output interface 108 to computer-readable media 110 for receiving and/or retrieving data, such as input interface 122 of destination device 116.

[0034] Память 106 устройства 102 источника и память 120 устройства 116 места назначения представляют собой память общего назначения. В некоторых примерах, памяти 106 и 120 могут хранить необработанные данные видео, например необработанное видео из источника 104 видео и необработанные декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106 и 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео соответственно. Хотя показано отдельно от кодера 200 видео и декодера 300 видео, следует понимать, что кодер 200 видео и декодер 300 видео также могут включать в себя внутреннюю память для функционально сходных или эквивалентных целей. Кроме того, в памяти 106 и 120 могут храниться закодированные данные видео, например, выход с кодера 200 видео и вход в декодер 300 видео. В некоторых примерах, части памятей 106 и 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.[0034] The memory 106 of the source device 102 and the memory 120 of the destination device 116 are general purpose memory. In some examples, memories 106 and 120 may store raw video data, such as raw video from video source 104 and raw decoded video data from video decoder 300. Additionally or alternatively, memories 106 and 120 may store program instructions executable by, for example, video encoder 200 and video decoder 300, respectively. Although shown separately from video encoder 200 and video decoder 300, it should be understood that video encoder 200 and video decoder 300 may also include internal memory for functionally similar or equivalent purposes. In addition, the memories 106 and 120 may store encoded video data, such as output from video encoder 200 and input to video decoder 300. In some examples, portions of memories 106 and 120 may be allocated as one or more video buffers, such as for storing raw, decoded, and/or encoded video data.

[0035] Считываемый компьютером носитель 110 может представлять собой любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства 102 источника к устройству 116 места назначения. В одном примере, считываемый компьютером носитель 110 представляет коммуникационную среду, позволяющую устройству 102 источника передавать закодированные данные видео непосредственно на устройство 116 места назначения в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, а входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может содержать любую беспроводную или проводную коммуникационную среду, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения связи от устройства 102 источника к устройству 116 места назначения.[0035] Computer-readable media 110 can be any type of media or device capable of transporting encoded video data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium that allows source device 102 to transmit encoded video data directly to destination device 116 in real time, such as via an RF network or computer network. The output interface 108 may modulate a transmission signal including encoded video data, and the input interface 122 may demodulate the received transmission signal in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet network such as a local area network, a wide area network, or a wide area network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful in facilitating communications from source device 102 to destination device 116.

[0036] В некоторых примерах, устройство 102 источника может выводить закодированные данные из выходного интерфейса 108 в устройство 112 хранения. Аналогично, устройство 116 места назначения может получать доступ к закодированным данным из устройства 112 хранения через входной интерфейс 122. Устройство 112 хранения может включать в себя любое из множества распределенных или локально доступных носителей хранения данных, таких как накопитель на жестком диске, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители хранения для хранения закодированных данных видео.[0036] In some examples, source device 102 may output encoded data from output interface 108 to storage device 112. Likewise, destination device 116 may access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally available storage media such as hard disk drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded video data.

[0037] В некоторых примерах, устройство 102 источника может выводить кодированные данные видео на файловый сервер 114 или другое промежуточное устройство хранения, которое может хранить закодированное видео, сгенерированное устройством 102 источника. Устройство 116 места назначения может получать доступ к сохраненным данным видео с файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 116 места назначения. Файловый сервер 114 может представлять собой веб-сервер (например, для веб-сайта), сервер протокола передачи файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство 116 места назначения может получать доступ к закодированным данным видео с файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или комбинацию обоих, которая подходит для доступа к закодированным данным видео, хранящимся на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть сконфигурированы для работы в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их комбинацией.[0037] In some examples, source device 102 may output encoded video data to a file server 114 or other intermediate storage device that may store encoded video generated by source device 102. The destination device 116 can access the stored video data from the file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded video data and transmitting this encoded video data to destination device 116 . The file server 114 may be a web server (eg, for a website), a file transfer protocol (FTP) server, a network content delivery device, or a network attached storage (NAS) device. The destination device 116 can access the encoded video data from the file server 114 via any standard data connection, including an Internet connection. This may include a wireless link (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on file server 114. File server 114 and input interface 122 may be configured to operate in accordance with a streaming protocol, a download transfer protocol, or a combination of both.

[0038] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, работающие в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 содержат беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE-Advanced (Расширенное LTE), 5G или тому подобное. В некоторых примерах, если выходной интерфейс 108 содержит беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ или тому подобное. В некоторых примерах, устройство 102 источника и/или устройство 116 места назначения могут включать в себя соответствующие однокристальные (SoC) устройства. Например, устройство 102 источника может включать в себя SoC-устройство для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство 116 места назначения может включать в себя SoC-устройство для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.[0038] Output interface 108 and input interface 122 may be wireless transmitters/receivers, modems, wired network components (e.g., Ethernet cards), wireless communications components operating in accordance with any of a variety of IEEE 802.11 standards, or other physical components. In examples where the output interface 108 and the input interface 122 contain wireless components, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, in accordance with a cellular standard such as 4G, 4G-LTE (Long Term Evolution), LTE-Advanced (Extended LTE), 5G, or the like. In some examples, if the output interface 108 includes a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, in accordance with other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, or the like. In some examples, source device 102 and/or destination device 116 may include respective single-chip (SoC) devices. For example, source device 102 may include an SoC device for performing functionality related to video encoder 200 and/or output interface 108, and destination device 116 may include an SoC device for performing functionality related to video decoder 300 and/or input interface 122.

[0039] Технологии согласно настоящему раскрытию могут быть применены к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как эфирные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или других приложений.[0039] The techniques of the present disclosure may be applied to video encoding in support of any of a variety of multimedia applications such as terrestrial television transmissions, cable television transmissions, satellite television transmissions, Internet video streaming such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded on a storage medium, decoding of digital video stored on a storage medium, or other applications.

[0040] Входной интерфейс 122 устройства 116 места назначения принимает закодированный битовый поток видео со считываемого компьютером носителя 110 (например, устройства 112 хранения, файлового сервера 114 или тому подобного). Закодированный битовый поток видео может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку блоков видео или других кодированных единиц (например, вырезок, картинок, групп картинок, последовательностей или тому подобное). Устройство 118 отображения отображает пользователю декодированные изображения декодированных данных видео. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.[0040] The input interface 122 of the destination device 116 receives an encoded video bitstream from a computer-readable medium 110 (eg, storage device 112, file server 114, or the like). The encoded video bitstream may include signaling information defined by video encoder 200 that is also used by video decoder 300, such as syntax elements having values that describe characteristics and/or processing of video blocks or other encoded units (e.g., slices, pictures, groups of pictures, sequences, or the like). The display device 118 displays decoded images of the decoded video data to the user. Display device 118 may be any of a variety of display devices such as a cathode ray tube (CRT), liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.

[0041] Хотя не показано на фиг. 1, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть интегрированы с кодером аудио и/или декодером аудио и могут включать соответствующие модули мультиплексирования-демультиплексирования (MUX-DEMUX) или другие аппаратные средства и/или программное обеспечение для обработки мультиплексированных потоков, включающих в себя как аудио, так и видео, в общем потоке данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).[0041] Although not shown in FIG. 1, in some examples, video encoder 200 and video decoder 300 may be integrated with an audio encoder and/or audio decoder and may include appropriate multiplexing-demuxing (MUX-DEMUX) modules or other hardware and/or software for processing multiplexed streams, including both audio and video, in a common data stream. If applicable, MUX-DEMUX modules may conform to the ITU H.223 multiplexer protocol or other protocols such as User Datagram Protocol (UDP).

[0042] Как кодер 200 видео, так и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их комбинаций. Когда методы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, не-временном считываемом компьютером носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методов настоящего раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.[0042] Both video encoder 200 and video decoder 300 may be implemented as any of a variety of suitable encoder and/or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the methods are partially implemented in software, the device may store the instructions for the software on a suitable, non-transitory, computer-readable medium and execute the instructions in hardware using one or more processors to execute the methods of the present disclosure. Each of the video encoder 200 and video decoder 300 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 respective device. The device including the video encoder 200 and/or video decoder 300 may include an integrated circuit, a microprocessor, and/or a wireless communication device such as a cellular phone.

[0043] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. В качестве альтернативы, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019, JVET-N1001-v3 (далее “VVC Draft 5”). Однако методы настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.[0043] Video encoder 200 and video decoder 300 may operate in accordance with a video coding standard such as ITU-T H. 265, also referred to as High Efficiency Video Coding (HEVC), or extensions thereof, such as multiview and/or scalable video coding extensions. Alternatively, video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standards such as the Joint Exploration Test Model (JEM) or ITU-T H.266, also referred to as Versatile Video Coding (VVC). A recent draft VVC standard is described in Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019, JVET-N1001-v3 (hereinafter “VVC Draft 5”). However, the techniques of the present disclosure are not limited to any particular coding standard.

[0044] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть вместо кодирования данных красного, зеленого и синего (RGB) для выборок изображения, кодер 200 видео и декодер 300 видео может кодировать компоненты в себя яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, а декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).[0044] In general, video encoder 200 and video decoder 300 may perform block coding of pictures. The term “block” generally refers to a structure containing data to be processed (eg, encoded, decoded, or otherwise used in an encoding and/or decoding process). For example, the block may include a two-dimensional matrix of luma and/or chrominance data samples. In general, video encoder 200 and video decoder 300 may encode video data represented in YUV format (eg, Y, Cb, Cr). That is, instead of encoding the red, green, and blue (RGB) data for the image samples, video encoder 200 and video decoder 300 may encode luminance and chrominance components into itself, where the chrominance components may include both red tint and blue tint chrominance components. In some examples, video encoder 200 converts the received RGB data to a YUV representation prior to encoding, and video decoder 300 converts the YUV representation to RGB. Alternatively, these transformations may be performed by pre- and post-processing modules (not shown).

[0045] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных изображения. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование изображения или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих изображение или блок.[0045] The present disclosure may generally refer to encoding (eg, encoding and decoding) of pictures, including the process of encoding or decoding image data. Likewise, the present disclosure may refer to picture block coding, including the process of encoding or decoding data for blocks, such as prediction and/or residual coding. The encoded video bitstream typically includes a sequence of values for syntax elements representing coding decisions (eg, coding modes) and picture blocking. Thus, references to encoding an image or block should generally be understood as encoding values for the syntax elements that make up the image or block.

[0046] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть устройство кодирования видео разбивает CTU и CU на четыре равных, непересекающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима. [0046] HEVC defines various blocks, including coding units (CU), prediction units (PU), and transform units (TU). According to HEVC, a video encoder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video encoder splits the CTU and CU into four equal, non-overlapping squares, and each quadtree node has either zero or four child nodes. Nodes without child nodes may be referred to as "leaf nodes" and the CUs of such leaf nodes may include one or more PUs and/or one or more TUs. The video encoder may further split the PU and TU. For example, in HEVC, the residual quadtree (RQT) is a partition of the TU. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are intra predicted include intra prediction information such as an intra mode indication.

[0047] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть сконфигурированы для работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает изображение на множество единиц дерева кодирования (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT может включать в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).[0047] As another example, video encoder 200 and video decoder 300 may be configured to operate in accordance with JEM or VVC. According to JEM or VVC, a video encoder (such as video encoder 200) splits an image into multiple coding tree units (CTUs). The video encoder 200 may partition the CTU according to a tree structure, such as a quadtree-binary tree (QTBT) structure or a multiple type tree (MTT) structure. The QTBT structure eliminates the concept of multiple types of partitioning, such as partitioning between CUs, PUs, and TUs in HEVC. The QTBT structure may include two levels: a first level divided according to a quadtree split and a second level divided according to a binary tree split. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of binary trees correspond to coding units (CUs).

[0048] В структуре разбиения MTT, блоки могут быть разделены с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или более типов разбиений троичного дерева (TT). Разбиение троичного дерева представляет собой разбиение, когда блок разделяется на три подблока. В некоторых примерах, разбиение троичного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.[0048] In an MTT split structure, blocks may be split using a quadtree split (QT), a binary tree split (BT), and one or more types of ternary tree splits (TT). A ternary tree split is a split when a block is split into three subblocks. In some examples, splitting a ternary tree divides a block into three subblocks without dividing the original block through the center. Partition types in MTT (for example, QT, BT, and TT) can be symmetric or asymmetric.

[0049] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать одну структуру QTBT или МТТ для представления компонентов как яркости, так и цветности, в то время как в других примерах, кодер 200 видео и декодер 300 видео могут использовать две или более структур QTBT или МТТ, например, одну структуру QTBT или МТТ для компонента яркости и другую структуру QTBT или МТТ для обоих компонентов цветности (или две структуры QTBT или МТТ для соответствующих компонентов цветности).[0049] In some examples, video encoder 200 and video decoder 300 may use a single QTBT or MTT structure to represent both luminance and chrominance components, while in other examples, video encoder 200 and video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT or MTT structure for the luma component and another QTBT or MTT structure for both chrominance components (or two Q structures). TBT or MTT for the respective chrominance components).

[0050] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы для использования разбиения квадродерева в HEVC, разбиения QTBT в соответствии с JEM или других структур разбиения. В целях пояснения, описание методов настоящего раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что методы настоящего раскрытия также могут быть применены к устройствам кодирования видео, сконфигурированным для использования разбиения квадродерева или других типов разбиения.[0050] Video encoder 200 and video decoder 300 may be configured to use HEVC quadtree splitting, JEM QTBT splitting, or other splitting structures. For purposes of explanation, a description of the methods of the present disclosure is provided in relation to splitting a QTBT. However, it should be understood that the techniques of the present disclosure may also be applied to video encoders configured to use quadtree partitioning or other types of partitioning.

[0051] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео), в терминах вертикального и горизонтального размеров, например, 16×16 выборок или 16 на 16 выборок. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целое значение. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном. Например, CU может содержать N×M выборок, где M не обязательно равно N. [0051] The present disclosure may use “N×N” and “N by N” interchangeably to refer to sample sizes of a block (such as a CU or other video block), in terms of vertical and horizontal dimensions, such as 16×16 samples or 16 by 16 samples. In general, a 16×16 CU will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Similarly, an N×N CU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. Samples in a CU can be arranged in rows and columns. In addition, CUs do not need to have the same number of samples in the horizontal direction and in the vertical direction. For example, a CU may contain N×M samples, where M is not necessarily equal to N.

[0052] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.[0052] The video encoder 200 encodes video data for CUs representing prediction information and/or residual information and other information. The prediction information indicates how the CU should be predicted in order to generate a prediction block for the CU. The residual information is typically the sample-to-sample differences between pre-coding CU samples and the prediction block.

[0053] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной изображения, в то время как интра-предсказание обычно относится к предсказанию СU из ранее кодированных данных той же самой изображения. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с CU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (МSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания. [0053] For CU prediction, video encoder 200 may typically generate a prediction block for the CU via inter-prediction or intra-prediction. Inter-prediction generally refers to CU prediction from previously encoded image data, while intra-prediction generally refers to CU prediction from previously encoded same image data. To perform inter prediction, video encoder 200 may generate a prediction block using one or more motion vectors. The video encoder 200 can typically perform a motion search to identify a reference block that closely matches the CU, eg, in terms of differences between the CU and the reference block. Video encoder 200 may compute a difference metric using sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), root mean square differences (MSD), or other similar difference calculations to determine if a reference block is closely matched to the current CU. In some examples, video encoder 200 may predict the current CU using unidirectional prediction or bidirectional prediction.

[0054] JEM также обеспечивает режим аффинной компенсации движения, который может рассматриваться как режим интер-предсказания. В режиме аффинной компенсации движения, кодер 200 видео может определять два или более вектора движения, которые представляют непоступательное движение, такое как увеличение или уменьшение масштаба, вращение, движение в перспективе или другие типы нерегулярного движения. [0054] JEM also provides an affine motion compensation mode, which can be thought of as an inter-prediction mode. In the affine motion compensation mode, video encoder 200 may determine two or more motion vectors that represent non-translational motion such as zoom in or out, rotation, perspective movement, or other types of irregular motion.

[0055] Для выполнения интра-предсказания, кодер 200 видео может выбрать режим интра-предсказания для генерации блока предсказания. JEM обеспечивает шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем случае, кодер 200 видео выбирает режим интра-предсказания, который описывает соседние выборки для текущего блока (например, блока CU), из которых следует предсказывать выборки текущего блока. Такие выборки обычно могут находиться сверху, сверху и слева или слева от текущего блока в том же изображении, где и текущий блок, в предположении, что кодер 200 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз). [0055] To perform intra prediction, video encoder 200 may select an intra prediction mode to generate a prediction block. JEM provides sixty-seven intra-prediction modes, including various directional modes as well as planar and DC modes. In general, video encoder 200 selects an intra-prediction mode that describes adjacent samples for the current block (eg, CU) from which the current block samples should be predicted. Such samples may typically be above, above and to the left or left of the current block in the same picture as the current block, assuming that video encoder 200 encodes CTUs and CUs in raster scan order (left to right, top to bottom).

[0056] Кодер 200 видео кодирует данные, представляющие режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима слияния. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для режима аффинной компенсации движения.[0056] The video encoder 200 encodes data representing the prediction mode for the current block. For example, for inter prediction modes, video encoder 200 may encode data representing which of the various available inter prediction modes is in use, as well as motion information for the corresponding mode. For example, for unidirectional or bidirectional inter-prediction, video encoder 200 may encode motion vectors using advanced motion vector prediction (AMVP) or merge mode. Video encoder 200 may use similar modes to encode motion vectors for the affine motion compensation mode.

[0057] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.[0057] After prediction, such as intra-prediction or inter-prediction of a block, video encoder 200 may calculate residual data for the block. Residual data, such as a residual block, represents the sample-to-sample differences between a given block and a prediction block for a given block generated using the corresponding prediction mode. Video encoder 200 may apply one or more transforms to the residual block to obtain transformed data in the transform region instead of the sample region. For example, video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the video residual data. In addition, the video encoder 200 may apply a secondary transform after the first transform, such as mode-dependent indivisible secondary transform (MDNSST), signal-dependent transform, Karhunen-Loeve transform (KLT), and the like. Video encoder 200 generates transform coefficients after applying one or more transforms.

[0058] Как отмечалось выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию. [0058] As noted above, after any transformations to obtain transform coefficients, video encoder 200 may perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to reduce the amount of data used to represent the coefficients as much as possible, allowing for further compression. By performing a quantization process, video encoder 200 may reduce the bit depth associated with some or all of the coefficients. For example, video encoder 200 may round an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, video encoder 200 may perform a bitwise right shift of the value to be quantized.

[0059] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения преобразованного в последовательную форму вектора, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.[0059] After quantization, video encoder 200 may scan the transform coefficients, forming a one-dimensional vector from a two-dimensional matrix including the quantized transform coefficients. The scan can be designed to place the higher energy (and therefore lower frequency) transform coefficients at the beginning of the vector, and to place the lower energy (and hence higher frequency) transform coefficients at the end of the vector. In some examples, video encoder 200 may use a predefined scan order to scan the quantized transform coefficients to obtain a serialized vector, and then entropy encode the quantized transform coefficients of the vector. In other examples, video encoder 200 may perform adaptive scanning. After scanning the quantized transform coefficients to generate a one-dimensional vector, video encoder 200 may entropy encode the one-dimensional vector, such as in accordance with context adaptive binary arithmetic coding (CABAC). Video encoder 200 may also entropy encode values for syntax elements describing metadata associated with encoded video data for use by video decoder 300 when decoding video data.

[0060] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу. [0060] To perform CABAC, video encoder 200 may assign a context within a context model to a character to be transmitted. The context may relate, for example, to whether adjacent symbol values are null or not. The probability determination may be based on the context assigned to the symbol.

[0061] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе изображения и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке изображения, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров изображения (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.[0061] The video encoder 200 may further generate syntax data such as block-based syntax data, image-based syntax data, and sequence-based syntax data for the video decoder 300, such as in a picture header, block header, slice header, or other syntax data such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). The video decoder 300 may also decode such syntax data to determine how to decode the corresponding video data.

[0062] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео, например, синтаксические элементы, описывающие разбиение изображения на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.[0062] Thus, video encoder 200 can generate a bitstream including encoded video data, such as syntax elements describing the partitioning of an image into blocks (eg, CUs), and prediction information and/or residual information for the blocks. Ultimately, the video decoder 300 may receive the bitstream and decode the encoded video data.

[0063] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения изображения на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.[0063] In principle, the video decoder 300 performs a reverse process to the process performed by the video encoder 200 to decode encoded video bitstream data. For example, video decoder 300 may decode values for bitstream syntax elements using CABAC in a substantially similar, albeit inverse manner to the CABAC coding process of video encoder 200. The syntax elements may define partitioning information of an image into CTUs and partitioning of each CTU according to an appropriate partitioning structure, such as a QTBT structure, to define a CU in a CTU. The syntax elements may further define prediction and residual information for blocks (eg, CUs) of video data.

[0064] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказания) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.[0064] The residual information may be represented, for example, by quantized transform coefficients. Video decoder 300 may inversely quantize and inversely transform the quantized block transform coefficients to recover a residual block for that block. Video decoder 300 uses the signaled prediction mode (intra or inter prediction) and associated prediction information (eg, motion information for inter prediction) to generate a prediction block for that block. Video decoder 300 may then combine the prediction block and the residual block (sample-to-sample basis) to reconstruct the original block. Video decoder 300 may perform additional processing, such as performing a deblocking process to reduce visual artifacts along block boundaries.

[0065] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство 102 источника может транспортировать битовый поток к устройству 116 места назначения по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством 116 места назначения.[0065] The present disclosure may generally refer to "signaling" certain information, such as syntax elements. The term “signaling” may generally refer to reporting values for syntax elements and/or other data used to decode encoded video data. That is, video encoder 200 may signal values for syntax elements in the bitstream. In general, signaling refers to the generation of a value in a bitstream. As noted above, source device 102 may transport the bitstream to destination device 116 in substantially real time or non-real time, as may occur when syntax elements are stored in storage device 112 for later retrieval by destination device 116.

[0066] В соответствии с методами настоящего раскрытия, кодер 200 видео и декодер 300 видео могут быть сконфигурированы для выполнения параллельной обработки волнового фронта при кодировании изображения данных видео. В общем, параллельная обработка волнового фронта может включать кодирование отдельных строк единиц дерева кодирования (CTU) с использованием отдельных подпроцессов обработки. Например, первый подпроцесс, исполняемый кодером 200 видео или декодером 300 видео, может обрабатывать первую строку CTU, второй подпроцесс может обрабатывать вторую строку CTU и т.д. Кодирование CTU включает в себя, среди прочего, кодирование информации движения для единиц кодирования (CU) с предсказанием движения в CTU, которые могут ссылаться на информацию движения в пределах той же самой CTU или ранее кодированной CTU (например, левой и/или верхней соседней CTU). Такая информация движения может сохраняться в буфере предсказателя вектора движения (MVP). В соответствии с методами настоящего раскрытия, кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы сбрасывать буфер MVP для текущей строки CTU перед кодированием данных видео текущей строки CTU. Буфер MVP может быть отдельным буфером MVP для текущей строки CTU, или общий буфер MVP может использоваться для множества строк CTU.[0066] In accordance with the techniques of the present disclosure, video encoder 200 and video decoder 300 may be configured to perform wavefront processing in parallel when encoding an image of video data. In general, parallel wavefront processing may involve encoding separate strings of coding tree units (CTUs) using separate processing sub-processes. For example, the first sub-process executed by video encoder 200 or video decoder 300 may process the first CTU row, the second sub-process may process the second CTU row, and so on. CTU encoding includes, among other things, encoding motion information for motion prediction coding units (CUs) in a CTU that may refer to motion information within the same CTU or a previously coded CTU (eg, left and/or upper neighbor CTU). Such motion information may be stored in a motion vector predictor (MVP) buffer. In accordance with the techniques of the present disclosure, video encoder 200 and video decoder 300 may be configured to flush the MVP buffer for the current CTU line before encoding the video data of the current CTU line. The MVP buffer may be a separate MVP buffer for the current CTU row, or a common MVP buffer may be used for multiple CTU rows.

[0067] В некоторых примерах, при сохранении информации движения в буфере MVP, кодер 200 видео и декодер 300 видео могут сохранять только уникальную информацию движения в буфере MVP. Например, кодер 200 видео и декодер 300 видео могут кодировать текущую CU с использованием текущего вектора движения, определять, сохранен ли в текущее время вектор движения в буфере MVP для текущей CU, и если да, запрещать сохранение вектора движения в буфере MVP, а если нет, то сохранять вектор движения в буфере MVP.[0067] In some examples, when storing motion information in the MVP buffer, video encoder 200 and video decoder 300 may only store unique motion information in the MVP buffer. For example, video encoder 200 and video decoder 300 may encode the current CU using the current motion vector, determine whether the motion vector is currently stored in the MVP buffer for the current CU, and if so, disable storing the motion vector in the MVP buffer, and if not, store the motion vector in the MVP buffer.

[0068] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать правило “первым пришел - первым обслужен” (FIFO) для удаления векторов движения из буфера MVP, когда буфер MVP становится заполненным. То есть для того, чтобы добавить новый вектор движения в буфер MVP, кодер 200 видео и декодер 300 видео могут удалить самый ранний введенный вектор движения из буфера MVP и ввести новый вектор движения в буфер MVP. Таким образом, буфер MVP может реализовывать режим, подобный очереди.[0068] In some examples, video encoder 200 and video decoder 300 may use a first-come-first-served (FIFO) rule to remove motion vectors from the MVP buffer when the MVP buffer becomes full. That is, in order to add a new motion vector to the MVP buffer, video encoder 200 and video decoder 300 may remove the earliest input motion vector from the MVP buffer and insert a new motion vector into the MVP buffer. Thus, the MVP buffer can implement a queue-like behavior.

[0069] В некоторых примерах, кодер 200 видео и декодер 300 видео могут поддерживать отдельные буферы MVP для каждого из множества типов различных моделей движения. Например, кодер 200 видео и декодер 300 видео могут поддерживать буфер аффинного MVP для аффинной модели движения, буфер MVP внутриблочного копирования для информации движения режима внутриблочного копирования, буфер MVP компенсации освещения для информации движения компенсации локального освещения, буфер подблочного MVP для подблочного MVP и/или буфер временного MVP для временного предсказания движения.[0069] In some examples, video encoder 200 and video decoder 300 may maintain separate MVP buffers for each of a variety of different motion model types. For example, video encoder 200 and video decoder 300 may support an affine MVP buffer for an affine motion model, an intra-block copy MVP buffer for intra-block copy mode motion information, a lighting compensation MVP buffer for local lighting compensation motion information, a sub-block MVP buffer for sub-block MVP, and/or a temporal MVP buffer for temporal motion prediction.

[0070] В некоторых примерах, кодер 200 видео и декодер 300 видео могут генерировать синтетический MVP из двух или более MVP в одном или более буферах MVP и вводить синтетический MVP в один из буферов MVP. Два или более MVP могут соответствовать одной и той же или различным моделям движения (то есть иметь разные типы информации движения).[0070] In some examples, video encoder 200 and video decoder 300 may generate a synthetic MVP from two or more MVPs in one or more MVP buffers and input the synthetic MVP into one of the MVP buffers. Two or more MVPs may correspond to the same or different traffic models (that is, have different types of traffic information).

[0071] Фиг. 2A и 2B представляют собой концептуальную диаграмму, иллюстрирующую примерную структуру 130 квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU) 132. Сплошные линии представляют разбиение квадродерева, а пунктирные линии указывают разбиение двоичного дерева. В каждом разделенном (т.е. нелистовом) узле двоичного дерева сигнализируется один флаг, указывающий, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разделение, а 1 указывает вертикальное разделение в данном примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и вертикали на 4 подблока одинакового размера. Соответственно, кодер 200 видео может кодировать, а декодер 300 видео может декодировать синтаксические элементы (такие как информация разделения) для уровня дерева области структуры QTBT 130 (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры QTBT 130 (т.е. пунктирные линии). Кодер 200 видео может кодировать, а декодер 300 видео может декодировать данные видео, такие как данные предсказания и преобразования, для CU, представленных конечными листовыми узлами структуры QTBT 130.[0071] FIG. 2A and 2B are a conceptual diagram illustrating an exemplary quadtree-binary tree (QTBT) structure 130 and corresponding coding tree unit (CTU) 132. Solid lines represent quadtree partitioning, and dotted lines indicate binary tree partitioning. At each split (ie, non-leaf) node of the binary tree, one flag is signaled indicating which type of split (ie, horizontal or vertical) is used, where 0 indicates horizontal split and 1 indicates vertical split in this example. To split a quadtree, it is not necessary to specify a split type, since the quadtree nodes divide the block horizontally and vertically into 4 equally sized subblocks. Accordingly, video encoder 200 may encode and video decoder 300 may decode syntax elements (such as split information) for the area tree layer of the QTBT structure 130 (i.e., solid lines) and syntax elements (such as split information) for the prediction tree layer of the QTBT structure 130 (i.e., dotted lines). Video encoder 200 may encode and video decoder 300 may decode video data, such as prediction and transform data, for the CUs represented by leaf leaf nodes of the QTBT structure 130.

[0072] В общем, CTU 132 на фиг. 2B может ассоциироваться с параметрами, определяющими размеры блоков, соответствующих узлам структуры QTBT 130 на первом и втором уровнях (например, уровне дерева области и уровне дерева предсказания). Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимально допустимый размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимально допустимый размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющий максимально допустимую глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимально допустимый размер листового узла двоичного дерева). [0072] In general, CTU 132 in FIG. 2B may be associated with parameters defining block sizes corresponding to the nodes of the QTBT structure 130 at the first and second levels (eg, region tree level and prediction tree level). These parameters may include the CTU size (representing the size of the CTU 132 in samples), the minimum quadtree size (MinQTSize, representing the minimum allowable quadtree leaf node size), the maximum binary tree size (MaxBTSize, representing the maximum allowable binary tree root node size), the maximum binary tree depth (MaxBTDepth, representing the maximum allowable binary tree depth), and the minimum binary tree size (MinBTSize, representing the minimum allowable th size of the leaf node of the binary tree).

[0073] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может разбиваться в соответствии с разбиением квадродерева. То есть узлы первого уровня являются либо листовыми узлами (не имеющими дочерних узлов), либо имеют четыре дочерних узла. Пример структуры QTBT 130 представляет такие узлы, как включающие родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше, чем максимально допустимый размер корневого узла двоичного дерева (MaxBTSize), то узлы могут дополнительно разбиваться на соответствующие двоичные деревья. Разделение двоичного дерева одного узла может повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимально допустимого размера листового узла двоичного дерева (MinBTSize) или максимально допустимой глубины двоичного дерева (MaxBTDepth). Пример структуры QTBT 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодирования (CU), которая используется для предсказания (например, предсказания внутри изображения или между изображениями) и преобразования, без какого-либо дальнейшего разбиения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.[0073] The root node of the QTBT structure corresponding to the CTU may have four child nodes at the first level of the QTBT structure, each of which may be partitioned according to a quadtree split. That is, the first-level nodes are either leaf nodes (having no children) or have four children. An example structure of QTBT 130 represents nodes such as including a parent node and child nodes having solid lines for branches. If the nodes of the first level are not larger than the maximum allowable size of the root node of the binary tree (MaxBTSize), then the nodes can be further split into the corresponding binary trees. Splitting a binary tree of one node may be repeated until the nodes resulting from the split reach the minimum allowable binary tree leaf node size (MinBTSize) or the maximum allowable binary tree depth (MaxBTDepth). An example structure of QTBT 130 represents such nodes as having dashed lines for branches. A leaf node of a binary tree is referred to as a coding unit (CU) which is used for prediction (eg intra-image or inter-image prediction) and transformation without any further partitioning. As discussed above, CUs may also be referred to as “video blocks” or “blocks”.

[0074] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующие 64×64 выборки цветности), MinQTSize устанавливается как 16×16, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и для высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала, чтобы сформировать листовые узлы квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделен на двоичное дерево, так как размер превышает MaxBTSize (т.е. 64×64, в данном примере). В противном случае, листовой узел квадродерева будет дополнительно разбиваться на двоичное дерево. Таким образом, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева, равную 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в данном примере), дальнейшее разделение не допускается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в данном примере), это означает, что дальнейшее вертикальное разделение не допускается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает, что дальнейшее горизонтальное разделение для этого узла двоичного дерева не допускается. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются в соответствии с предсказанием и преобразованием без дальнейшего разбиения.[0074] In one example of a QTBT split structure, the CTU size is set to 128x128 (luminance samples and two corresponding 64x64 chrominance samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (for both width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree splitting is applied to the CTU first to form a leaf new nodes of the quadtree. The leaf nodes of the quadtree can be from 16x16 (ie MinQTSize) to 128x128 (ie CTU size). If a quadtree leaf node is 128x128, it will not be further split into a binary tree because the size is larger than MaxBTSize (ie 64x64, in this example). Otherwise, the leaf node of the quadtree will be further split into a binary tree. Thus, the leaf node of the quadtree is also the root node for the binary tree and has a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (4, in this example), no further splitting is allowed. When a binary tree node has a width equal to MinBTSize (4, in this example), this means that no further vertical splitting is allowed. Similarly, a binary tree node having a height equal to MinBTSize implies that no further horizontal splitting is allowed for that binary tree node. As noted above, the leaf nodes of the binary tree are referred to as CUs and are further processed according to prediction and transformation without further partitioning.

[0075] Фиг. 3 представляет собой блок-схему последовательности операций, иллюстрирующую примерный процесс для кодирования информации движения с использованием предсказателей векторов движения истории (HMVP). Первоначально устройство кодирования видео, такое как кодер 200 видео или декодер 300 видео, загружает таблицу с кандидатами HMVP (140). Затем устройство кодирования видео кодирует блок данных видео с использованием кандидатов HMVP (142). Затем устройство кодирования видео обновляет таблицу информацией движения кодированного блока (144).[0075] FIG. 3 is a flowchart illustrating an exemplary process for encoding motion information using history motion vector predictors (HMVPs). Initially, a video encoder, such as video encoder 200 or video decoder 300, downloads the HMVP candidate table (140). The video encoder then encodes the video data block using HMVP candidates (142). The video encoder then updates the table with motion information of the encoded block (144).

[0076] Фиг. 4 представляет собой концептуальную диаграмму, иллюстрирующую пример обновления таблицы HMVP. В JVET-K0104, размер таблицы установлен равным 16, и применяется правило “первым пришел - первым обслужен” (FIFO). Фиг. 4 изображает пример, в котором правило FIFO применяется для удаления кандидата HMVP и добавления нового в таблицу, используемую в примерах методов настоящего раскрытия. [0076] FIG. 4 is a conceptual diagram illustrating an example of updating an HMVP table. In JVET-K0104, the table size is set to 16 and the first-in-first-out (FIFO) rule is applied. Fig. 4 depicts an example in which a FIFO rule is applied to remove an HMVP candidate and add a new one to the table used in the example methods of the present disclosure.

[0077] Устройство кодирования видео, такое как кодер 200 видео или декодер 300 видео, может вводить кандидатов HMVP из последней записи в первую запись в таблице после кандидата временного предсказания вектора движения (TMVP) в список кандидатов. Устройство кодирования видео может применить обрезку (исключение) к кандидатам HMVP. Устройство кодирования видео может прекратить процесс обрезки, когда общее число доступных кандидатов слияния достигнет сигнализированного максимально допустимого числа кандидатов слияния.[0077] A video encoding device such as video encoder 200 or video decoder 300 may insert HMVP candidates from the last entry into the first entry in the table after a temporal motion vector prediction (TMVP) candidate in the candidate list. The video encoder may apply clipping (elimination) to HMVP candidates. The video encoding device may terminate the trimming process when the total number of available merge candidates reaches the signaled maximum allowable number of merge candidates.

[0078] В примере на фиг. 4, таблица перед обновлением содержит от MVP0 истории (HMVP0) до MVPL-1 истории (HMVPL-1), где нижние индексы от 0 до L-1 представляют порядок, в котором добавляются MVP истории. CL-1 представляет новый MVP истории, подлежащий добавлению в таблицу. Таким образом, согласно правилу FIFO, HMVP0 удаляется из таблицы перед добавлением CL-1, в данном примере.[0078] In the example of FIG. 4, the pre-update table contains history MVP 0 (HMVP 0 ) to history MVP L-1 (HMVP L-1 ), where subscripts 0 to L-1 represent the order in which history MVPs are added. C L-1 represents the new story MVP to be added to the table. Thus, according to the FIFO rule, HMVP 0 is removed from the table before C L-1 is added, in this example.

[0079] Фиг. 5 представляет собой концептуальную диаграмму, иллюстрирующую примерный выбор несмежных блоков для кодирования информации движения. В примере на фиг. 5, текущий блок, обозначенный “Curr”, представляет текущую единицу кодирования (CU), для которой информация движения может быть закодирована с использованием смежных и/или несмежных соседних блоков, обозначенных Ai, Bj и NAk. Предсказание несмежного вектора движения описано, например, в заявке США № 16/003,269, поданной 8 июня 2018. Устройство кодирования видео может применять правило FIFO и максимальный размер буфера кандидатов движения для несмежных блоков. [0079] FIG. 5 is a conceptual diagram illustrating an exemplary selection of non-contiguous blocks for encoding motion information. In the example in FIG. 5, the current block, denoted by “Curr”, represents the current coding unit (CU) for which motion information can be encoded using adjacent and/or non-adjacent adjacent blocks, denoted A i , B j , and NA k . Non-adjacent motion vector prediction is described, for example, in US Application No. 16/003,269, filed June 8, 2018. A video encoder may apply a FIFO rule and a maximum size of a motion candidate buffer for non-adjacent blocks.

[0080] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую примерный выбор несмежных блоков на основе родительского блока. То есть, родительский блок представляет собой блок, разбитый на подблоки, включая текущий блок. Например, родительский блок может представлять собой CTU или подблок, на который была разделена CTU. Подобно фиг. 5, на фиг. 6 текущая CU обозначена как “Curr”, и несмежные блоки, из которых информация движения может извлекаться и использоваться для предсказания информации движения текущей CU, обозначены как “NAi,j”. [0080] FIG. 6 is a conceptual diagram illustrating exemplary selection of non-contiguous boxes based on a parent box. That is, the parent block is a block divided into subblocks, including the current block. For example, the parent unit may be a CTU or a subunit into which the CTU has been partitioned. Like FIG. 5 in FIG. 6, the current CU is denoted as “Curr”, and non-contiguous blocks from which motion information can be extracted and used to predict motion information of the current CU are denoted as “NA i,j ”.

[0081] Векторы движения смежных пространственных блоков совмещенного блока могут быть использованы в качестве кандидатов предсказания вектора движения (MVP) для режима слияния, в дополнение к векторам движения H и C (то есть векторам движения в центре и снизу-справа от совмещенного блока).[0081] The motion vectors of adjacent spatial blocks of the aligned block can be used as motion vector prediction (MVP) candidates for the merge mode, in addition to the motion vectors H and C (i.e., the motion vectors at the center and bottom-right of the aligned block).

[0082] Методы настоящего раскрытия могут быть использованы для улучшения предсказания вектора движения, например, путем добавления кандидатов, используемых для режимов AMVP и/или кодирования со слиянием, где добавленные кандидаты могут быть взяты из несмежных блоков. Например, добавленные кандидаты могут соответствовать любым из NA1,1 до NA1,9 на фиг. 6.[0082] The techniques of the present disclosure can be used to improve motion vector prediction, for example, by adding candidates used for AMVP and/or merge coding modes, where the added candidates can be taken from non-contiguous blocks. For example, the added candidates may correspond to any of NA 1.1 to NA 1.9 in FIG. 6.

[0083] Фиг. 7 представляет собой концептуальную диаграмму, иллюстрирующую пример желательной обработки волнового фронта единиц дерева кодирования (CTU). Как показано на фиг. 7, для обработки различных строк CTU, могут быть назначены различные подпроцессы. То есть устройство кодирования видео, такое как кодер 200 видео или декодер 300 видео, может исполнять множество различных подпроцессов, например, для параллельной обработки волнового фронта (WPP) при кодировании различных строк CTU. В некоторых примерах, определенные вероятности, используемые для контекстного кодирования (например, кодирования CABAC) информации движения интер-предсказанных блоков, не могли бы определяться, если бы вероятности надо было определять из последнего блока предыдущей строки CTU, например, в предположении, что последний блок еще не был кодирован. Таким образом, в соответствии с методами настоящего раскрытия, кодер 200 видео и декодер 300 видео могут сбросить буфер CTU для строки CTU перед кодированием строки CTU, чтобы гарантировать, что строки CTU могут обрабатываться корректным образом.[0083] FIG. 7 is a conceptual diagram illustrating an example of desired coding tree unit (CTU) wavefront processing. As shown in FIG. 7, different sub-processes can be assigned to handle different CTU strings. That is, a video encoder, such as video encoder 200 or video decoder 300, may execute many different sub-processes, such as wavefront parallel processing (WPP) when encoding different CTU lines. In some examples, certain probabilities used for context encoding (e.g., CABAC encoding) of motion information of inter-predicted blocks could not be determined if the probabilities were to be determined from the last block of the previous CTU row, for example, assuming that the last block had not yet been encoded. Thus, in accordance with the techniques of the present disclosure, video encoder 200 and video decoder 300 may flush the CTU buffer for the CTU line before encoding the CTU line to ensure that the CTU lines can be processed correctly.

[0084] Фиг. 8 представляет собой концептуальную диаграмму, иллюстрирующую пример информации движения, используемой для HMVP. Фиг. 8 иллюстрирует, как использование FIFO может удалять векторы движения блоков, более близких к текущему блоку, из списка кандидатов, в то время как векторы движения последующих блоков могут приниматься во внимание. В частности, на фиг. 8, X представляет информацию движения, кодируемую в текущее время, и MV заштрихованных блоков находятся в буфере истории. Настоящее раскрытие признает, что традиционные методы HMVP не полностью используют векторы движения несмежных блоков, по меньшей мере частично, ввиду использования правила FIFO, как показано на фиг. 8.[0084] FIG. 8 is a conceptual diagram illustrating an example of motion information used for HMVP. Fig. 8 illustrates how the use of FIFO can remove the motion vectors of blocks closer to the current block from the list of candidates, while the motion vectors of subsequent blocks can be taken into account. In particular, in FIG. 8, X represents motion information encoded at the current time, and MVs of shaded blocks are in the history buffer. The present disclosure recognizes that conventional HMVP techniques do not fully utilize motion vectors of non-contiguous blocks, at least in part due to the use of the FIFO rule as shown in FIG. 8.

[0085] В частности, при кодировании блока X, информация движения несмежных блоков (TL0, T0, T1, TR0, TR1, TR2, TR3) верхней-левой CTU, верхней CTU и верхней-правой CTU была удалена из буфера истории. Поэтому информация движения этих блоков не рассматривается для добавления в список кандидатов, даже если несмежные блоки находятся ближе к X, чем, например, CTU LL0, CTU LL1 и CTU F0-F3, векторы движения которых находятся в буфере истории.[0085] In particular, when encoding block X, motion information of non-adjacent blocks (TL0, T0, T1, TR0, TR1, TR2, TR3) of the top-left CTU, top CTU, and top-right CTU was removed from the history buffer. Therefore, motion information of these blocks is not considered to be added to the candidate list even if non-adjacent blocks are closer to X than, for example, CTU LL0, CTU LL1 and CTU F0-F3 whose motion vectors are in the history buffer.

[0086] Настоящее раскрытие также признает, что один буфер для HVMP не применим для параллельной обработки волнового фронта. Если используется только один буфер, размер буфера должен быть очень большим для вмещения потенциальных пространственных кандидатов для блоков, обрабатываемых в каждом подпроцессе (например, строк CTU). Например, если четыре подпроцесса настроены, чтобы исполняться параллельно, размер буфера может достигать 64. В результате, потребуется больше битов, чтобы сигнализировать индекс MVP декодеру 300 видео. Аналогичным образом, могут возникать избыточные записи. То есть, запись в буфере истории может быть потенциально полезной для блока в этой строке, но может быть бесполезной для блоков в других строках (например, X и F на фиг. 8). Следовательно, может быть трудным найти оптимального кандидата для блока.[0086] The present disclosure also recognizes that a single buffer for HVMP is not applicable for parallel wavefront processing. If only one buffer is used, the buffer size must be very large to accommodate potential spatial candidates for blocks processed in each subprocess (eg, CTU rows). For example, if four sub-processes are configured to execute in parallel, the buffer size can be up to 64. As a result, more bits will be required to signal the MVP index to the video decoder 300. Similarly, redundant entries may occur. That is, an entry in the history buffer may be potentially useful for a block in that line, but may not be useful for blocks in other lines (eg, X and F in FIG. 8). Therefore, it may be difficult to find the optimal candidate for a block.

[0087] Фиг. 9 представляет собой концептуальную диаграмму, иллюстрирующую пример изображения, разбитой на множество строк единиц дерева кодирования (CTU). В частности, в примере фиг. 9, изображение 150 включает в себя строки CTU 152A-152E (строки CTU 152). Каждая из строк CTU 152 включает в себя соответствующий набор CTU: строка CTU 152А включает в себя CTU 154А-154J, строка CTU 152В включает в себя CTU 156А-156J, строка CTU 152C включает в себя CTU 158А-158J, строка CTU 152D включает в себя CTU 160А-160J, и строка CTU 152E включает в себя CTU 162А-162J. [0087] FIG. 9 is a conceptual diagram illustrating an example of an image broken into multiple coding tree unit (CTU) lines. In particular, in the example of FIG. 9, picture 150 includes CTU lines 152A-152E (CTU lines 152). Each of the CTU 152 strings includes a corresponding set of CTUs: CTU string 152A includes CTUs 154A-154J, CTU string 152B includes CTUs 156A-156J, CTU string 152C includes CTUs 158A-158J, CTU string 152D includes CTUs 160A-160J, and CTU string 152E includes CTU 162A-162J.

[0088] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы в соответствии с методами настоящего раскрытия для использования множества буферов для основанного на истории MVP. В некоторых примерах, кодер 200 видео и декодер 300 видео могут поддерживать отдельные буферы MVP истории для каждой из строк CTU 152 (каждая из которых может обрабатываться отдельным соответствующим подпроцессом обработки), или может иметься единственный буфер, который сбрасывается в начале каждой строки CTU при применении параллельной обработки волнового фронта.[0088] Video encoder 200 and video decoder 300 may be configured in accordance with the techniques of the present disclosure to use multiple buffers for history-based MVP. In some examples, video encoder 200 and video decoder 300 may maintain separate history MVP buffers for each of the CTU 152 rows (each of which may be processed by a separate respective processing sub-process), or there may be a single buffer that is flushed at the beginning of each CTU row when parallel wavefront processing is applied.

[0089] В одном примере, CTU 158C может представлять собой текущую CTU. Информация движения CTU 154F-154F, 156A-156D, 158A и 158B (показана с использованием серого затенения на фиг. 9) может быть доступна в одном или более соответствующих буферах MVP истории для использования при кодировании информации движения CTU 158C. [0089] In one example, CTU 158C may be the current CTU. CTU motion information 154F-154F, 156A-156D, 158A, and 158B (shown using gray shading in FIG. 9) may be available in one or more respective history MVP buffers for use in encoding CTU 158C motion information.

[0090] Дополнительно или альтернативно, кодер 200 видео и декодер 300 видео могут выполнять инициализацию буфера MVP истории с использованием любого или всех из следующих методов, отдельно или в комбинации. Кодер 200 видео и декодер 300 видео могут сбросить буфер MVP истории каждой строки CTU для очистки. Кодер 200 видео и декодер 300 видео могут предварительно заполнять буфер MVP истории каждой строки CTU нулевыми векторами движения с различным индексом опорного кадра и/или направлениями интер-предсказания или другой предопределенной или выведенной информации движения. Кодер 200 видео и декодер 300 видео могут предварительно заполнить буфер MVP истории каждой строки CTU информацией движения из кодированных кадров (картинок) в том же временном слое или нижних временных слоях (опорных картинок, доступных для текущего кадра/изображения).[0090] Additionally or alternatively, video encoder 200 and video decoder 300 may perform history MVP buffer initialization using any or all of the following methods, alone or in combination. Video encoder 200 and video decoder 300 may flush the history MVP buffer of each CTU row for cleanup. Video encoder 200 and video decoder 300 may pre-populate the history MVP buffer of each CTU row with null motion vectors with different reference frame index and/or inter-prediction directions or other predefined or derived motion information. Video encoder 200 and video decoder 300 may prefill the history buffer MVP of each CTU row with motion information from encoded frames (pictures) in the same time layer or lower time layers (reference pictures available for the current frame/picture).

[0091] Кодер 200 видео и декодер 300 видео могут масштабировать информацию движения, например, на основе временного расстояния, или обрабатывать/модифицировать информацию движения, например, комбинировать эту информацию движения с другим MV. В общем, кодер 200 видео и декодер 300 видео могут комбинировать информацию движения с информацией движения из буфера MVP предыдущей истории в кодированных кадрах/изображениях или информацией движения из совмещенной области (может быть CTU или больше, чем размер определенного блока, например, блока 4×4) в кодированных кадрах/изображениях. Кодер 200 видео и декодер 300 видео могут предварительно заполнить буфер MVP истории верхней строки CTU, когда кодируется верхняя-правая CTU от текущей CTU. Кодер 200 видео и декодер 300 видео могут использовать нулевые векторы движения с различными индексами опорных кадров и/или направлениями интер-предсказания, или другую предопределенную или выведенную информацию движения.[0091] The video encoder 200 and the video decoder 300 may scale the motion information, eg, based on temporal distance, or process/modify the motion information, eg, combine this motion information with another MV. In general, video encoder 200 and video decoder 300 may combine motion information with motion information from the previous history MVP buffer in coded frames/pictures, or motion information from a co-located area (may be a CTU or larger than a specific block size, e.g., a 4×4 block) in coded frames/pictures. Video encoder 200 and video decoder 300 may prefill the CTU top line history MVP buffer when the top-right CTU from the current CTU is encoded. Video encoder 200 and video decoder 300 may use null motion vectors with different reference frame indices and/or inter-prediction directions, or other predefined or derived motion information.

[0092] Дополнительно или альтернативно, кодер 200 видео и декодер 300 видео могут, когда кодируется (кодируется или декодируется) некоторая CTU из строк CTU, использовать ассоциированный буфер MVP истории для инициализации или модификации буферов истории строки CTU ниже текущей строки CTU.[0092] Additionally or alternatively, video encoder 200 and video decoder 300 may, when some CTU of the CTU rows is encoded (encoded or decoded), use an associated history buffer MVP to initialize or modify CTU row history buffers below the current CTU row.

[0093] Дополнительно или альтернативно, кодер 200 видео и декодер 300 видео могут применять правило FIFO для удаления записи из ассоциированного буфера MVP истории.[0093] Additionally or alternatively, video encoder 200 and video decoder 300 may apply a FIFO rule to remove an entry from an associated history MVP buffer.

[0094] Дополнительно или альтернативно, кодер 200 видео и декодер 300 видео могут очистить буфер MVP истории, когда ассоциированная строка CTU полностью закодирована/декодирована.[0094] Additionally or alternatively, video encoder 200 and video decoder 300 may clear the history MVP buffer when the associated CTU string is fully encoded/decoded.

[0095] Кодер 200 видео и декодер 300 видео могут поддерживать размер буфера MVP, который больше, чем списки кандидатов AMVP/слияния или других режимов. Любой MV или несколько MV из буфера могут выбираться в качестве кандидата(ов) MV для списка кандидатов, используемого в определенном режиме, например AMPV, режиме слияния, аффинном или любом другом интер-режиме. Правило может определять, как выбрать MV из буфера, например, взять N последних MV, добавленных в буфер, или взять несколько от начала буфера и/или несколько от середины буфера и/или несколько от конца буфера. Альтернативно, сигнализация может применяться для указания того, какие MV выбираются (например, кодер 200 видео может кодировать сигнализируемые данные, и декодер 300 видео может декодировать сигнализируемые данные). Размер буфера MVP может сигнализироваться в любом наборе параметров (например, наборе параметров видео, наборе параметров последовательности, наборе параметров изображения и т.п.), заголовке вырезки или еще где-либо. Буфер MVP может быть ассоциирован с вырезкой, изображением и/или последовательностью видео.[0095] Video encoder 200 and video decoder 300 may support an MVP buffer size that is larger than AMVP/merge candidate lists or other modes. Any MV or multiple MVs from the buffer may be selected as MV candidate(s) for a candidate list used in a particular mode, such as AMPV, merge mode, affine, or any other inter-mode. The rule may specify how to select MVs from the buffer, for example, take the last N MVs added to the buffer, or take a few from the start of the buffer and/or a few from the middle of the buffer and/or a few from the end of the buffer. Alternatively, signaling may be used to indicate which MVs are selected (eg, video encoder 200 may encode the signaled data and video decoder 300 may decode the signaled data). The MVP buffer size may be signaled in any parameter set (eg, video parameter set, sequence parameter set, image parameter set, etc.), slice header, or elsewhere. An MVP buffer may be associated with a clip, image, and/or video sequence.

[0096] Когда кодер 200 видео и декодер 300 видео обрабатывают интер-кодированный блок, MV, использованные в блоке, могут добавляться в буфер MVP, и только уникальные MV могут сохраняться в буфере. Когда буфер заполнен, более старые MV могут быть удалены из буфера, когда добавляются новые MV. Может иметься правило, согласно которому MV могут добавляться в буфер, например, могут добавляться только сигнализированные MV, как в режиме AMVP, и если блок кодирован в режиме слияния, то MV блока не добавляется в буфер.[0096] When the video encoder 200 and the video decoder 300 process an inter-coded block, the MVs used in the block may be added to the MVP buffer, and only unique MVs may be stored in the buffer. When the buffer is full, older MVs can be removed from the buffer when new MVs are added. There may be a rule that MVs can be added to the buffer, for example, only signaled MVs can be added, as in AMVP mode, and if the block is encoded in merge mode, then the MV of the block is not added to the buffer.

[0097] Кодер 200 видео и декодер 300 видео могут добавлять MV к уже существующему MV или нескольким MV в буфере. Например, если уже существующие MV в буфере являются однонаправленными, то при добавлении нового MV эти существующие MV могут быть модифицированы как двунаправленные путем добавления нового MV.[0097] Video encoder 200 and video decoder 300 may add MVs to an already existing MV or multiple MVs in the buffer. For example, if already existing MVs in the buffer are unidirectional, then when a new MV is added, these existing MVs can be modified to be bidirectional by adding the new MV.

[0098] Некоторая обработка MV может быть применена при добавлении нового MV. Например, если новый MV близок к уже существующим MV в буфере, то эти близкие MV могут быть удалены. Близкие может означать близость при сравнении значений компонентов MV (например, х- и y-компонентов). В некоторых примерах, в буфер могут быть добавлены только MV, которые отличаются от уже существующих MV в буфере на пороговое значение. То же самое пороговое значение может быть сконфигурировано для разных буферов.[0098] Some MV processing may be applied when a new MV is added. For example, if the new MV is close to existing MVs in the buffer, then those close MVs may be removed. Close can mean closeness when comparing the values of the MV components (eg x- and y-components). In some examples, only MVs that differ from already existing MVs in the buffer by a threshold value may be added to the buffer. The same threshold can be configured for different buffers.

[0099] Векторы движения в буфере могут быть однонаправленными (L0 или L1), двунаправленными или представлять собой MV любой другой модели движения.[0099] The motion vectors in the buffer can be unidirectional (L0 or L1), bidirectional, or represent the MV of any other motion model.

[0100] Информация о режиме может быть ассоциирована с MV в буфере, и если индекс MV в буфере сигнализируется в блоке или применяется другое правило о получении MV из буфера, то информация о режиме может быть получена из данных, ассоциированных с этой информацией MV. Например, если этой информацией является режим слияния, то блок кодируется в режиме слияния с указанным MV.[0100] The mode information may be associated with the MV in the buffer, and if the index of the MV in the buffer is signaled in the block or another rule is applied to obtain the MV from the buffer, then the mode information may be obtained from the data associated with this MV information. For example, if the information is merge mode, then the block is encoded in merge mode with the specified MV.

[0101] Настоящее раскрытие далее признает, что традиционные, основанные на истории MVP содержат только регулярные предсказатели движения и используются только для регулярного предсказания движения без модифицирования информации движения. В соответствии с методами настоящего раскрытия, кодер 200 видео и декодер 300 видео могут использовать по меньшей мере один буфер MVP истории, который содержит не только кодированную информацию движения, но и другие типы предсказателей движения, таких как для аффинной модели движения, информацию движения режима внутриблочного копирования, информацию движения компенсации локального освещения, подблочный MVP или временной предсказатель движения.[0101] The present disclosure further recognizes that traditional, history-based MVPs contain only regular motion predictors and are only used for regular motion prediction without modifying motion information. In accordance with the techniques of the present disclosure, video encoder 200 and video decoder 300 may use at least one history MVP buffer that contains not only encoded motion information, but also other types of motion predictors, such as for affine motion model, intra-block copy mode motion information, local illumination compensation motion information, sub-block MVP, or temporal motion predictor.

[0102] Дополнительно или альтернативно, кодер 200 видео и декодер 300 видео могут использовать множество буферов MVP истории для различных моделей движения, таких как аффинная модель движения, информация движения режима внутриблочного копирования, информация движения компенсации локального освещения, подблочный MVP или временной предсказатель движения.[0102] Additionally or alternatively, video encoder 200 and video decoder 300 may use a plurality of history MVP buffers for different motion models, such as an affine motion model, intra-block copy mode motion information, local lighting compensation motion information, sub-block MVP, or temporal motion predictor.

[0103] Дополнительно или альтернативно, синтетический вектор движения, основанный на текущем MVP и другом предсказателе движения, таком как другой пространственный MVP или временной MVP, также может быть добавлен в список кандидатов. [0103] Additionally or alternatively, a synthetic motion vector based on the current MVP and another motion predictor such as another spatial MVP or temporal MVP may also be added to the list of candidates.

[0104] Дополнительно или альтернативно, кодер 200 видео и декодер 300 видео могут генерировать синтетический MVP из двух или более MVP в буфере MVP истории или одного или более MVP в буфере MVP истории с другими типами MVP, такими, как пространственные или временные MVP.[0104] Additionally or alternatively, video encoder 200 and video decoder 300 may generate a synthetic MVP from two or more MVPs in the story MVP buffer, or one or more MVPs in the story MVP buffer with other types of MVPs, such as spatial or temporal MVPs.

[0105] Кодер 200 видео и декодер 300 видео могут реализовывать схему блочного разбиения. В HEVC, изображения делятся на последовательность единиц дерева кодирования (CTU). Для изображения, которая имеет три массива выборок, CTU включает в себя блок N×N выборок яркости вместе с двумя соответствующими блоками выборок цветности. CTU разделяется на единицы кодирования (CU) с использованием древовидной структуры. Каждая листовая CU может дополнительно разделяться на одну, две или четыре единицы предсказания (PU) в соответствии с типом разделения PU. После получения остаточного блока, путем применения процесса предсказания, основанного на типе разделения PU, листовая CU может быть разделена на единицы преобразования (TU).[0105] Video encoder 200 and video decoder 300 may implement a block partitioning scheme. In HEVC, pictures are divided into a sequence of coding tree units (CTUs). For an image that has three sample arrays, the CTU includes an N×N luminance sample block along with two corresponding chrominance sample blocks. The CTU is divided into coding units (CU) using a tree structure. Each leaf-CU may be further partitioned into one, two, or four prediction units (PU) according to the partition type of the PU. After obtaining the residual block, by applying a prediction process based on the division type of the PU, the leaf-CU can be divided into transformation units (TUs).

[0106] В VVC, структура сегментации квадродерева с вложенным деревом множественного типа, использующим двоичные и троичные разделения, заменяет концепции множественных типов единиц разбиения, т.е. разбиение вложенного дерева множественного типа удаляет концепции разделения CU, PU и TU, за исключением необходимых для CU, которые имеют слишком большой размер для максимальной длины преобразования и поддерживают большую гибкость для форм разделения CU. В структуре дерева кодирования, CU может иметь квадратную или прямоугольную форму.[0106] In VVC, the multiple type nested tree quadtree segmentation structure using binary and ternary partitioning replaces the concepts of multiple partition unit types, i.e. multiple type nested tree splitting removes the concepts of CU, PU, and TU splitting, except for those needed for CUs that are too large for the maximum transform length and maintain more flexibility for CU splitting forms. In the coding tree structure, the CU may be square or rectangular.

[0107] Кодер 200 видео и декодер 300 видео могут использовать информацию движения для предсказания блока данных видео. Для каждого блока, может быть доступен набор информации движения. Набор информации движения содержит информацию движения для прямого и обратного направлений предсказания. Здесь прямое и обратное направления предсказания представляют собой два направления предсказания, соответствующие списку опорных картинок 0 (RefPicList0) и списку опорных картинок 1 (RefPicList1) текущей изображения или вырезки. Термины “прямое” и “обратное” не обязательно имеют геометрическое значение. Вместо этого, они используются, чтобы различать, на каком опорном изображении основан вектор движения. Прямое предсказание означает предсказание, сформированное на основе опорного списка 0, в то время как обратное предсказание означает предсказание, сформированное на основе опорного списка 1. В тех случаях, когда как опорный список 0, так и опорный список 1 используются для формирования предсказания для данного блока, это называется двунаправленным предсказанием. [0107] Video encoder 200 and video decoder 300 may use the motion information to predict a video data block. For each block, a set of motion information may be available. The motion information set contains motion information for forward and backward prediction directions. Here, forward and backward prediction directions are two prediction directions corresponding to reference picture list 0 (RefPicList0) and reference picture list 1 (RefPicList1) of the current picture or slice. The terms "forward" and "inverse" do not necessarily have a geometric meaning. Instead, they are used to distinguish which reference picture the motion vector is based on. Forward prediction means a prediction generated from reference list 0, while backward prediction means a prediction generated from reference list 1. When both reference list 0 and reference list 1 are used to generate a prediction for a given block, this is called bidirectional prediction.

[0108] Для данной изображения или вырезки, если используется только один список опорных картинок, каждый блок внутри изображения или вырезки предсказывается в прямом направлении. Если оба списка опорных картинок используются для данной изображения или вырезки, блок внутри изображения или вырезки может быть предсказываемым в прямом направлении или предсказываемым в обратном направлении или двунаправленно предсказываемым.[0108] For a given image or slice, if only one reference picture list is used, each block within the picture or slice is forward predicted. If both reference picture lists are used for a given picture or slice, a block within the picture or slice may be forward predictable or backward predictable or bidirectionally predictable.

[0109] Для каждого направления предсказания, информация движения содержит опорный индекс и вектор движения. Опорный индекс используется для идентификации опорной изображения в соответствующем списке опорных картинок (например, RefPicList0 или RefPicList1). Вектор движения имеет как горизонтальную, так и вертикальную компоненту, причем каждая из них указывает значение смещения вдоль горизонтального и вертикального направлений соответственно. В некоторых описаниях, для простоты, слово “вектор движения” может использоваться взаимозаменяемо с информацией движения, чтобы указывать как вектор движения, так и ассоциированный с ним опорный индекс.[0109] For each prediction direction, the motion information contains a reference index and a motion vector. The reference index is used to identify the reference picture in the corresponding reference picture list (eg, RefPicList0 or RefPicList1). The motion vector has both a horizontal and a vertical component, each indicating an offset value along the horizontal and vertical directions, respectively. In some descriptions, for simplicity, the word "motion vector" may be used interchangeably with motion information to indicate both the motion vector and its associated reference index.

[0110] Отсчет порядка картинок (POC) широко используется в стандартах кодирования видео для идентификации порядка отображения изображения. Хотя бывают случаи, когда два изображения в одной кодированной последовательности видео могут иметь одинаковое значение POC, обычно это не происходит в пределах кодированной последовательности видео. Когда в битовом потоке присутствует несколько кодированных последовательностей видео, изображения с одинаковым значением POC могут быть ближе друг к другу с точки зрения порядка декодирования.[0110] The Picture Order Count (POC) is widely used in video coding standards to identify the display order of an image. While there are cases where two pictures in the same video coded sequence may have the same POC value, this usually does not happen within a video coded sequence. When multiple encoded video sequences are present in a bitstream, pictures with the same POC value may be closer to each other in terms of decoding order.

[0111] В HEVC, имеются два режима интер-предсказания, называемые режимом слияния (причем пропуск считается специальным случаем режима слияния) и режимом расширенного предсказания вектора движения (AMVP), соответственно для PU.[0111] In HEVC, there are two inter-prediction modes called merge mode (with skipping being considered a special case of merge mode) and advanced motion vector prediction (AMVP) mode, respectively for the PU.

[0112] В режиме AMVP или слияния, список кандидатов вектора движения (MV) поддерживается для множества предсказателей векторов движения. Вектор(ы) движения, как и опорные индексы в режиме слияния, текущей PU генерируются взятием одного кандидата из списка кандидатов MV.[0112] In AMVP or merge mode, a motion vector (MV) candidate list is maintained for a plurality of motion vector predictors. The motion vector(s), as well as the reference indexes in merge mode, of the current PU are generated by taking one candidate from the MV candidate list.

[0113] Список кандидатов MV содержит до 5 кандидатов для режима слияния и только два кандидата для режима AMVP. Кандидат слияния может содержать набор информации движения, например, векторов движения, соответствующих как спискам опорных картинок (список 0 и список 1), так и опорным индексам. Если кандидат слияния идентифицируется индексом слияния, то опорные изображения используются для предсказания текущих блоков, а также определяются ассоциированные векторы движения. Однако в режиме AMVP для каждого потенциального направления предсказания из списка 0 или списка 1 опорный индекс явно сигнализируется, вместе с индексом MVP в список кандидатов MV, поскольку кандидат AMVP содержит только вектор движения. В режиме AMVP, предсказанные векторы движения могут дополнительно уточняться.[0113] The MV candidate list contains up to 5 candidates for the merge mode and only two candidates for the AMVP mode. The merge candidate may contain a set of motion information, such as motion vectors, corresponding to both reference picture lists (list 0 and list 1) and reference indices. If the merge candidate is identified by the merge index, then the reference pictures are used to predict the current blocks and the associated motion vectors are also determined. However, in the AMVP mode, for each potential prediction direction from list 0 or list 1, the reference index is explicitly signaled, along with the MVP index, to the MV candidate list, since the AMVP candidate contains only a motion vector. In the AMVP mode, the predicted motion vectors can be further refined.

[0114] Как можно видеть из описанного выше, кандидат слияния соответствует полному набору информации движения, в то время как кандидат AMVP содержит только один вектор движения для конкретного направления предсказания и опорного индекса. Кандидаты для обоих режимов могут быть выведены аналогично из одних и тех же пространственных и временных соседних блоков.[0114] As can be seen from the above, the merge candidate corresponds to a complete set of motion information, while the AMVP candidate contains only one motion vector for a particular prediction direction and reference index. Candidates for both modes can be similarly derived from the same spatial and temporal neighboring blocks.

[0115] Фиг. 10А и 10В представляют собой блочные диаграммы, иллюстрирующие примерные пространственные соседние кандидаты векторов движения для режимов слияния и расширенного предсказания вектора движения (AMVP). Фиг. 10А показывает пример пространственных соседних кандидатов MV для режима слияния, а фиг. 10В показывает пример пространственных соседних кандидатов MV режима AMVP. Пространственные кандидаты MV выводятся из соседних блоков, как показано на фиг. 10А и 10В. Для конкретного PU (PU0), способы для генерации кандидатов из блоков различаются для режимов слияния и AMVP.[0115] FIG. 10A and 10B are block diagrams illustrating exemplary spatial neighbor motion vector candidates for merging and advanced motion vector prediction (AMVP) modes. Fig. 10A shows an example of spatial neighbor MV candidates for the merge mode, and FIG. 10B shows an example of spatial neighbor MV candidates of the AMVP mode. Spatial MV candidates are derived from adjacent blocks as shown in FIG. 10A and 10V. For a particular PU (PU0), the methods for generating block candidates differ between merge and AMVP modes.

[0116] В режиме слияния, можно вывести до четырех пространственных кандидатов MV в порядке, показанном на фиг. 10А. В частности, порядок является следующим: слева (0), сверху (1), сверху справа (2), снизу слева (3) и сверху слева (4), как показано на фиг. 10А.[0116] In the merge mode, up to four MV spatial candidates can be output in the order shown in FIG. 10A. Specifically, the order is left (0), top (1), top right (2), bottom left (3), and top left (4), as shown in FIG. 10A.

[0117] В режиме AVMP, соседние блоки делятся на две группы. Первой группой является левая группа, которая включает в себя блоки 0 и 1. Второй группой является верхняя группа, которая включает в себя блоки 2, 3 и 4, как показано на фиг. 10В. Для каждой группы, потенциальный кандидат в соседнем блоке, ссылающийся на то же самое опорное изображение, что и указанная сигнализированным опорным индексом, имеет наивысший приоритет, подлежащий выбору для формирования окончательного кандидата группы. Возможно, что все соседние блоки не содержат вектор движения, указывающий на одно и то же опорное изображение. Поэтому, если такой кандидат не может быть найден, первый доступный кандидат будет масштабироваться для формирования окончательного кандидата, таким образом, различия во временном расстоянии могут быть скомпенсированы.[0117] In AVMP mode, neighboring blocks are divided into two groups. The first group is the left group which includes blocks 0 and 1. The second group is the top group which includes blocks 2, 3 and 4 as shown in FIG. 10V. For each group, a candidate candidate in an adjacent block referring to the same reference picture as indicated by the signaled reference index has the highest priority to be selected to form the final group candidate. It is possible that all neighboring blocks do not contain a motion vector pointing to the same reference picture. Therefore, if no such candidate can be found, the first available candidate will be scaled to form the final candidate, so differences in time distance can be compensated for.

[0118] Фиг. 11A и 11B представляют собой концептуальные диаграммы, иллюстрирующие кандидатов временного предсказания вектора движения (TMPV). Фиг. 11А показывает пример кандидата TMPV. Кандидат TMVP, если он включен и доступен, добавляется в список кандидатов MV после кандидатов пространственного вектора движения. Процесс вывода вектора движения для кандидата TMPV является тем же самым для режимов слияния и АMPV, однако целевой опорный индекс для кандидата TMPV в режиме слияния всегда установлен в 0.[0118] FIG. 11A and 11B are conceptual diagrams illustrating temporal motion vector prediction (TMPV) candidates. Fig. 11A shows an example of a TMPV candidate. The TMVP candidate, if enabled and available, is added to the list of MV candidates after the space motion vector candidates. The motion vector derivation process for a TMPV candidate is the same for merge and AMPV modes, however, the target reference index for a TMPV candidate in merge mode is always set to 0.

[0119] Первичным местоположением блока для вывода кандидата TMVP является нижний правый блок вне совмещенного PU, как показано на фиг. 11А в виде блока “Т”, чтобы компенсировать смещение к верхнему и левому блокам, используемым для генерации пространственных соседних кандидатов. Однако, если этот блок расположен вне текущей строки CTB или информация движения недоступна, блок заменяется центральным блоком PU.[0119] The primary block location for deriving a TMVP candidate is the lower right block outside the collocated PU, as shown in FIG. 11A as a "T" block to compensate for the offset to the top and left blocks used to generate spatial neighbor candidates. However, if this block is located outside the current CTB row or motion information is not available, the block is replaced by the central PU.

[0120] Вектор движения для кандидата TMVP выводится из совмещенной PU совмещенной изображения, указанной на уровне вырезки. Вектор движения для совмещенной PU называется совмещенным MV.[0120] The motion vector for the TMVP candidate is derived from the merged PU of the merged image specified at the slice level. The motion vector for a shared PU is called a shared MV.

[0121] Фиг. 11В показывает пример масштабирования MV. Чтобы вывести вектор движения кандидата TMVP, совмещенный MV может потребовать масштабирования, чтобы скомпенсировать различия временных расстояний, как показано на фиг. 11В.[0121] FIG. 11B shows an example of MV scaling. To derive a TMVP candidate motion vector, the co-located MV may require scaling to compensate for time distance differences, as shown in FIG. 11V.

[0122] Некоторые другие аспекты режимов слияния и AMVP заслуживают упоминания следующим образом. Например, кодер 200 видео и декодер 300 видео могут выполнять масштабирование вектора движения. Предполагается, что значение векторов движения пропорционально расстоянию между изображениями во время представления. Вектор движения ассоциирует два изображения, опорное изображение и изображение, содержащее вектор движения (а именно, вмещающее изображение). Когда вектор движения используется для предсказания другого вектора движения, расстояние между вмещающим изображением и опорным изображением вычисляется на основе значений отсчета порядка изображения (POC).[0122] Some other aspects of the merge modes and AMVP deserve mention as follows. For example, video encoder 200 and video decoder 300 may perform motion vector scaling. It is assumed that the value of the motion vectors is proportional to the distance between the images during the presentation. The motion vector associates two images, a reference image and an image containing the motion vector (namely, an enclosing image). When a motion vector is used to predict another motion vector, the distance between the containing picture and the reference picture is calculated based on Picture Order Count (POC) values.

[0123] Для предсказания вектора движения, его ассоциированное вмещающее изображение и опорное изображение могут быть разными. Поэтому вычисляется новое расстояние (на основе POC). И вектор движения масштабируется на основе этих двух расстояний POC. Для пространственного соседнего кандидата, вмещающие изображения для двух векторов движения одинаковы, в то время как опорные изображения различны. В HEVC, масштабирование вектора движения применяется как к TMVP, так и к AMVP для пространственных и временных соседних кандидатов.[0123] For motion vector prediction, its associated containing picture and reference picture may be different. Therefore, a new distance is calculated (based on POC). And the motion vector is scaled based on these two POC distances. For a spatial neighbor candidate, the embedding pictures for the two motion vectors are the same, while the reference pictures are different. In HEVC, motion vector scaling is applied to both TMVP and AMVP for spatial and temporal neighbor candidates.

[0124] В качестве другого примера, кодер 200 видео и декодер 300 видео могут выполнять генерацию искусственных кандидатов вектора движения. Если список кандидатов вектора движения не является полным, искусственные кандидаты вектора движения генерируются и вставляются в конец списка до тех пор, пока в нем не будут содержаться все кандидаты.[0124] As another example, video encoder 200 and video decoder 300 may generate artificial motion vector candidates. If the list of motion vector candidates is not complete, artificial motion vector candidates are generated and inserted at the end of the list until it contains all candidates.

[0125] В режиме слияния, существует два типа искусственных кандидатов MV: комбинированный кандидат, выведенный только для B-вырезок, и нулевые кандидаты, используемые только для AMVP, если первый тип не обеспечивает достаточно искусственных кандидатов. Для каждой пары кандидатов, которые уже находятся в списке кандидатов и имеют необходимую информацию движения, двунаправленные комбинированные кандидаты вектора движения выводятся комбинацией вектора движения первого кандидата, ссылающегося на изображение в списке 0, и вектора движения второго кандидата, ссылающегося на изображение в списке 1.[0125] In the merge mode, there are two types of artificial MV candidates: a combined candidate derived only for B-slices, and null candidates used only for AMVP if the first type does not provide enough artificial candidates. For each pair of candidates that are already in the candidate list and have the required motion information, bidirectional combined motion vector candidates are derived by combining the motion vector of the first candidate referring to the image in list 0 and the motion vector of the second candidate referring to the image in list 1.

[0126] В качестве другого примера, кодер 200 видео и декодер 300 видео могут выполнять процесс обрезки для вставки кандидата. Кандидаты из разных блоков могут оказаться одинаковыми, что снижает эффективность списка кандидатов слияния/AMVP. Для решения этой проблемы применяется процесс обрезки. Он сравнивает одного кандидата с другими в текущем списке кандидатов, чтобы избежать вставки идентичного кандидата в определенной степени. Чтобы уменьшить сложность, применяется лишь ограниченное количество процессов обрезки вместо сравнения каждого потенциального кандидата со всеми другими существующими кандидатами. Если применимо, применяются только следующие сравнения: верхний кандидат слияния сравнивается с левым кандидатом слияния, верхний правый кандидат слияния сравнивается с верхним кандидатом слияния, нижний левый кандидат слияния сравнивается с левым кандидатом слияния, верхний левый кандидат слияния сравнивается с левым кандидатом слияния и верхним кандидатом слияния.[0126] As another example, video encoder 200 and video decoder 300 may perform a trimming process to insert a candidate. Candidates from different blocks may end up being the same, which reduces the effectiveness of the merger/AMVP candidate list. To solve this problem, the cropping process is applied. It compares one candidate with others in the current list of candidates to avoid inserting an identical candidate to a certain extent. To reduce complexity, only a limited number of pruning processes are applied instead of comparing each potential candidate with all other existing candidates. If applicable, only the following comparisons apply: the top merge candidate is compared to the left merge candidate, the top right merge candidate is compared to the top merge candidate, the bottom left merge candidate is compared to the left merge candidate, the top left merge candidate is compared to the left merge candidate and the top merge candidate.

[0127] Кодер 200 видео и декодер 300 видео также могут использовать другие способы предсказания движения. В развитии многоцелевого кодирования видео (VVC), основанный на истории способ предсказания вектора движения (HMVP) был предложен в L. Zhang etc., “CE4-related: History-based Motion Vector Prediction”, Joint Video Experts Team Document: JVET-K0104 (далее “K0104”). Способ HMVP позволяет каждому блоку найти свой предсказатель MV из списка MV, декодированных из предыдущего, в дополнение к непосредственно смежным причинно-обусловленным соседним полям движения. Таблица с множеством кандидатов HMVP поддерживается во время процесса кодирования/декодирования. Таблица опустошается, когда обнаруживается новая вырезка. Всякий раз, когда имеется интер-кодированный блок, ассоциированная информация движения вставляется в таблицу способом “первым поступил - первым обслужен” (FIFO) как новый кандидат HMVP. Затем может применяться ограниченное правило FIFO. При вставке HMVP в таблицу, сначала может применяться проверка избыточности, чтобы найти, имеется ли в таблице идентичный HMVP. Если он найден, то этот конкретный HMVP может быть удален из таблицы, и все кандидаты HMVP затем перемещаются.[0127] Video encoder 200 and video decoder 300 may also use other motion prediction techniques. In the development of multipurpose video coding (VVC), a history-based motion vector prediction (HMVP) method has been proposed in L. Zhang etc., “CE4-related: History-based Motion Vector Prediction”, Joint Video Experts Team Document: JVET-K0104 (hereinafter “K0104”). The HMVP method allows each block to find its MV predictor from a list of MVs decoded from the previous one, in addition to directly adjacent causal adjacent motion fields. A table with multiple HMVP candidates is maintained during the encoding/decoding process. The table is emptied when a new cut is found. Whenever there is an inter-coded block, the associated motion information is inserted into the table in a first-in-first-out (FIFO) manner as a new HMVP candidate. A limited FIFO rule can then be applied. When inserting an HMVP into a table, a redundancy check may first be applied to find if there is an identical HMVP in the table. If it is found, then that particular HMVP can be removed from the table and all HMVP candidates are then moved.

[0128] Кандидаты HMVP могут быть использованы в процессе построения списка кандидатов слияния. Например, все кандидаты HMVP от последней записи до первой записи в таблице могут быть вставлены после кандидата TMVP. Обрезка может быть применена к кандидатам HMVP. Как только общее число доступных кандидатов слияния достигает сигнализированного максимально допустимого числа кандидатов слияния, процесс построения списка кандидатов слияния завершается.[0128] The HMVP candidates may be used in the process of building a merge candidate list. For example, all HMVP candidates from the last entry to the first entry in the table may be inserted after the TMVP candidate. Pruning can be applied to HMVP candidates. Once the total number of available merge candidates reaches the signaled maximum allowable number of merge candidates, the merge candidate list building process ends.

[0129] Аналогично, кандидаты HMVP также могут быть использованы в процессе построения списка кандидатов AMVP. Векторы движения последних K кандидатов HMVP в таблице могут быть вставлены после кандидата TMVP. В некоторых примерах, для построения списка кандидатов AMVP используются только кандидаты HMVP с тем же опорным изображением, что и целевое опорное изображение AMVP. Обрезка может быть применена к кандидатам HMVP.[0129] Similarly, HMVP candidates can also be used in the process of building a list of AMVP candidates. The motion vectors of the last K HMVP candidates in the table may be inserted after the TMVP candidate. In some examples, only HMVP candidates with the same reference picture as the target AMVP reference picture are used to build the list of AMVP candidates. Pruning can be applied to HMVP candidates.

[0130] В HEVC, кодирование текущей CTU может зависеть только от CTU слева, сверху-слева, сверху и сверху-справа. Таким образом, параллельная обработка волнового фронта (WPP) может поддерживаться в HEVC. Однако способ HMVP в K0104 может вызвать зависимость между текущим блоком и всеми ранее кодированными CTU в вырезке. Таким образом, WPP не может быть применена, если используется способ HMVP. Настоящее раскрытие описывает методы для использования HMVP с инициализацией CTU, в которых зависимости остаются такими же, как и в HEVC. Настоящее раскрытие также описывает методы HMVP с инициализацией строки CTU (сброс).[0130] In HEVC, the encoding of the current CTU may only depend on the CTUs left, top-left, top, and top-right. Thus, parallel wavefront processing (WPP) can be supported in HEVC. However, the HMVP method in K0104 may cause a dependency between the current block and all previously encoded CTUs in the slice. Thus, WPP cannot be applied if the HMVP method is used. This disclosure describes methods for using HMVP with CTU initialization, in which the dependencies remain the same as in HEVC. This disclosure also describes HMVP methods with CTU string initialization (reset).

[0131] Согласно методам настоящего раскрытия, кодер 200 видео и декодер 300 видео могут выполнять HMVP с инициализацией CTU. Таблица HMVP инициализируется в начале каждой CTU. Инициализация может добавить MV из непосредственно соседних кодированных блоков текущей CTU в таблицу HMVP. Непосредственно соседний кодированный блок может находиться слева, сверху, сверху-слева или сверху-справа от текущей CTU, как в HEVC. Если включено временное предсказание вектора движения, то непосредственно соседний кодированный блок также может быть совмещенным блоком в опорном изображении.[0131] According to the techniques of the present disclosure, video encoder 200 and video decoder 300 may perform HMVP with CTU initialization. The HMVP table is initialized at the beginning of each CTU. The initialization may add MVs from the current CTU's immediately adjacent coded units to the HMVP table. An immediately adjacent coded block may be to the left, top, top-left, or top-right of the current CTU, as in HEVC. If temporal motion vector prediction is enabled, then the immediately adjacent encoded block may also be a co-located block in the reference picture.

[0132] На фиг. 12 представлена блочная диаграмма, иллюстрирующая пример единицы дерева кодирования (CTU) и соседних блоков. В одном примере, только пространственные и временные кандидаты слияния для текущего блока CTU используются для инициализации таблицы HMVP. Пример использования пространственных и временных кандидатов слияния HEVC показан на фиг. 12. Порядок вставки следующий: слева (0), сверху (1), сверху-справа (2) и сверху-слева (4). Местоположение временного кандидата слияния указывается как “Т”. Следует отметить, что нижний правый временной кандидат слияния и нижний левый (3) кандидат недоступны, так как их местоположения находится ниже текущей строки CTU.[0132] In FIG. 12 is a block diagram illustrating an example coding tree unit (CTU) and neighboring blocks. In one example, only the spatial and temporal merge candidates for the current CTU are used to initialize the HMVP table. An example of using spatial and temporal HEVC merge candidates is shown in FIG. 12. The insertion order is as follows: left (0), top (1), top-right (2), and top-left (4). The location of the temporary merger candidate is indicated as "T". Note that the lower right temporary merge candidate and the lower left (3) candidate are not available because their locations are below the current CTU line.

[0133] В другом примере, процесс вывода кандидата слияния для текущего блока CTU используется для инициализации таблицы HMVP. В дополнение к пространственным и временным кандидатам слияния, для инициализации могут также использоваться другие кандидаты слияния (например, искусственные кандидаты вектора движения). [0133] In another example, the merge candidate derivation process for the current CTU is used to initialize the HMVP table. In addition to the spatial and temporal merge candidates, other merge candidates (eg, artificial motion vector candidates) may also be used for initialization.

[0134] На фиг. 13 представлена блочная диаграмма, иллюстрирующая текущую CU в текущей CTU. В некоторых примерах, таблица HMVP инициализируется как пустая в начале кодирования текущей CTU. Однако, после того как первая CU кодирована, пространственные и временные кандидаты слияния первой CU, как показано на фиг. 13, добавляются в таблицу HMVP. И затем, MV первой CU также добавляется, если CU кодируется методом интер-предсказания. Следует отметить, что если первая CU не равна текущей CTU, то могут быть добавлены два временных кандидата слияния “T0” и “T1” по порядку. Фиг. 13 показывает пример кандидатов слияния первой CU в CTU.[0134] FIG. 13 is a block diagram illustrating the current CU in the current CTU. In some examples, the HMVP table is initialized to be empty at the start of encoding the current CTU. However, after the first CU is encoded, the spatial and temporal merge candidates of the first CU, as shown in FIG. 13 are added to the HMVP table. And then, the MV of the first CU is also added if the CU is encoded by the inter-prediction method. It should be noted that if the first CU is not equal to the current CTU, then two temporary merge candidates “T0” and “T1” may be added in order. Fig. 13 shows an example of first CU merge candidates in CTU.

[0135] В другом примере, таблица HMVP инициализируется как пустая в начале кодирования текущей CTU. Однако после кодирования первой CU, все кандидаты слияния первой CU добавляются в таблицу HMVP. И затем MV первой CU также добавляется, если она кодирована методом интер-предсказания.[0135] In another example, the HMVP table is initialized to be empty at the start of encoding the current CTU. However, after encoding the first CU, all merge candidates of the first CU are added to the HMVP table. And then the MV of the first CU is also added if it is encoded by the inter-prediction method.

[0136] Кодер 200 видео и декодер 300 видео также могут выполнять HMVP с инициализацией строки CTU. В другом примере, описанная выше инициализация CTU для HMVP применяется только к первой CTU в строке CTU. Подобно HMVP в K0104, процесс обрезки может быть применен к инициализированной таблице для удаления некоторых или всех дубликатов. Процесс обрезки также может не применяться к инициализированной таблице для снижения сложности.[0136] Video encoder 200 and video decoder 300 can also perform HMVP with CTU string initialization. In another example, the HMVP CTU initialization described above only applies to the first CTU in the CTU line. Similar to HMVP in K0104, a pruning process can be applied to an initialized table to remove some or all of the duplicates. The pruning process may also not be applied to the initialized table to reduce complexity.

[0137] Фиг. 14 представляет собой блок-схему, иллюстрирующую примерный кодер 200 видео, который может выполнять методы настоящего раскрытия. Фиг. 14 приведена в целях пояснения и не должна рассматриваться как ограничение методов, широко иллюстрируемых и описываемых в настоящем раскрытии. В целях пояснения, настоящее раскрытие описывает кодер 200 видео в контексте стандартов кодирования видео, таких как стандарт кодирования видео HEVC и разрабатываемый стандарт кодирования видео H.266. Однако методы настоящего раскрытия не ограничиваются этими стандартами кодирования видео и применимы в общем к кодированию и декодированию видео.[0137] FIG. 14 is a block diagram illustrating an exemplary video encoder 200 that may perform the techniques of the present disclosure. Fig. 14 is provided for purposes of explanation and should not be construed as limiting the methods broadly illustrated and described in this disclosure. For purposes of explanation, the present disclosure describes the video encoder 200 in the context of video coding standards such as the HEVC video coding standard and the emerging H.266 video coding standard. However, the techniques of the present disclosure are not limited to these video coding standards and apply in general to video coding and decoding.

[0138] В примере на фиг. 14, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных картинок (DPB) и модуль 220 энтропийного кодирования. Любое или все из памяти 230 данных видео, модуля 202 выбора режима, модуля 204 генерации остатка, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, кодер 200 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.[0138] In the example of FIG. 14, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216, a decoded picture buffer (DPB) 218, and an entropy encoding unit 220. Any or all of the video data memory 230, mode selection module 202, residual generation module 204, transform processing module 206, quantization module 208, inverse quantization module 210, inverse transform processing module 212, reconstruction module 214, filter module 216, DPB 218, and entropy encoding module 220 may be implemented in one or more processors or processing circuits. In addition, video encoder 200 may include additional or alternative processors or processing circuits to perform these and other functions.

[0139] Память 230 данных видео может хранить данные видео, подлежащие кодированию компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, хранящиеся в памяти 230 данных видео, например, от источника 104 видео (фиг. 1). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео кодером 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть в чипе (однокристальной) с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.[0139] The video data memory 230 may store video data to be encoded by the components of the video encoder 200. Video encoder 200 may receive video data stored in video data memory 230 from, for example, video source 104 (FIG. 1). DPB 218 may act as a reference picture memory that stores reference video data for use in prediction of subsequent video data by video encoder 200. Video data memory 230 and DPB 218 may be formed by any of a variety of memory devices such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. Video data memory 230 and DPB 218 may be provided by the same memory device or by separate memory devices. In various examples, video data memory 230 may be on-chip (single-chip) with other components of video encoder 200, as illustrated, or off-chip with respect to these components.

[0140] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью внутренней для кодера 200 видео, если только она специально не описана как таковая, или памятью внешней для кодера 200 видео, если только она специально не описана как таковая. Скорее, ссылка на память 230 данных видео должна пониматься как опорная память, которая хранит данные видео, которые кодер 200 видео получает для кодирования (например, данные видео для текущего блока, который должен кодироваться). Память 106 на фиг. 1 может также обеспечивать временное хранение выходных данных из различных модулей кодера 200 видео.[0140] In this disclosure, reference to video data memory 230 is not to be interpreted as being limited to memory internal to video encoder 200, unless specifically described as such, or memory external to video encoder 200, unless specifically described as such. Rather, reference to video data memory 230 is to be understood as a reference memory that stores video data that video encoder 200 receives for encoding (eg, video data for the current block to be encoded). Memory 106 in FIG. 1 may also provide temporary storage of output data from various modules of the video encoder 200.

[0141] Различные модули на фиг. 14 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинация. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.[0141] The various modules in FIG. 14 are illustrated to aid in understanding the operations performed by the video encoder 200. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of both. Fixed function charts refer to circuits that provide certain functionality and are preconfigured for operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner determined by the instructions of the software or firmware. Fixed function circuits can execute program instructions (for example, accept parameters or output parameters), but the types of operations that fixed function circuits perform are usually immutable. In some examples, one or more modules may be separate circuit blocks (fixed functional blocks or programmable blocks), and in some examples, one or more modules may be integrated circuits.

[0142] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 1) может хранить объектный код программного обеспечения, который кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.[0142] The video encoder 200 may include arithmetic logic units (ALUs), elementary functional units (EFUs), digital circuits, analog circuits, and/or programmable cores formed by programmable circuits. In examples where operations of video encoder 200 are performed using software executable by programmable circuitry, memory 106 (FIG. 1) may store software object code that video encoder 200 receives and executes, or other memory in video encoder 200 (not shown) may store such instructions.

[0143] Память 230 данных видео сконфигурирована для хранения принятых данных видео. Кодер 200 видео может извлекать изображение данных видео из памяти 230 данных видео и передавать данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными видеоданными, которые должны быть закодированы.[0143] The video data memory 230 is configured to store received video data. The video encoder 200 may extract an image of the video data from the video data memory 230 and transmit the video data to the residual generation unit 204 and the mode selection unit 202 . The video data in the video data memory 230 may be raw video data to be encoded.

[0144] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 интра-предсказания. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутриблочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.[0144] The mode selection module 202 includes a motion estimation module 222, a motion compensation module 224, and an intra-prediction module 226. The mode selector 202 may include additional functional modules for performing video prediction in accordance with other prediction modes. By way of example, mode select module 202 may include a palette module, an intrablock copy module (which may be part of motion estimation module 222 and/or motion compensation module 224), an affine module, a linear model (LM) module, or the like.

[0145] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования комбинаций параметров кодирования и результирующих значений скорости-искажения для таких комбинаций. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать комбинацию параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых комбинаций.[0145] Mode selection module 202 typically coordinates multiple encoding passes to test combinations of encoding parameters and the resulting rate-distortion values for such combinations. The coding parameters may include splitting the CTU into CUs, prediction modes for the CUs, transform types for the CU residual data, quantization parameters for the CU residual data, and so on. The mode selector 202 may ultimately select a coding parameter combination having rate-distortion values that are better than the other tested combinations.

[0146] Кодер 200 видео может разбивать изображение, извлеченное из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU изображения в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.[0146] Video encoder 200 may partition an image retrieved from video data memory 230 into a sequence of CTUs and encapsulate one or more CTUs within a slice. The mode selector 202 may partition the CTUs of the image according to a tree structure such as the QTBT structure or the HEVC quad tree structure described above. As described above, video encoder 200 may generate one or more CUs from a split of CTUs according to a tree structure. Such a CU may also be referred to generically as a “video block” or “block”.

[0147] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения, и модулем 226 интра-предсказания), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных изображениях (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.[0147] In general, mode selection module 202 also controls its components (e.g., motion estimation module 222, motion compensation module 224, and intra-prediction module 226) to generate a prediction block for the current block (e.g., the current CU or, in HEVC, the overlapping portion of the PU and TU). For inter-prediction of the current block, motion estimation module 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (eg, one or more of the previously encoded pictures stored in DPB 218). In particular, the motion estimation module 222 may calculate a value representing how similar the potential reference block is to the current block, for example, according to the sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), root mean square differences (MSD), or the like. Motion estimation module 222 can typically perform these calculations using the sample-to-sample differences between the current block and the reference block under consideration. Motion estimation module 222 may identify the reference block having the smallest value obtained from these calculations, indicating the reference block that most closely matches the current block.

[0148] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют положения опорных блоков в опорных изображениях относительно положения текущего блока в текущем изображении. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и комбинировать извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.[0148] The motion estimation module 222 may generate one or more motion vectors (MVs) that define the positions of the reference blocks in the reference pictures relative to the position of the current block in the current picture. Motion estimation module 222 may then provide motion vectors to motion compensation module 224 . For example, for unidirectional inter prediction, motion estimation module 222 may provide one motion vector, while for bidirectional inter prediction, motion estimation module 222 may provide two motion vectors. Motion compensation module 224 may then generate a prediction block using the motion vectors. For example, motion compensation module 224 may extract reference block data using a motion vector. As another example, if the motion vector has fractional sampling precision, motion compensation module 224 may interpolate values for the prediction block in accordance with one or more interpolation filters. In addition, for bidirectional inter-prediction, motion compensation module 224 may extract data for two reference blocks identified by respective motion vectors and combine the extracted data, for example, by sample-to-sample averaging or weighted averaging.

[0149] В соответствии с методами настоящего раскрытия, буфер 218 декодированных картинок может включать в себя один или несколько буферов MVP истории для строк CTU. То есть, каждой строке CTU может быть выделен свой собственный буфер MVP, или один буфер MVP может быть использован для множества строк CTU. В любом случае, кодер 200 видео может сбросить буфер MVP для строки CTU в начале декодирования данных видео строки CTU. Модуль 224 компенсации движения или другой модуль кодера 200 видео может быть сконфигурирован для сохранения только уникальных векторов движения в буфере MVP. Как обсуждалось выше, модуль 224 компенсации движения или другой модуль кодера 200 видео может быть сконфигурирован для использования правила FIFO для управления информацией движения, сохраняемой в буфере MVP, так что при добавлении вектора движения в буфер MVP, если буфер MVP заполнен, модуль 224 компенсации движения может удалить самый ранний добавленный вектор движения из буфера MVP. В некоторых примерах, кодер 200 видео может поддерживать различные соответствующие буферы MVP для каждой из множества моделей движения, таких как, например, аффинная модель движения, информация движения режима внутриблочного копирования, информация движения компенсации локального освещения, подблочный MVP и временное предсказание движения.[0149] In accordance with the techniques of the present disclosure, decoded picture buffer 218 may include one or more history MVP buffers for CTU lines. That is, each CTU row can be allocated its own MVP buffer, or one MVP buffer can be used for multiple CTU rows. In any case, the video encoder 200 may flush the MVP buffer for the CTU line at the start of decoding the CTU line video data. Motion compensation module 224 or another module of video encoder 200 may be configured to store only unique motion vectors in the MVP buffer. As discussed above, motion compensation module 224 or another module of video encoder 200 may be configured to use a FIFO rule to control motion information stored in the MVP buffer such that when a motion vector is added to the MVP buffer, if the MVP buffer is full, motion compensation module 224 may remove the earliest added motion vector from the MVP buffer. In some examples, video encoder 200 may maintain different corresponding MVP buffers for each of a plurality of motion models, such as, for example, affine motion model, intra-block copy mode motion information, local illumination compensation motion information, sub-block MVP, and temporal motion prediction.

[0150] В качестве другого примера, для интра-предсказания или кодирования с интра-предсказанием, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов модуль 226 интра-предсказания может, обычно, математически комбинировать значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для формирования блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.[0150] As another example, for intra-prediction or intra-prediction coding, intra-prediction module 226 may generate a prediction block from samples adjacent to the current block. For example, for directional modes, intra-prediction module 226 can typically mathematically combine adjacent sample values and populate the current block with these computed values in a particular direction to form a prediction block. As another example, for the DC mode, intra-prediction module 226 may compute an average of adjacent samples for the current block and generate a prediction block to include that average for each prediction block sample.

[0151] Модуль 202 выбора режима предоставляет блок предсказания в модуль 204 генерации остатка. Модуль 204 генерации остатка получает необработанную, некодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет от выборки к выборке разности между текущим блоком и блоком предсказания. Полученные разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка может также определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть сформирован с использованием одной или нескольких схем вычитания, которые выполняют двоичное вычитание.[0151] The mode selection module 202 provides a prediction block to the residual generation module 204 . Residual generation module 204 receives a raw, uncoded version of the current block from video data memory 230 and a prediction block from mode selection module 202 . The residual generation module 204 calculates a sample-to-sample difference between the current block and the prediction block. The resulting sample-to-sample differences determine the residual block for the current block. In some examples, residual generation module 204 may also determine differences between sample values in the residual block to generate a residual block using residual differential pulse code modulation (RDPCM). In some examples, the remainder generator 204 may be formed using one or more subtraction circuits that perform binary subtraction.

[0152] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.[0152] In examples where mode selector 202 partitions a CU into PUs, each PU may be associated with a luminance prediction unit and corresponding chrominance prediction units. Video encoder 200 and video decoder 300 may support PUs having different sizes. As mentioned above, the CU size may refer to the size of the luminance coding unit of the CU, and the size of the PU may refer to the size of the luminance prediction unit of the PU. Assuming a particular CU size is 2Nx2N, video encoder 200 may support 2Nx2N or NxN PU sizes for intra-prediction and symmetrical PU sizes of 2Nx2N, 2NxN, Nx2N, NxN or similar for inter-prediction. Video encoder 200 and video decoder 300 may also support asymmetric partitioning for PU sizes of 2N×nU, 2N×nD, nL×2N, and nR×2N for inter-prediction.

[0153] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодирования яркости и соответствующими блоками кодирования цветности. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.[0153] In examples where the mode selector does not further partition the CU into PUs, each CU may be associated with a luminance coding block and corresponding chrominance coding blocks. As stated above, the size of the CU may refer to the size of the luminance coding unit of the CU. Video encoder 200 and video decoder 120 may support CU sizes of 2N×2N, 2N×N, or N×2N.

[0154] Для других методов кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методами кодирования, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодирование в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования. [0154] For other video coding methods, such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, as a few examples, the mode selection module 202, through the respective modules associated with the coding methods, generates a prediction block for the current block being coded. In some examples, such as palette mode coding, mode selector 202 may not generate a prediction block, but instead generate syntax elements indicating how the block is reconstructed based on the selected palette. In such modes, mode selector 202 may provide these syntax elements to entropy encoding module 220 for encoding.

[0155] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.[0155] As described above, the residual generation unit 204 receives video data for the current block and the corresponding prediction block. Then, the residual generation module 204 generates a residual block for the current block. To generate a residual block, residual generation module 204 calculates the sample-to-sample differences between the prediction block and the current block.

[0156] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для формирования блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования к остаточному блоку, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.[0156] The transform processing module 206 applies one or more transforms to the residual block to generate a transform coefficient block (referred to herein as a “transform coefficient block”). Transform processing module 206 may apply various transforms to the residual block to generate a block of transform coefficients. For example, transform processing module 206 may apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve (KLT) transform, or a conceptually similar transform to the residual block. In some examples, the transform processing module 206 may perform multiple transforms to the residual block, such as a primary transform and a secondary transform such as a rotation transform. In some examples, transform processing module 206 does not apply transforms to the residual block.

[0157] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем настройки значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.[0157] Quantization unit 208 may quantize the transform coefficients in the transform coefficient block to generate a block of quantized transform coefficients. Quantization module 208 may quantize the transform coefficients of a block of transform coefficients in accordance with a quantization parameter (QP) value associated with the current block. Video encoder 200 (eg, via mode selector 202) may adjust the amount of quantization applied to transform coefficient blocks associated with the current block by adjusting the QP value associated with the CU. The quantization may introduce loss of information, and thus the quantized transform coefficients may have lower accuracy than the original transform coefficients generated by the transform processing unit 206 .

[0158] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.[0158] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transforms to the block of quantized transform coefficients, respectively, to recover the residual block from the block of transform coefficients. Restoration module 214 may generate a reconstructed block corresponding to the current block (although possibly with some degree of distortion) based on the reconstructed residual block and the prediction block generated by mode selection module 202 . For example, reconstruction module 214 may add samples of the reconstructed residual block to corresponding samples from the prediction block generated by mode selection module 202 to form a reconstructed block.

[0159] Модуль 216 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев CU. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах.[0159] The filtering module 216 may perform one or more filtering operations on the recovered blocks. For example, filter module 216 may perform deblocking operations to reduce deblocking artifacts along the edges of the CU. The operations of filter module 216 may be omitted in some examples.

[0160] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в случаях, где операции модуля 216 фильтрации не требуются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где требуются операции модуля 216 фильтрации, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорное изображение из DPB 218, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодированных картинок. Кроме того, модуль интра-предсказания 226 может использовать восстановленные блоки в DPB 218 текущей изображения для интра-предсказания других блоков в текущем изображении.[0160] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in cases where the operations of the filter module 216 are not required, the reconstruction module 214 may store the reconstructed blocks in the DPB 218. In examples where the operations of the filter module 216 are required, the filter module 216 may store the filtered reconstructed blocks in the DPB 218. The motion estimation module 222 and the motion compensation module 224 may extract the reference picture from DPB 218 formed from the reconstructed (and potentially filtered) blocks to inter-predict blocks of subsequent coded pictures. In addition, the intra-prediction module 226 may use the reconstructed blocks in the DPB 218 of the current picture to intra-predict other blocks in the current picture.

[0161] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информации движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования от переменной к переменной (В2В) длине, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно кодируемыми.[0161] In general, entropy encoding module 220 may entropy encode syntax elements received from other functional components of video encoder 200. For example, entropy encoding module 220 may entropy encode blocks of quantized transform coefficients from quantization module 208 . As another example, entropy encoding unit 220 may entropy encode prediction syntax elements (eg, motion information for inter prediction or intra mode information for intra prediction) from mode selection unit 202 . Entropy encoding module 220 may perform one or more entropy encoding operations on syntax elements, which are another example of video data, to generate entropy encoded data. For example, entropy encoding module 220 may perform a context adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable to variable length (B2B) coding operation, a syntax-based context adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning (PIPE) entropy coding operation, an exponential Golomb coding operation, or another type of data entropy encoding operation. In some examples, entropy encoding module 220 may operate in bypass mode where the syntax elements are not entropy encoded.

[0162] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или изображения. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.[0162] The video encoder 200 may output a bitstream that includes the entropy encoded syntax elements needed to reconstruct slice or picture blocks. In particular, entropy encoding unit 220 may output a bit stream.

[0163] Описанные выше операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодирования яркости и/или блоков кодирования цветности. Как описано выше, в некоторых примерах, блоки кодирования яркости и цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности PU.[0163] The operations described above are described with respect to a block. Such description is to be understood as operations for the luminance coding block and/or chrominance coding blocks. As described above, in some examples, the luminance and chrominance coding blocks are the luminance and chrominance components of the CU. In some examples, the luma coding block and the chrominance coding blocks are the luma and chrominance components of the PU.

[0164] В некоторых примерах, операции, выполняемые в отношении блока кодирования яркости, не требуется повторять для блоков кодирования цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной изображения для блока кодирования яркости не требуется повторять для идентификации MV и опорной изображения для блоков цветности. Скорее, MV для блока кодирования яркости может быть масштабирован для определения MV для блоков цветности, и опорное изображение может быть тем же самым. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодирования яркости и блоков кодирования цветности.[0164] In some examples, operations performed on a luminance coding block do not need to be repeated for chrominance coding blocks. As one example, the operations for identifying a motion vector (MV) and a reference picture for a luminance coding block need not be repeated for identifying an MV and a reference picture for chrominance blocks. Rather, the MV for the luminance coding block may be scaled to determine the MV for the chrominance blocks, and the reference picture may be the same. As another example, the intra-prediction process may be the same for the luminance coding block and the chrominance coding blocks.

[0165] Кодер 200 видео представляет пример устройства, сконфигурированного для кодирования данных видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы сохранять информацию движения для первой строки единиц дерева кодирования (CTU) в первом буфере памяти предсказателя вектора движения (MVP) истории и сохранять информацию движения для второй строки CTU во втором буфере памяти MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0165] The video encoder 200 is an example of an apparatus configured to encode video data, including a memory configured to store video data and one or more processing units implemented in circuits and configured to store motion information for a first row of coding tree units (CTUs) in a first history motion vector predictor (MVP) memory buffer and store motion information for a second CTU row in a second history MVP memory buffer, wherein the second CTU row is different from the first CTU row.

[0166] Кодер 200 видео также представляет пример устройства, сконфигурированного, чтобы кодировать данные видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы сохранять кодированную информацию движения в буфере вектора движения предсказателя (MVP) истории, сохранять другой тип информации движения в буфере MVP истории, и кодировать информацию движения блока данных видео с использованием информации движения буфера MVP истории.[0166] The video encoder 200 also represents an example of an apparatus configured to encode video data, including a memory configured to store video data, and one or more processing units implemented in circuits and configured to store encoded motion information in a history motion vector predictor (MVP) buffer, store another type of motion information in the history MVP buffer, and encode motion information of a video data block using the motion information of the history MVP buffer.

[0167] Кодер 200 видео также представляет пример устройства, сконфигурированного для кодирования данных видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы сохранять множество различных типов информации движения в соответствующих различных буферах предсказателя вектора движения (MVP) истории.[0167] The video encoder 200 also represents an example of an apparatus configured to encode video data, including a memory configured to store video data and one or more processing modules implemented in circuits and configured to store a plurality of different types of motion information in respective different history motion vector predictor (MVP) buffers.

[0168] Фиг. 15 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методы настоящего раскрытия. Фиг. 15 обеспечена в целях пояснения и не ограничивает методы, широко иллюстрируемые и описанные в настоящем раскрытии. Для целей пояснения, настоящее раскрытие описывает декодер 300 видео в соответствии с методами JEM и HEVC. Однако методы настоящего раскрытия могут выполняться устройствами кодирования видео, которые сконфигурированы в соответствии с другими стандартами кодирования видео.[0168] FIG. 15 is a block diagram illustrating an exemplary video decoder 300 that may perform the techniques of the present disclosure. Fig. 15 is provided for purposes of explanation and does not limit the methods broadly illustrated and described in this disclosure. For purposes of explanation, the present disclosure describes a video decoder 300 in accordance with JEM and HEVC techniques. However, the methods of the present disclosure may be performed by video coding devices that are configured in accordance with other video coding standards.

[0169] В примере на фиг. 15, декодер 300 видео включает в себя память 320 буфера кодированной изображения (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных картинок (DPB). Любое или все из памяти CPB 320, модуля 302 энтропийного декодирования, модуля 304 обработки предсказания, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, декодер 300 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.[0169] In the example of FIG. 15, the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filtering unit 312, and a decoded picture buffer (DPB) 314. Any or all of the CPB memory 320, entropy decoding module 302, prediction processing module 304, inverse quantization module 306, inverse transform processing module 308, reconstruction module 310, filtering module 312, and DPB 314 may be implemented in one or more processors or processing circuits. In addition, video decoder 300 may include additional or alternative processors or processing circuits to perform these and other functions.

[0170] Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 интра-предсказания. Модуль 304 обработки предсказания может включать в себя модули суммирования для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутриблочного копирования (который может образовывать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше или другие функциональные компоненты. [0170] The prediction processing module 304 includes a motion compensation module 316 and an intra prediction module 318 . Prediction processing unit 304 may include adders for performing prediction in accordance with other prediction modes. As examples, prediction processing module 304 may include a palette module, an intra-block copy module (which may form part of motion compensation module 316), an affine module, a linear model (LM) module, or the like. In other examples, video decoder 300 may include more, less, or other functional components.

[0171] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из считываемого компьютером носителя 110 (фиг. 1). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной изображения, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные изображения, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть в чипе с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.[0171] The CPB memory 320 may store video data, such as an encoded video bitstream, for decoding by components of the video decoder 300. The video data stored in the CPB memory 320 may be obtained, for example, from a computer-readable medium 110 (FIG. 1). CPB memory 320 may include a CPB that stores encoded video data (eg, syntax elements) from an encoded video bitstream. In addition, the CPB memory 320 may store video data other than the syntax elements of the encoded picture, such as temporary data representing outputs from various modules of the video decoder 300. DPB 314 typically stores decoded pictures that video decoder 300 can output and/or use as video reference data when decoding subsequent data or pictures of the encoded video bitstream. CPB memory 320 and DPB 314 may be formed by any of a variety of memory devices such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The CPB memory 320 and DPB 314 may be provided by the same memory device or by separate memory devices. In various examples, CPB memory 320 may be on-chip with other components of video decoder 300, or off-chip with respect to these components.

[0172] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 1). То есть память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемой обработки декодера 300 видео.[0172] Additionally or alternatively, in some examples, video decoder 300 may retrieve encoded video data from memory 120 (FIG. 1). That is, memory 120 may store data as discussed above for CPB memory 320. Similarly, memory 120 may store instructions to be executed by video decoder 300 when some or all of the functionality of video decoder 300 is implemented in software to be executed by video decoder 300 processing circuitry.

[0173] Различные модули, показанные на фиг. 15, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинации. Подобно фиг. 14, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.[0173] The various modules shown in FIG. 15 are illustrated to aid in understanding the operations performed by the video decoder 300. The modules may be implemented as fixed function circuits, programmable circuits, or combinations of both. Like FIG. 14, fixed functional circuits refer to circuits that provide certain functionality and are pre-configured for operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner determined by the instructions of the software or firmware. Fixed function circuits can execute program instructions (for example, accept parameters or output parameters), but the types of operations that fixed function circuits perform are usually immutable. In some examples, one or more modules may be separate circuit blocks (fixed functional blocks or programmable blocks), and in some examples, one or more modules may be integrated circuits.

[0174] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, однокристальная память (в чипе) или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.[0174] Video decoder 300 may include ALUs, EFUs, digital circuits, analog circuits, and/or programmable cores formed by programmable circuits. In instances where the operations of the video decoder 300 are performed by software running on programmable circuits, the on-chip (on-chip) or off-chip memory may store instructions (eg, object code) of the software that the video decoder 300 receives and executes.

[0175] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.[0175] The entropy decoding module 302 may receive the encoded video data from the CPB and entropy decode the video data to reproduce the syntax elements. Prediction processing module 304, inverse quantization module 306, inverse transform processing module 308, reconstruction module 310, and filter module 312 may generate decoded video data based on syntax elements extracted from the bitstream.

[0176] В общем, декодер 300 видео восстанавливает изображение на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”). [0176] In general, video decoder 300 reconstructs an image on a block-by-block basis. The video decoder 300 may perform the recovery operation on each block individually (where the block that is being recovered, ie, decoded, at the current time may be referred to as the “current block”).

[0177] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.[0177] Entropy decoding module 302 can entropy decode syntax elements defining quantized transform coefficients of a block of quantized transform coefficients, as well as transform information such as quantization parameter (QP) indication(s) and/or transform mode. Inverse quantization module 306 may use the QP associated with the block of quantized transform coefficients to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied by inverse quantization module 306 . Inverse quantizer 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. Here, inverse quantizer 306 may generate a transform coefficient block including transform coefficients.

[0178] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.[0178] After inverse quantizer 306 has generated a transform coefficient block, inverse transform processing module 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, inverse transform processing unit 308 may apply an inverse DCT, inverse integer transform, inverse Karhunen-Loeve (KLT), inverse rotation, inverse directional transform, or other inverse transform to the coefficient block.

[0179] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорное изображение в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорном изображении относительно местоположения текущего блока в текущем изображении. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 14).[0179] In addition, the prediction processing unit 304 generates a prediction block in accordance with the prediction information syntax elements that have been entropy decoded by the entropy decoding unit 302 . For example, if the prediction information syntax elements indicate that the current block is inter-predicted, motion compensation module 316 may generate a prediction block. In this case, the prediction information syntax elements may indicate a reference picture in the DPB 314 from which the reference block should be retrieved, as well as a motion vector identifying the location of the reference block in the reference picture relative to the location of the current block in the current picture. Motion compensation module 316 may, in principle, perform the inter-prediction process in a manner that is essentially the same as that described with respect to motion compensation module 224 (FIG. 14).

[0180] В соответствии с методами настоящего раскрытия, буфер 314 декодированных картинок может включать в себя один или более буферов MVP истории для строк CTU. То есть каждой строке CTU может быть выделен свой собственный буфер MVP, или один буфер MVP может быть использован для множества строк CTU. В любом случае, декодер 300 видео может сбросить буфер MVP для строки CTU в начале кодирования видео данных строки CTU. Модуль 316 компенсации движения или другой модуль декодера 300 видео может быть сконфигурирован, чтобы хранить только уникальные вектора движения в буфере MVP. Как обсуждалось выше, модуль 316 компенсации движения или другой модуль декодера 300 видео может быть сконфигурирован, чтобы использовать правило FIFO для управления информацией движения, сохраненной в буфере MVP, так что при добавлении вектора движения в буфер MVP, если буфер MVP заполнен, модуль 316 компенсации движения может удалить самый ранний добавленный вектор движения из буфера MVP. В некоторых примерах, декодер 300 видео может поддерживать различные соответствующие буферы MVP для каждой из множества моделей движения, таких как, например, аффинная модель движения, информация движения режима внутриблочного копирования, информация движения компенсации локального освещения, подблочный MVP и временное предсказание движения.[0180] In accordance with the techniques of the present disclosure, decoded picture buffer 314 may include one or more history MVP buffers for CTU lines. That is, each CTU row can be allocated its own MVP buffer, or one MVP buffer can be used for multiple CTU rows. In any case, the video decoder 300 may flush the MVP buffer for the CTU line at the start of encoding the video data of the CTU line. Motion compensation module 316 or another module of video decoder 300 may be configured to store only unique motion vectors in the MVP buffer. As discussed above, the motion compensation module 316 or another module of the video decoder 300 may be configured to use a FIFO rule to control the motion information stored in the MVP buffer such that when a motion vector is added to the MVP buffer, if the MVP buffer is full, the motion compensation module 316 may remove the earliest added motion vector from the MVP buffer. In some examples, video decoder 300 may maintain different respective MVP buffers for each of a plurality of motion models, such as, for example, affine motion model, intrablock copy mode motion information, local illumination compensation motion information, subblock MVP, and temporal motion prediction.

[0181] В качестве другого примера, если синтаксические элементы информации предсказания указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации предсказания. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, который по существу аналогичен описанному в отношении модуля 226 интра-предсказания (фиг. 14). Модуль 318 интра-предсказания может извлекать данные из соседних выборок для текущего блока из DPB 314.[0181] As another example, if the prediction syntax elements indicate that the current block is intra-predicted, intra-prediction module 318 may generate a prediction block in accordance with the intra-prediction mode indicated by the prediction syntax elements. Again, intra-prediction module 318 can, in principle, perform the intra-prediction process in a manner that is substantially the same as described with respect to intra-prediction module 226 (FIG. 14). Intra-prediction module 318 may extract data from adjacent samples for the current block from DPB 314.

[0182] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока предсказания и остаточного блока. Например, модуль 310 восстановления может добавлять выборки остаточного блока к соответствующим выборкам блока предсказания для восстановления текущего блока.[0182] Recovery module 310 may recover the current block using the prediction block and the residual block. For example, reconstruction module 310 may add residual block samples to corresponding prediction block samples to restore the current block.

[0183] Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.[0183] Filtering module 312 may perform one or more filtering operations on the recovered blocks. For example, filter module 312 may perform deblocking operations to reduce deblocking artifacts along the edges of the reconstructed blocks. The operations of filter module 312 are not necessarily performed in all examples.

[0184] Декодер 300 видео может сохранить восстановленные блоки в DPB 314. Например, в случаях, когда операции модуля 312 фильтрации не требуются, модуль 310 восстановления может сохранить восстановленные блоки в DPB 314. В случаях, когда требуются операции модуля 312 фильтрации, модуль 312 фильтрации может сохранить отфильтрованные восстановленные блоки в DPB 314. Как обсуждалось выше, DPB 314 может предоставлять опорную информацию, такую как выборки текущей изображения для интра-предсказания и ранее декодированные изображения для последующей компенсации движения, в модуль обработки 304 предсказания. Кроме того, декодер 300 видео может выводить декодированные изображения из DPB 314 для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.[0184] The video decoder 300 may store the reconstructed blocks in the DPB 314. For example, in cases where operations of the filter module 312 are not required, the recovery module 310 may store the reconstructed blocks in the DPB 314. In cases where operations of the filter module 312 are required, the filter module 312 may store the filtered reconstructed blocks in the DPB 314. As discussed above, the DPB 314 may provide reference information such as samples the current image for intra-prediction and the previously decoded images for subsequent motion compensation, to the prediction processing module 304 . In addition, video decoder 300 may output decoded pictures from DPB 314 for subsequent presentation on a display device, such as display device 118 in FIG. 1.

[0185] Декодер 300 видео представляет пример устройства, сконфигурированного для декодирования данных видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы сохранять информацию движения для первой строки единиц дерева кодирования (CTU) (которая может обрабатываться первым подпроцессом процесса кодирования видео) в первом буфере памяти предсказателя вектора движения (MVP) истории, и сохранять информации движения для второй строки CTU (которая может обрабатываться вторым подпроцессом процесса кодирования видео) во втором буфере памяти MVP истории, причем вторая строка CTU отличается от первой строки CTU. Второй подпроцесс может отличаться от первого подпроцесса.[0185] The video decoder 300 is an example of an apparatus configured to decode video data, including a memory configured to store video data, and one or more processing units implemented in circuitry and configured to store motion information for a first row of coding tree units (CTU) (which may be processed by a first sub-process of the video encoding process) in a first history motion vector predictor (MVP) memory buffer, and store motion information for a second row of CTUs (which may be processed by a second video encoding process subprocess) in the second history MVP memory buffer, with the second CTU row different from the first CTU row. The second sub-process may be different from the first sub-process.

[0186] Декодер 300 видео также представляет пример устройства, сконфигурированного для декодирования данных видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы сохранять кодированную информацию движения в буфере предсказателя вектора движения (MVP) истории, сохранять другой тип информации движения в буфере MVP истории, и кодировать информацию движения для блока данных видео с использованием информации движения буфера MVP истории.[0186] The video decoder 300 also represents an example of an apparatus configured to decode video data, including a memory configured to store video data, and one or more processing units implemented in circuits and configured to store encoded motion information in a history motion vector predictor (MVP) buffer, store another type of motion information in the history MVP buffer, and encode motion information for a block of video data using the motion information of the history MVP buffer.

[0187] Декодер 300 видео также представляет пример устройства, сконфигурированного для декодирования данных видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схемах и сконфигурированных, чтобы сохранять множество различных видов информации движения в соответствующих буферах предсказателя вектора движения (MVP) истории.[0187] The video decoder 300 also represents an example of an apparatus configured to decode video data, including a memory configured to store video data and one or more processing modules implemented in circuits and configured to store a plurality of different kinds of motion information in respective history motion vector predictor (MVP) buffers.

[0188] На фиг. 16 представлена блок-схема последовательности операций, иллюстрирующая пример способа для кодирования текущего блока в соответствии с методами настоящего раскрытия. Текущий блок может содержать текущую CU. Хотя описание приведено относительно кодера 200 видео (фиг. 1 и 14), следует понимать, что другие устройства могут быть сконфигурированы для выполнения способа, аналогичного показанному на фиг. 16.[0188] FIG. 16 is a flowchart illustrating an example of a method for encoding a current block in accordance with the methods of the present disclosure. The current block may contain the current CU. While the description has been made with respect to the video encoder 200 (FIGS. 1 and 14), it should be understood that other devices may be configured to perform a method similar to that shown in FIGS. 16.

[0189] В этом примере, кодер 200 видео первоначально предсказывает текущий блок с помощью информации движения (350). Например, кодер 200 видео может сформировать блок предсказания для текущего блока с использованием информации движения. Кодер 200 видео может затем вычислить остаточный блок для текущего блока (352). Чтобы вычислить остаточный блок, кодер 200 видео может вычислить разность между исходным, некодированным блоком и блоком предсказания для текущего блока. Кодер 200 видео может затем преобразовывать и квантовать коэффициенты остаточного блока (354). Затем кодер 200 видео может сканировать квантованные коэффициенты преобразования остаточного блока (356). Во время сканирования или после сканирования, кодер 200 видео может энтропийно кодировать коэффициенты и информацию движения (358) с использованием методов настоящего раскрытия. Кодер 200 видео может кодировать коэффициенты с использованием CAVLC или CABAC.[0189] In this example, the video encoder 200 initially predicts the current block using motion information (350). For example, video encoder 200 may generate a prediction block for the current block using the motion information. Video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, video encoder 200 may calculate the difference between the original, uncoded block and the prediction block for the current block. Video encoder 200 may then transform and quantize the coefficients of the residual block (354). Video encoder 200 may then scan the quantized transform coefficients of the residual block (356). During or after scanning, video encoder 200 may entropy encode coefficients and motion information (358) using the techniques of the present disclosure. Video encoder 200 may encode the coefficients using CAVLC or CABAC.

[0190] Кодер 200 видео может формировать список кандидатов информации движения, включающий, например, кандидатов HMVP, в соответствии с любым или всеми из методов настоящего раскрытия, выбрать индекс кандидата, представляющий предсказатель для информации движения блока, и энтропийно кодировать индекс кандидата. В соответствии с методами настоящего раскрытия, кодер 200 видео может сбросить буфер MVP перед использованием буфера MVP, чтобы сохранить информацию движения соответствующей строки CTU. В некоторых примерах, каждая строка CTU может иметь свой собственный буфер MVP, или один буфер MVP может использоваться для множества строк CTU. Кроме того, кодер 200 видео может сохранить множество типов информации движения в буферах MVP, например, одном и том же буфере или различных буферах соответствующих моделей движения. Кодер 200 видео может кодировать информацию движения текущего блока с использованием предсказателей векторов движения, выбранных из данных буфера MVP. Кодер 200 видео может затем выводить энтропийно закодированные данные блока (360), например, включающие в себя данные для коэффициентов и информацию движения, такую как индекс кандидата.[0190] The video encoder 200 may generate a motion information candidate list including, for example, HMVP candidates in accordance with any or all of the methods of the present disclosure, select a candidate index representing a predictor for the block motion information, and entropy encode the candidate index. In accordance with the techniques of the present disclosure, the video encoder 200 may flush the MVP buffer before using the MVP buffer to store the motion information of the corresponding CTU line. In some examples, each CTU row may have its own MVP buffer, or one MVP buffer may be used for multiple CTU rows. In addition, the video encoder 200 may store multiple types of motion information in MVP buffers, such as the same buffer or different buffers of respective motion models. The video encoder 200 may encode the motion information of the current block using motion vector predictors selected from the MVP buffer data. Video encoder 200 may then output entropy encoded block data (360), for example including data for coefficients and motion information such as a candidate index.

[0191] Таким образом, способ в соответствии с фиг. 16 представляет пример способа, включающего в себя сохранение информации движения для изображения первой строки единиц дерева кодирования (CTU) в первом буфере памяти предсказателя вектора движения (MVP) истории; сброс второго буфера памяти MVP истории; и после сброса второго буфера MVP истории, сохранение информации движения для изображения второй строки CTU во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0191] Thus, the method according to FIG. 16 shows an example of a method including storing motion information for a first row of coding tree units (CTU) image in a first history motion vector predictor (MVP) memory buffer; flushing the second MVP history buffer; and after flushing the second history MVP buffer, storing motion information for the second CTU row image in the second history MVP buffer, the second CTU row being different from the first CTU row.

[0192] Способ согласно фиг. 16 также представляет пример способа, включающего в себя сохранение информации движения в буфере предсказателя вектора движения (MVP) истории; сохранение другого типа информации движения в буфере MVP истории; и кодирование информации движения блока данных видео с использованием информации движения буфера MVP истории.[0192] The method of FIG. 16 also shows an example of a method including storing motion information in a history motion vector predictor (MVP) buffer; storing a different type of motion information in the history MVP buffer; and encoding the motion information of the video data block using the motion information of the history buffer MVP.

[0193] Способ на фиг. 16 также представляет пример способа, включающего в себя сохранение множества различных типов информации движения в соответствующих различных буферах предсказателей векторов движения (MVP) истории.[0193] The method of FIG. 16 also shows an example of a method including storing a plurality of different types of motion information in respective different history motion vector predictor (MVP) buffers.

[0194] На фиг. 17 представлена блок-схема последовательности операций, иллюстрирующая пример способа для декодирования текущего блока данных видео в соответствии с методами настоящего раскрытия. Текущий блок может содержать текущую CU. Хотя описание приведено в отношении декодера 300 видео (фиг. 1 и 15), следует понимать, что другие устройства могут быть сконфигурированы, чтобы выполнять способ, аналогичный показанному на фиг. 17.[0194] FIG. 17 is a flowchart illustrating an example of a method for decoding a current block of video data in accordance with the techniques of the present disclosure. The current block may contain the current CU. While the description has been made with respect to the video decoder 300 (FIGS. 1 and 15), it should be understood that other devices may be configured to perform a method similar to that shown in FIGS. 17.

[0195] Декодер 300 видео может принимать энтропийно кодированные данные для текущего блока, такие как энтропийно кодированная информация предсказания и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Как обсуждалось выше, энтропийно кодированная информация предсказания может включать в себя, например, индекс кандидата в список кандидатов, который может включать кандидатов HMVP в соответствии с методами настоящего раскрытия. Декодер 300 видео может энтропийно декодировать энтропийно кодированные данные, чтобы определять информацию предсказания для текущего блока и восстанавливать коэффициенты остаточного блока (372). Декодер 300 видео может предсказывать текущий блок (374), например, с использованием режима интер-предсказания, как указано информацией предсказания для текущего блока, что вычислить блок предсказания для текущего блока.[0195] The video decoder 300 may receive entropy coded data for the current block, such as entropy coded prediction information and entropy coded data for residual block coefficients corresponding to the current block (370). As discussed above, the entropy coded prediction information may include, for example, a candidate list candidate index, which may include HMVP candidates in accordance with the techniques of the present disclosure. The video decoder 300 may entropy decode the entropy encoded data to determine prediction information for the current block and recover coefficients of the residual block (372). The video decoder 300 may predict the current block (374), for example, using the inter-prediction mode as indicated by the prediction information for the current block to compute a prediction block for the current block.

[0196] В частности, декодер 300 видео может формировать список кандидатов, включающий кандидатов HMVP, как описано выше, а затем определять кандидата из списка кандидатов, чтобы использовать в качестве предсказателя вектора движения для текущего блока с использованием декодированного индекса кандидата. В соответствии с методами настоящего раскрытия, декодер 300 видео может сбросить буфер MVP перед использованием буфера MVP для сохранения информации движения соответствующей строки CTU. В некоторых примерах, каждая строка CTU может иметь свой собственный буфер MVP, или один буфер MVP может использоваться для множества строк CTU. Кроме того, декодер 300 видео может сохранить множество типов информации движения в буферах MVP, например, в том же самом буфере или различных буферах, соответствующих моделям движения. Декодер 300 видео может выбирать с использованием предсказателей векторов движения из данных буфера MVP.[0196] Specifically, video decoder 300 may generate a candidate list including HMVP candidates as described above, and then determine a candidate from the candidate list to use as a motion vector predictor for the current block using the decoded candidate index. In accordance with the techniques of the present disclosure, the video decoder 300 may flush the MVP buffer before using the MVP buffer to store motion information of the corresponding CTU line. In some examples, each CTU row may have its own MVP buffer, or one MVP buffer may be used for multiple CTU rows. In addition, the video decoder 300 may store multiple types of motion information in MVP buffers, such as the same buffer or different buffers corresponding to motion models. Video decoder 300 may select using motion vector predictors from MVP buffer data.

[0197] Декодер 300 видео может затем восстановить вектор движения для текущего блока с использованием предсказателя вектора движения, а затем предсказать текущий блок с использованием вектора движения, чтобы сгенерировать блок предсказания. Декодер 300 видео может затем обратно сканировать восстановленные коэффициенты (376), чтобы создать блок квантованных коэффициентов преобразования. Декодер 300 видео может затем обратно квантовать и обратно преобразовать коэффициенты для получения остаточного блока (378). Декодер 300 видео может, в конечном счете, декодировать текущий блок путем комбинирования блока предсказания и остаточного блока (380).[0197] The video decoder 300 may then reconstruct the motion vector for the current block using the motion vector predictor, and then predict the current block using the motion vector to generate a prediction block. Video decoder 300 may then backscan the reconstructed coefficients (376) to create a block of quantized transform coefficients. Video decoder 300 may then inversely quantize and inversely transform the coefficients to obtain a residual block (378). Video decoder 300 may eventually decode the current block by combining the prediction block and the residual block (380).

[0198] Таким образом, способ согласно фиг. 17 представляет пример способа, включающего в себя сохранение информации движения для первой строки единиц дерева кодирования (CTU) изображения в первом буфере памяти предсказателя вектора движения (MVP) истории; сброс второго буфера памяти MVP истории; и после сброса второго буфера MVP истории, сохранение информации движения для второй строки CTU изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0198] Thus, the method of FIG. 17 shows an example of a method including storing motion information for a first row of coding tree units (CTUs) of a picture in a first history motion vector predictor (MVP) memory buffer; flushing the second MVP history memory buffer; and after flushing the second history MVP buffer, storing the motion information for the second image CTU line in the second history MVP buffer, the second CTU line being different from the first CTU line.

[0199] Способ согласно фиг. 17 также представляет пример способа, включающего в себя сохранение информации движения в буфере вектора движения предсказателя (MVP) истории; сохранение другого типа информации движения в буфере MVP истории; и кодирование информации движения блока данных видео с использованием информации движения буфера MVP истории.[0199] The method of FIG. 17 also shows an example of a method including storing motion information in a history predictor motion vector (MVP) buffer; storing a different type of motion information in the history MVP buffer; and encoding the motion information of the video data block using the motion information of the history buffer MVP.

[0200] Способ согласно фиг. 17 также представляет пример способа, включающего в себя сохранение множества различных типов информации движения в соответствующих буферах предсказателя вектора движения (MVP) истории.[0200] The method of FIG. 17 also shows an example of a method including storing a plurality of different types of motion information in respective history motion vector predictor (MVP) buffers.

[0201] На фиг. 18 представлена блок-схема последовательности операций, иллюстрирующая примерный способ кодирования (кодирования или декодирования) данных видео в соответствии с методами настоящего раскрытия. Например, способ согласно фиг. 18 может быть выполнен во время этапа 350 на фиг. 16 или этапа 374 на фиг. 17. Для примера и пояснения, способ согласно фиг. 18 поясняется в отношении декодера 300 видео, хотя кодер 200 видео может также выполнять этот или аналогичный способ.[0201] In FIG. 18 is a flowchart illustrating an exemplary method for encoding (encoding or decoding) video data in accordance with the techniques of the present disclosure. For example, the method according to FIG. 18 may be performed during step 350 in FIG. 16 or step 374 in FIG. 17. By way of example and explanation, the method of FIG. 18 is explained in relation to video decoder 300, although video encoder 200 may also perform this or a similar method.

[0202] Декодер 300 видео может кодировать блоки первой строки CTU изображения (390), например, с использованием интра- или интер-предсказания. Декодер 300 видео сохраняет информацию движения первой строки единиц дерева кодирования (CTU) изображения в первом буфере (392), например, DPB 314. Декодер 300 видео может использовать информацию движения первого буфера, чтобы кодировать информацию движения, используемую во время кодирования интер-предсказания. В некоторых примерах, первый подпроцесс процесса кодирования видео, выполняемого декодером 300 видео, может кодировать первую строку CTU.[0202] The video decoder 300 may encode blocks of the first row CTU of the picture (390), for example, using intra- or inter-prediction. The video decoder 300 stores the motion information of the first row of image coding tree units (CTUs) in a first buffer (392), for example, DPB 314. The video decoder 300 may use the first buffer's motion information to encode the motion information used during inter-prediction encoding. In some examples, the first sub-process of the video encoding process performed by the video decoder 300 may encode the first line of the CTU.

[0203] Декодер 300 видео может также сбросить второй буфер (394), например, DPB 314. Второй буфер может быть тем же самым, что и первый буфер, или другим буфером. Декодер 300 видео может также кодировать блоки второй строки CTU (396). Декодер 300 видео может сохранить информацию движения второй строки CTU во втором буфере (398). В некоторых примерах, второй подпроцесс процесса кодирования видео, выполняемого декодером 300 видео, может кодировать вторую строку CTU, причем второй подпроцесс отличается от первого подпроцесса.[0203] The video decoder 300 may also flush the second buffer (394), such as DPB 314. The second buffer may be the same as the first buffer or a different buffer. Video decoder 300 may also encode blocks of the second line CTU (396). The video decoder 300 may store the motion information of the second line of the CTU in a second buffer (398). In some examples, a second subprocess of the video encoding process performed by video decoder 300 may encode a second CTU string, with the second subprocess different from the first subprocess.

[0204] Таким образом, способ согласно фиг. 18 представляет пример способа, включающего в себя сохранение информации движения для первой строки единиц дерева кодирования (CTU) изображения в первом буфере памяти предсказателя вектора движения (MVP) истории; сброс второго буфера памяти MVP истории; и после сброса второго буфера MVP истории, сохранение информации движения для второй строки CTU изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU.[0204] Thus, the method of FIG. 18 shows an example of a method including storing motion information for a first row of coding tree units (CTUs) of a picture in a first history motion vector predictor (MVP) memory buffer; flushing the second MVP history memory buffer; and after flushing the second history MVP buffer, storing the motion information for the second image CTU line in the second history MVP buffer, the second CTU line being different from the first CTU line.

[0205] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методов могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методов). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.[0205] It should be borne in mind that, depending on the example, some actions or events of any of the methods described here may be performed in a different sequence, may be added, combined, or excluded altogether (for example, not all of the described actions or events are necessary for the practical implementation of the methods). In addition, in some examples, actions or events may be performed simultaneously, such as through multi-threading, interrupt handling, or multiple processors, rather than sequentially.

[0206] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой их комбинации. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или кода на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют осязаемому носителю, такому как носитель хранения данных, или коммуникационной среде, включающей в себя любой носитель, который обеспечивает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) осязаемым считываемым компьютером носителям хранения, которые являются энергонезависимыми, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями хранения данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.[0206] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware processing unit. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as a storage medium, or a communication medium, including any medium that enables the transfer of a computer program from one place to another, for example, in accordance with a communication protocol. Thus, computer-readable media can typically correspond to (1) tangible computer-readable storage media that is non-volatile, or (2) a communication medium such as a signal or carrier wave. Storage media can 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. The computer program product may include a computer-readable medium.

[0207] В качестве примера, а не ограничения, такие считываемые компьютером носители хранения могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как считываемый компьютером носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители хранения и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на не-временные, осязаемые носители информации. Магнитный диск (disk) и оптический диск (disc), как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.[0207] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly defined as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwaves, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwaves are included in the definition of media. However, it should be understood that computer-readable storage media and storage media do not include connections, carrier waves, signals, or other temporary media, but are instead directed to non-temporal, tangible media. The magnetic disc (disk) and the optical disc (disc) as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disc, and Blu-ray disc, where magnetic discs usually reproduce data magnetically while optical discs reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer-readable media.

[0208] Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термины “процессор” и “схема обработки”, используемые здесь, могут относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в комбинированный кодек. Кроме того, методы могут быть полностью реализованы в одной или более схемах или логических элементах.[0208] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated circuits or discrete logic circuits. Accordingly, the terms "processor" and "processing circuit" as used herein may refer to any of the above structures or any other structure suitable for implementing the methods described here. In addition, in some aspects, the functionality described herein may be provided in dedicated hardware and/or software modules configured for encoding and decoding or embedded in a combined codec. In addition, the methods may be fully implemented in one or more circuits or logic elements.

[0209] Методики согласно настоящему раскрытию могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методов, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или микропрограммным обеспечением.[0209] The techniques of the present disclosure may be implemented in a wide variety of devices or devices, including a wireless telephone, an integrated circuit (IC), or a stack of integrated circuits (eg, a chipset). Various components, modules, or blocks are described in this disclosure with emphasis on the functional aspects of devices configured to perform the disclosed methods, but not necessarily requiring implementation by different hardware modules. Rather, as described above, various modules may be combined into a codec hardware module or provided with a set of cooperating hardware modules, including one or more processors, as described above, in association with suitable software and/or firmware.

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

Claims (143)

1. Способ кодирования данных видео, содержащий этапы, на которых:1. A method for encoding video data, comprising the steps of: кодируют информацию движения для первой строки единиц дерева кодирования (CTU) изображения, причем информация движения для первой строки CTU включает в себя первые один или более векторов движения для первой строки CTU;encoding motion information for a first row of coding tree units (CTUs) of the picture, wherein the motion information for the first CTU row includes first one or more motion vectors for the first CTU row; формируют первые один или более блоков предсказания для первых одной или более единиц кодирования (CU) первой строки CTU с использованием первых опорных блоков, идентифицируемых информацией движения для первой строки CTU;generating first one or more prediction blocks for the first one or more coding units (CUs) of the first CTU row using first reference blocks identified by motion information for the first CTU row; кодируют первые один или более остаточных блоков для первых одной или более CU, причем первые один или более остаточных блоков представляют соответственные разности между первыми одним или более блоками предсказания и первыми одной или более CU;encoding the first one or more residual blocks for the first one or more CUs, the first one or more residual blocks representing respective differences between the first one or more prediction blocks and the first one or more CUs; сохраняют информацию движения для первой строки CTU упомянутого изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти, включая сохранение первых одного или более векторов движения для первой строки CTU в первом буфере MVP истории для использования в качестве первых предикторов векторов движения, чтобы предсказывать первые один или более других векторов движения упомянутого изображения; storing motion information for the first CTU row of said image in a first history-based motion vector predictor (history MVP) buffer in memory, including storing the first one or more motion vectors for the first CTU row in the first history MVP buffer for use as first motion vector predictors to predict the first one or more other motion vectors of said image; сбрасывают второй буфер MVP истории в памяти;flushing the second history MVP buffer in memory; кодируют информацию движения для второй строки CTU упомянутого изображения, причем информация движения для второй строки CTU включает в себя вторые один или более векторов движения для второй строки CTU;encoding motion information for a second CTU row of said picture, the motion information for the second CTU row including second one or more motion vectors for the second CTU row; формируют вторые один или более блоков предсказания для вторых одной или более CU второй строки CTU с использованием вторых опорных блоков, идентифицируемых информацией движения для второй строки CTU;generating second one or more prediction blocks for the second one or more CUs of the second CTU row using second reference blocks identified by traffic information for the second CTU row; кодируют вторые один или более остаточных блоков для вторых одной или более CU, причем вторые один или более остаточных блоков представляют соответственные разности между вторыми одним или более блоками предсказания и вторыми одной или более CU; иencoding second one or more residual blocks for the second one or more CUs, wherein the second one or more residual blocks represent respective differences between the second one or more prediction blocks and the second one or more CUs; And после сброса второго буфера MVP истории, сохраняют информацию движения для второй строки CTU упомянутого изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU, включая сохранение вторых одного или более векторов движения для второй строки CTU для использования в качестве вторых предикторов векторов движения, чтобы предсказывать вторые один или более других векторов движения упомянутого изображения.after resetting the second history MVP buffer, motion information for the second CTU line of the said image is stored in the second history MVP buffer, the second CTU line being different from the first CTU line, including storing the second one or more motion vectors for the second CTU line for use as second motion vector predictors to predict the second one or more other motion vectors of the said image. 2. Способ по п.1, в котором второй буфер MVP истории отличается от первого буфера MVP истории, причем упомянутое сохранение информации о движении для первой строки CTU содержит этап, на котором сохраняют, посредством первого подпроцесса процесса кодирования видео, информацию движения для первой строки CTU, и упомянутое сохранение информации движения для второй строки CTU содержит этап, на котором сохраняют, посредством второго подпроцесса процесса кодирования видео, информацию движения для второй строки CTU, причем первый подпроцесс отличается от второго подпроцесса.2. The method according to claim 1, wherein the second MVP history buffer differs from the first MVP history buffer, wherein said storing the motion information for the first CTU row comprises storing, by means of the first subprocess of the video encoding process, motion information for the first CTU row, and said storing the motion information for the second CTU row comprises storing, by means of the second subprocess of the video encoding process, motion information for the second CTU row, the first subprocess being different from the second subprocess. 3. Способ по п.1, в котором второй буфер MVP истории отличается от первого буфера MVP истории, при этом при упомянутом сбросе второго буфера MVP истории второй буфер MVP истории сбрасывают в ответ на обработку начала второй строки CTU во время параллельной обработки волнового фронта.3. The method of claim 1, wherein the second history MVP buffer is different from the first history MVP buffer, wherein in said flushing of the second history MVP buffer, the second history MVP buffer is flushed in response to processing the beginning of the second CTU row during parallel wavefront processing. 4. Способ по п.1, в котором4. The method according to claim 1, in which при упомянутом сохранении информации движения для первой строки CTU сохраняют только информацию движения, уникальную в пределах первого буфера MVP истории, в первый буфер MVP истории, иin said storing the motion information for the first row, the CTUs store only the motion information unique within the first history MVP buffer into the first history MVP buffer, and при упомянутом сохранении информации движения для второй строки CTU сохраняют только информацию движения, уникальную в пределах второго буфера MVP истории, во второй буфер MVP истории.in said storing the motion information for the second row, the CTUs only store the motion information unique within the second history MVP buffer into the second history MVP buffer. 5. Способ по п.1, дополнительно содержащий этапы, на которых:5. The method of claim 1, further comprising the steps of: когда первый буфер MVP истории становится заполненным, удаляют один или более самых ранних введенных векторов движения из первого буфера MVP истории в соответствии с правилом “первым пришел - первым обслужен” (FIFO); иwhen the first history MVP buffer becomes full, deleting one or more of the earliest inputted motion vectors from the first history MVP buffer in accordance with a first-come-first-served (FIFO) rule; And когда второй буфер MVP истории становится заполненным, удаляют один или более самых ранних введенных векторов движения из второго буфера MVP истории в соответствии с правилом FIFO.when the second history MVP buffer becomes full, one or more of the earliest input motion vectors are removed from the second history MVP buffer in accordance with the FIFO rule. 6. Способ по п.1, в котором6. The method according to claim 1, in which при упомянутом сохранении информации движения для первой строки CTU сохраняют информацию движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из первого множества буферов MVP истории, включающего в себя первый буфер MVP истории; иwhen said storing motion information for the first row, the CTUs store motion information for each of a plurality of different types of motion patterns in respective different history MVP buffers of the first plurality of history MVP buffers, including the first history MVP buffer; And при упомянутом сохранении информации движения для второй строки CTU сохраняют информацию движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из второго множества буферов MVP истории, включающего в себя второй буфер MVP истории. in said storing motion information for the second row, the CTUs store motion information for each of the plurality of different types of motion patterns in respective different history MVP buffers of the second plurality of history MVP buffers including the second history MVP buffer. 7. Способ по п.6, в котором упомянутое множество разных типов моделей движения содержит одно или более из аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, подблочного предсказания векторов движения (MVP) и временного предсказания движения. 7. The method of claim 6, wherein said plurality of different types of motion models comprises one or more of an affine motion model, intrablock copy mode motion information, local illumination compensation motion information, subblock motion vector prediction (MVP), and temporal motion prediction. 8. Способ по п.1, дополнительно содержащий этап, на котором генерируют синтетический MVP из двух или более MVP в одном или более буферах MVP истории. 8. The method of claim 1, further comprising generating a synthetic MVP from two or more MVPs in one or more history MVP buffers. 9. Способ по п.8, в котором упомянутые два или более MVP имеют разные типы информации движения, содержащие две или более из кодированной информации движения, информации движения аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, информации движения подблочного MVP, информации движения временного предиктора движения, информации синтетического вектора движения, основывающейся на информации движения MVP, информации движения пространственного MVP и информации движения временного MVP.9. The method of claim 8, wherein said two or more MVPs have different types of motion information comprising two or more of encoded motion information, affine motion model motion information, intra-block copy mode motion information, local lighting compensation motion information, sub - block MVP motion information, temporal motion predictor motion information, synthetic motion vector information based on the MVP motion information, spatial MVP motion information, and temporal MVP motion information. 10. Способ по п.1, в котором10. The method according to claim 1, in which упомянутое сохранение информации движения для первой строки CTU дополнительно содержит этап, на котором предварительно заполняют первый буфер MVP истории первой заранее определенной информацией движения, причем первая заранее определенная информация движения содержит первый нулевой вектор движения с первым индексом опорного кадра и первым направлением интер-предсказания, иsaid storing the motion information for the first row of the CTU further comprises pre-filling the first history MVP buffer with the first predetermined motion information, the first predetermined motion information comprising a first null motion vector with a first reference frame index and a first inter-prediction direction, and упомянутое сохранение информации движения для второй строки CTU дополнительно содержит этап, на котором предварительно заполняют второй буфер MVP истории второй заранее определенной информацией движения, причем вторая заранее определенная информация движения содержит второй нулевой вектор движения с вторым индексом опорного кадра и вторым направлением интер-предсказания.said storing the motion information for the second row of the CTU further comprises pre-filling the second history MVP buffer with the second predetermined motion information, the second predetermined motion information comprising a second null motion vector with a second reference frame index and a second inter-prediction direction. 11. Способ по п.1, в котором изображение, включающее в себя первую строку CTU и вторую строку CTU, является первым временным слоем, при этом11. The method of claim 1, wherein the picture including the first CTU line and the second CTU line is the first temporal layer, wherein упомянутое сохранение информации движения для первой строки CTU дополнительно содержит этап, на котором предварительно заполняют первый буфер MVP истории первой информацией движения из первых одного или более кодированных изображений в первом временном слое или одном и более временных слоях ниже, чем первый временной слой, иsaid storing the motion information for the first row of the CTU further comprises pre-filling the first history buffer MVP with the first motion information from the first one or more coded pictures in the first time layer or one or more time layers lower than the first time layer, and упомянутое сохранение информации движения для второй строки CTU дополнительно содержит этап, на котором предварительно заполняют второй буфер MVP истории второй информацией движения из вторых одного или более кодированных изображений в первом временном слое или одном и более временных слоях ниже, чем первый временной слой, said storing the motion information for the second row of the CTU further comprises pre-filling the second history buffer MVP with the second motion information from the second one or more encoded pictures in the first time layer or one or more time layers lower than the first time layer, причем способ дополнительно содержит этап, на котором масштабируют по меньшей мере одну из первой информации движения и второй информации движения в соответствии с временными разностями. the method further comprising scaling at least one of the first motion information and the second motion information according to the time differences. 12. Способ по п.1, дополнительно содержащий этапы, на которых:12. The method of claim 1, further comprising the steps of: инициализируют первый буфер MVP истории первым нулевым вектором движения, имеющим первый индекс опорного кадра и первое направление интер-предсказания; и initializing the first history buffer MVP with a first null motion vector having a first reference frame index and a first inter-prediction direction; And инициализируют второй буфер MVP истории вторым нулевым вектором движения, имеющим второй индекс опорного кадра и второе направление интер-предсказания.initializing the second history buffer MVP with a second zero motion vector having a second reference frame index and a second inter-prediction direction. 13. Способ по п.1, в котором вторая строка CTU находится непосредственно ниже первой строки CTU, причем способ дополнительно содержит этап, на котором инициализируют или модифицируют второй буфер MVP истории с использованием первого буфера MVP истории. 13. The method of claim 1, wherein the second CTU row is immediately below the first CTU row, the method further comprising initializing or modifying the second history MVP buffer using the first history MVP buffer. 14. Способ по п.1, дополнительно содержащий этапы, на которых:14. The method of claim 1, further comprising the steps of: декодируют единицы кодирования (CU) единиц дерева кодирования (CTU) первой строки CTU с использованием первого буфера MVP истории; иdecoding the coding tree units (CUs) of the coding tree units (CTUs) of the first row of the CTUs using the first history MVP buffer; And декодируют единицы кодирования (CU) единиц дерева кодирования (CTU) второй строки CTU с использованием второго буфера MVP истории. decoding the coding tree units (CUs) of the coding tree units (CTUs) of the second row of CTUs using the second history buffer MVP. 15. Способ по п.1, дополнительно содержащий этапы, на которых:15. The method of claim 1, further comprising the steps of: кодируют единицы кодирования (CU) единиц дерева кодирования (CTU) первой строки CTU с использованием первого буфера MVP истории; иencoding coding tree units (CUs) of coding tree units (CTUs) of the first row of CTUs using the first history buffer MVP; And кодируют единицы кодирования (CU) единиц дерева кодирования (CTU) второй строки CTU с использованием второго буфера MVP истории. encoding coding tree units (CUs) of coding tree units (CTUs) of the second row of CTUs using the second history buffer MVP. 16. Способ по п.1, дополнительно содержащий этапы, на которых: 16. The method of claim 1, further comprising the steps of: кодируют первую информацию движения единиц кодирования (CU) единиц дерева кодирования (CTU) первой строки CTU с использованием первого буфера MVP истории, причем кодирование первой информации движения содержит кодирование первой информации движения с использованием режима расширенного предсказания вектора движения (AMVP), режима слияния или аффинного режима; иencoding first motion information of coding tree units (CUs) of coding tree units (CTUs) of the first CTU row using the first history MVP buffer, the encoding of the first motion information comprising encoding the first motion information using an advanced motion vector prediction (AMVP) mode, a merge mode, or an affine mode; And кодируют вторую информацию движения единиц кодирования (CU) единиц дерева кодирования (CTU) второй строки CTU с использованием второго буфера MVP истории, причем кодирование второй информации движения содержит кодирование второй информации движения с использованием режима AMVP, режима слияния или аффинного режима.encoding second motion information of coding tree units (CUs) of coding tree units (CTUs) of the second row of CTUs using a second history MVP buffer, the encoding of the second motion information comprising encoding the second motion information using an AMVP mode, a merge mode, or an affine mode. 17. Способ по п.1, дополнительно содержащий этапы, на которых:17. The method of claim 1, further comprising the steps of: добавляют один или более векторов движения к первым одному или более векторам движения первой однонаправленной информации движения в первом буфере MVP истории для преобразования первой однонаправленной информации движения в первую двунаправленную информацию движения, иadding one or more motion vectors to the first one or more motion vectors of the first unidirectional motion information in the first history buffer MVP to convert the first unidirectional motion information to the first bidirectional motion information, and добавляют один или более векторов движения ко вторым одному или более векторам движения второй однонаправленной информации движения во втором буфере MVP истории для преобразования второй однонаправленной информации движения во вторую двунаправленную информацию движения.adding one or more motion vectors to the second one or more motion vectors of the second unidirectional motion information in the second history buffer MVP to convert the second unidirectional motion information to the second bidirectional motion information. 18. Способ по п.1, в котором18. The method according to claim 1, in which при упомянутом сохранении информации движения для первой строки CTU сохраняют только те векторы движения, которые отличаются от других векторов движения в первом буфере MVP истории на пороговое значение, в первом буфере MVP истории, иin said storing the motion information for the first row, the CTUs store only those motion vectors that differ from other motion vectors in the first history MVP buffer by a threshold value, in the first history MVP buffer, and при упомянутом сохранении информации движения для второй строки CTU сохраняют только те векторы движения, которые отличаются от других векторов движения во втором буфере MVP истории на пороговое значение, во втором буфере MVP истории. in said storing the motion information for the second row, the CTUs only store those motion vectors that differ from other motion vectors in the second history MVP buffer by a threshold value, in the second history MVP buffer. 19. Способ по п.1, в котором19. The method according to claim 1, in which при упомянутом сохранении информации движения для первой строки CTU сохраняют данные, указывающие, ассоциированы ли векторы движения информации движения для первой строки CTU с кодированными в режиме слияния единицами кодирования (CU) или AMVP-кодированными CU, иin said storing the motion information for the first row, the CTUs store data indicating whether motion vectors of the motion information for the first row of the CTU are associated with merge-coded coding units (CUs) or AMVP-coded CUs, and при упомянутом сохранении информации движения для второй строки CTU сохраняют данные, указывающие, ассоциированы ли векторы движения информации движения для второй строки CTU с кодированными в режиме слияния CU или AMVP-кодированными CU. in said storing the motion information for the second row, the CTUs store data indicating whether the motion vectors of the motion information for the second row of the CTUs are associated with merge-coded CUs or AMVP-coded CUs. 20. Способ по п.1, в котором первая строка CTU имеет длину, меньшую полной ширины изображения. 20. The method of claim 1, wherein the first line of the CTU has a length less than the full width of the image. 21. Способ по п.1, в котором при упомянутом сохранении информации движения для первой строки CTU информацию движения сохраняют для количества CU в первой строке CTU, которое меньше общего количества CU в первой строке CTU.21. The method of claim 1, wherein said storing motion information for the first CTU row stores motion information for a number of CUs in the first CTU row that is less than the total number of CUs in the first CTU row. 22. Устройство для кодирования данных видео, содержащее:22. Device for encoding video data, containing: память, приспособленную хранить данные видео; иa memory adapted to store video data; And один или более модулей обработки, реализованных в схемах и выполненных с возможностью:one or more processing modules implemented in circuits and configured to: кодировать информацию движения для первой строки единиц дерева кодирования (CTU) изображения, причем информация движения для первой строки CTU включает в себя первые один или более векторов движения для первой строки CTU;encode motion information for a first row of coding tree units (CTUs) of the picture, wherein the motion information for the first CTU row includes first one or more motion vectors for the first CTU row; формировать первые один или более блоков предсказания для первых одной или более единиц кодирования (CU) первой строки CTU с использованием первых опорных блоков, идентифицируемых информацией движения для первой строки CTU;generate first one or more prediction blocks for the first one or more coding units (CUs) of the first CTU row using the first reference blocks identified by the motion information for the first CTU row; кодировать первые один или более остаточных блоков для первых одной или более CU, причем первые один или более остаточных блоков представляют соответственные разности между первыми одним или более блоками предсказания и первыми одной или более CU;encode first one or more residual blocks for the first one or more CUs, wherein the first one or more residual blocks represent respective differences between the first one or more prediction blocks and the first one or more CUs; сохранять информацию движения для первой строки CTU упомянутого изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти, причем информация движения для первой строки CTU включает в себя первые один или более векторов движения для первой строки CTU для использования в качестве первых предикторов векторов движения, чтобы предсказывать первые один или более других векторов движения упомянутого изображения; store motion information for the first row of CTUs of said image in a first history-based motion vector predictor (history MVP) buffer in memory, wherein the motion information for the first row of CTUs includes first one or more motion vectors for the first row of CTUs for use as first motion vector predictors to predict the first one or more other motion vectors of said image; сбрасывать второй буфер MVP истории в памяти;flush the second history MVP buffer in memory; кодировать информацию движения для второй строки CTU упомянутого изображения, причем информация движения для второй строки CTU включает в себя вторые один или более векторов движения для второй строки CTU;encode motion information for a second CTU row of said picture, wherein the motion information for the second CTU row includes second one or more motion vectors for the second CTU row; формировать вторые один или более блоков предсказания для вторых одной или более CU второй строки CTU с использованием вторых опорных блоков, идентифицируемых информацией движения для второй строки CTU;generate second one or more prediction blocks for the second one or more CUs of the second CTU row using second reference blocks identified by traffic information for the second CTU row; кодировать вторые один или более остаточных блоков для вторых одной или более CU, причем вторые один или более остаточных блоков представляют соответственные разности между вторыми одним или более блоками предсказания и вторыми одной или более CU; иencode second one or more residual blocks for the second one or more CUs, wherein the second one or more residual blocks represent respective differences between the second one or more prediction blocks and the second one or more CUs; And после сброса второго буфера MVP истории, сохранять информацию движения для второй строки CTU упомянутого изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU, при этом информация движения для второй строки CTU включает в себя вторые один или более векторов движения для второй строки CTU для использования в качестве вторых предикторов векторов движения, чтобы предсказывать вторые один или более других векторов движения упомянутого изображения.after resetting the second history MVP buffer, store the motion information for the second CTU row of said image in the second history MVP buffer, wherein the second CTU row is different from the first CTU row, wherein the motion information for the second CTU row includes one or more second motion vectors for the second CTU row for use as second motion vector predictors to predict the second one or more other motion vectors of the said image. 23. Устройство по п.22, при этом второй буфер MVP истории отличается от первого буфера MVP истории, причем один или более модулей обработки исполняют первый подпроцесс процесса кодирования видео, чтобы сохранять информацию движения для первой строки CTU, и один или более модулей обработки исполняют второй подпроцесс процесса кодирования видео, чтобы сохранять информацию движения для второй строки CTU, при этом первый подпроцесс отличается от второго подпроцесса.23. The apparatus of claim 22, wherein the second history MVP buffer differs from the first history MVP buffer, wherein one or more processing modules execute the first video encoding process sub-process to store motion information for the first CTU row, and one or more processing modules execute the second video encoding process sub-process to store motion information for the second CTU row, wherein the first sub-process is different from the second sub-process. 24. Устройство по п.22, при этом второй буфер MVP истории отличается от первого буфера MVP истории, причем чтобы сбросить второй буфер MVP истории один или более модулей обработки выполнены с возможностью сбрасывать второй буфер MVP истории в ответ на обработку начала второй строки CTU во время параллельной обработки волнового фронта.24. The apparatus of claim 22, wherein the second history MVP buffer is different from the first history MVP buffer, wherein in order to flush the second history MVP buffer, one or more processing modules are configured to flush the second history MVP buffer in response to processing the start of the second CTU row during parallel wavefront processing. 25. Устройство по п.22, в котором25. The device according to claim 22, in which один или более модулей обработки выполнены с возможностью сохранять только информацию движения, уникальную в пределах первого буфера MVP истории, в первом буфере MVP истории, иone or more processing modules are configured to store only motion information unique within the first history MVP buffer in the first history MVP buffer, and один или более модулей обработки выполнены с возможностью сохранять только информацию движения, уникальную в пределах второго буфера MVP истории, во втором буфере MVP истории. the one or more processing modules are configured to store only motion information unique within the second history MVP buffer in the second history MVP buffer. 26. Устройство по п.22, в котором один или более модулей обработки дополнительно выполнены с возможностью:26. The apparatus of claim 22, wherein the one or more processing modules are further configured to: когда первый буфер MVP истории становится заполненным, удалять один или более самых ранних введенных векторов движения из первого буфера MVP истории в соответствии с правилом “первым пришел - первым обслужен” (FIFO); иwhen the first history MVP buffer becomes full, delete one or more of the earliest input motion vectors from the first history MVP buffer in accordance with a first-in-first-out (FIFO) rule; And когда второй буфер MVP истории становится заполненным, удалять один или более самых ранних введенных векторов движения из второго буфера MVP истории в соответствии с правилом FIFO.when the second history MVP buffer becomes full, delete one or more of the earliest inputted motion vectors from the second history MVP buffer in accordance with the FIFO rule. 27. Устройство по п.22, в котором27. The device according to claim 22, in which один или более модулей обработки выполнены с возможностью сохранять информацию движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из первого множества буферов MVP истории, включающего в себя первый буфер MVP истории; иone or more processing modules are configured to store motion information for each of a plurality of different types of motion patterns in respective different history MVP buffers of a first plurality of history MVP buffers including a first history MVP buffer; And один или более модулей обработки выполнены с возможностью сохранять информацию движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из второго множества буферов MVP истории, включающего в себя второй буфер MVP истории. the one or more processing modules are configured to store motion information for each of the plurality of different types of motion patterns in respective different history MVP buffers from a second plurality of history MVP buffers including a second history MVP buffer. 28. Устройство по п.27, при этом упомянутое множество разных типов моделей движения содержит одно или более из аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, подблочного предсказания вектора движения (MVP) и временного предсказания движения. 28. The apparatus of claim 27, wherein said plurality of different types of motion models comprises one or more of an affine motion model, intrablock copy mode motion information, local illumination compensation motion information, subblock motion vector prediction (MVP), and temporal motion prediction. 29. Устройство по п.22, в котором один или более модулей обработки дополнительно выполнены с возможностью генерировать синтетический MVP из двух или более MVP в одном или более буферах MVP истории. 29. The apparatus of claim 22, wherein the one or more processing modules are further configured to generate a synthetic MVP from two or more MVPs in one or more history MVP buffers. 30. Устройство п.29, при этом два или более MVP имеют разные типы информации движения, содержащие две или более из кодированной информации движения, информации движения аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, информации движения подблочного MVP, информации движения временного предиктора движения, информации синтетического вектора движения, основывающейся на информации движения MVP, информации движения пространственного MVP и информации движения временного MVP. 30. The apparatus of claim 29, wherein the two or more MVPs have different types of motion information comprising two or more of encoded motion information, affine motion model motion information, intra-block copy mode motion information, local lighting compensation motion information, sub - block MVP motion information, temporal motion predictor motion information, synthetic motion vector information based on MVP motion information, spatial MVP motion information, and temporal MVP motion information. 31. Устройство по п.22, дополнительно содержащее устройство отображения, выполненное с возможностью отображения данных видео.31. The apparatus of claim 22, further comprising a display device configured to display video data. 32. Устройство по п.22, дополнительно содержащее камеру, выполненную с возможностью захвата данных видео.32. The apparatus of claim 22, further comprising a camera capable of capturing video data. 33. Устройство по п.22, причем устройство содержит одно или более из камеры, компьютера, мобильного устройства, устройства вещательного приемника или телевизионной приставки.33. The apparatus of claim 22, wherein the apparatus comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box. 34. Устройство п.22, причем устройство содержит по меньшей мере одно из:34. The device of claim 22, wherein the device comprises at least one of: интегральной схемы; integrated circuit; микропроцессора иmicroprocessor and устройства беспроводной связи.wireless communication devices. 35. Устройство по п.22, при этом первая строка CTU имеет длину, меньшую полной ширины изображения. 35. The apparatus of claim 22, wherein the first line of the CTU has a length less than the full width of the image. 36. Устройство по п.22, при этом чтобы сохранять информацию движения для первой строки CTU один или более модулей обработки выполнены с возможностью сохранять в памяти информацию движения для количества CU в первой строке CTU, которое меньше общего количества CU в первой строке CTU.36. The apparatus of claim 22, wherein in order to store motion information for the first CTU row, one or more processing units are configured to store motion information for a number of CUs in the first CTU row that is less than the total number of CUs in the first CTU row. 37. Машиночитаемый носитель данных, в котором сохранены инструкции, которые при их исполнении предписывают процессору:37. A computer-readable storage medium in which instructions are stored that, when executed, instruct the processor: кодировать информацию движения для первой строки единиц дерева кодирования (CTU) изображения, причем информация движения для первой строки CTU включает в себя первые один или более векторов движения для первой строки CTU;encode motion information for a first row of coding tree units (CTUs) of the picture, wherein the motion information for the first CTU row includes first one or more motion vectors for the first CTU row; формировать первые один или более блоков предсказания для первых одной или более единиц кодирования (CU) первой строки CTU с использованием первых опорных блоков, идентифицируемых информацией движения для первой строки CTU;generate first one or more prediction blocks for the first one or more coding units (CUs) of the first CTU row using the first reference blocks identified by the motion information for the first CTU row; кодировать первые один или более остаточных блоков для первых одной или более CU, причем первые один или более остаточных блоков представляют соответственные разности между первыми одним или более блоками предсказания и первыми одной или более CU;encode first one or more residual blocks for the first one or more CUs, wherein the first one or more residual blocks represent respective differences between the first one or more prediction blocks and the first one or more CUs; сохранять информацию движения для первой строки CTU упомянутого изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти, причем информация движения для первой строки CTU включает в себя первые один или более векторов движения для первой строки CTU для использования в качестве первых предикторов векторов движения, чтобы предсказывать первые один или более других векторов движения упомянутого изображения; store motion information for the first row of CTUs of said image in a first history-based motion vector predictor (history MVP) buffer in memory, wherein the motion information for the first row of CTUs includes first one or more motion vectors for the first row of CTUs for use as first motion vector predictors to predict the first one or more other motion vectors of said image; сбрасывать второй буфер MVP истории в памяти;flush the second history MVP buffer in memory; кодировать информацию движения для второй строки CTU упомянутого изображения, причем информация движения для второй строки CTU включает в себя вторые один или более векторов движения для второй строки CTU;encode motion information for a second CTU row of said picture, wherein the motion information for the second CTU row includes second one or more motion vectors for the second CTU row; формировать вторые один или более блоков предсказания для вторых одной или более CU второй строки CTU с использованием вторых опорных блоков, идентифицируемых информацией движения для второй строки CTU;generate second one or more prediction blocks for the second one or more CUs of the second CTU row using second reference blocks identified by traffic information for the second CTU row; кодировать вторые один или более остаточных блоков для вторых одной или более CU, причем вторые один или более остаточных блоков представляют соответственные разности между вторыми одним или более блоками предсказания и вторыми одной или более CU; иencode second one or more residual blocks for the second one or more CUs, wherein the second one or more residual blocks represent respective differences between the second one or more prediction blocks and the second one or more CUs; And после сброса второго буфера MVP истории, сохранять информацию движения для второй строки CTU упомянутого изображения во втором буфере MVP истории, причем вторая строка CTU отличается от первой строки CTU, при этом информация движения для второй строки CTU включает в себя вторые один или более векторов движения для второй строки CTU для использования в качестве вторых предикторов векторов движения.after flushing the second history MVP buffer, store motion information for the second CTU line of the said image in the second history MVP buffer, wherein the second CTU line differs from the first CTU line, while the motion information for the second CTU line includes one or more second motion vectors for the second CTU line for use as second motion vector predictors. 38. Машиночитаемый носитель данных по п.37, при этом второй буфер MVP истории отличается от первого буфера MVP истории, причем инструкции, которые предписывают процессору сохранять информацию движения для первой строки CTU, содержат инструкции, которые предписывают процессору исполнять первый подпроцесс процесса кодирования видео, чтобы сохранять информацию движения для первой строки CTU, и при этом инструкции, которые предписывают процессору сохранять информацию движения для второй строки CTU, содержат инструкции, которые предписывают процессору исполнять второй подпроцесс процесса кодирования видео, чтобы сохранять информацию движения для второй строки CTU, причем первый подпроцесс отличается от второго подпроцесса.38. The computer-readable storage medium of claim 37, wherein the second history MVP buffer is different from the first history MVP buffer, wherein the instructions that cause the processor to store motion information for the first CTU row comprise instructions that cause the processor to execute a first video encoding process subprocess to store motion information for the first CTU row, and wherein the instructions that cause the processor to store motion information for the second CTU row contain instructions that cause the processor to execute a second video encoding process subprocess to store information movement for the second CTU row, with the first subprocess different from the second subprocess. 39. Машиночитаемый носитель данных по п.37, причем второй буфер MVP истории отличается от первого буфера MVP истории, при этом инструкции, которые предписывают процессору сбрасывать второй буфер MVP истории, содержат инструкции, которые предписывают процессору сбрасывать второй буфер MVP истории в ответ на обработку начала второй строки CTU во время параллельной обработки волнового фронта.39. The computer-readable storage medium of claim 37, wherein the second history MVP buffer is different from the first history MVP buffer, wherein the instructions that cause the processor to flush the second history MVP buffer comprise instructions that cause the processor to flush the second history MVP buffer in response to processing the beginning of the second CTU row during parallel wavefront processing. 40. Машиночитаемый носитель данных по п.37, при этом40. A computer-readable storage medium according to claim 37, wherein инструкции, которые предписывают процессору сохранять информацию движения для первой строки CTU, содержат инструкции, которые предписывают процессору сохранять только информацию движения, уникальную в пределах первого буфера MVP истории, в первом буфере MVP истории, иinstructions that cause the processor to store motion information for the first row of the CTU contain instructions that cause the processor to store only motion information unique within the first history MVP buffer in the first history MVP buffer, and инструкции, которые предписывают процессору сохранять информацию движения для второй строки CTU, содержат инструкции, которые предписывают процессору сохранять только информацию движения, уникальную в пределах второго буфера MVP истории, во втором буфере MVP истории. the instructions that cause the processor to store motion information for the second row of the CTU contain instructions that cause the processor to store only the motion information unique within the second history MVP buffer in the second history MVP buffer. 41. Машиночитаемый носитель данных по п.37, дополнительно содержащий инструкции, которые предписывают процессору:41. The computer-readable storage medium of claim 37, further comprising instructions that cause the processor to: когда первый буфер MVP истории становится заполненным, удалять один или более самых ранних введенных векторов движения из первого буфера MVP истории в соответствии с правилом “первым пришел - первым обслужен” (FIFO); иwhen the first history MVP buffer becomes full, delete one or more of the earliest input motion vectors from the first history MVP buffer in accordance with a first-in-first-out (FIFO) rule; And когда второй буфер MVP истории становится заполненным, удалять один или более самых ранних введенных векторов движения из второго буфера MVP истории в соответствии с правилом FIFO.when the second history MVP buffer becomes full, delete one or more of the earliest inputted motion vectors from the second history MVP buffer in accordance with the FIFO rule. 42. Машиночитаемый носитель данных по п.37, в котором42. The computer-readable storage medium of claim 37, wherein инструкции, которые предписывают процессору сохранять информацию движения для первой строки CTU, содержат инструкции, которые предписывают процессору сохранять информацию движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из первого множества буферов MVP истории, включающего в себя первый буфер MVP истории; иthe instructions that cause the processor to store motion information for the first row of the CTU comprise instructions that cause the processor to store motion information for each of a plurality of different types of motion patterns in respective different history MVP buffers of the first plurality of history MVP buffers including the first history MVP buffer; And инструкции, которые предписывают процессору сохранять информацию движения для второй строки CTU, содержат инструкции, которые предписывают процессору сохранять информацию движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из второго множества буферов MVP истории, включающего в себя второй буфер MVP истории. instructions that cause the processor to store motion information for the second row of the CTU comprise instructions that cause the processor to store motion information for each of a plurality of different types of motion patterns in respective different history MVP buffers of a second plurality of history MVP buffers including a second history MVP buffer. 43. Машиночитаемый носитель данных по п.42, при этом упомянутое множество разных типов моделей движения содержит одно или более из аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, подблочного предсказания вектора движения (MVP) и временного предсказания движения.43. The computer-readable storage medium of claim 42, wherein said plurality of different types of motion models comprises one or more of an affine motion model, intra-block copy mode motion information, local illumination compensation motion information, sub-block motion vector prediction (MVP), and temporal motion prediction. 44. Машиночитаемый носитель данных по п.37, дополнительно содержащий инструкции, которые предписывают процессору генерировать синтетический MVP из двух или более MVP в одном или более буферах MVP истории. 44. The computer-readable storage medium of claim 37, further comprising instructions that cause the processor to generate a synthetic MVP from two or more MVPs in one or more history MVP buffers. 45. Машиночитаемый носитель данных п.44, при этом упомянутые два или более MVP имеют разные типы информации движения, содержащие две или более из кодированной информации движения, информации движения аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, информации движения подблочного MVP, информации движения временного предиктора движения, информации синтетического вектора движения, основывающейся на информации движения MVP, информации движения пространственного MVP и информации движения временного MVP. 45. The machine-readable storage medium of claim 44, wherein said two or more MVPs have different types of motion information comprising two or more of encoded motion information, affine motion model motion information, intra-block copy mode motion information, local lighting compensation motion information, sub - block MVP motion information, temporal motion predictor motion information, synthetic motion vector information based on MVP motion information, spatial MVP motion information, and temporal MVP motion information. 46. Машиночитаемый носитель данных по п.37, при этом первая строка CTU имеет длину, меньшую полной ширины изображения. 46. The computer-readable storage medium of claim 37, wherein the first line of the CTU has a length less than the full width of the image. 47. Машиночитаемый носитель данных по п.37, в котором инструкции, которые предписывают процессору сохранять информацию движения для первой строки CTU, содержат инструкции, которые предписывают процессору сохранять информацию движения для количества CU в первой строке CTU, которое меньше общего количества CU в первой строке CTU.47. The computer-readable storage medium of claim 37, wherein the instructions that cause the processor to store motion information for the first CTU row comprise instructions that cause the processor to store motion information for a number of CUs in the first CTU row that is less than the total number of CUs in the first CTU row. 48. Устройство для кодирования данных видео, содержащее:48. A device for encoding video data, comprising: память, приспособленную хранить данные видео; a memory adapted to store video data; средство для кодирования информации движения для первой строки единиц дерева кодирования (CTU) изображения, причем информация движения для первой строки CTU включает в себя первые один или более векторов движения для первой строки CTU;means for encoding motion information for a first row of coding tree units (CTUs) of the picture, wherein the motion information for the first CTU row includes first one or more motion vectors for the first CTU row; средство для формирования первых одного или более блоков предсказания для первых одной или более единиц кодирования (CU) первой строки CTU с использованием первых опорных блоков, идентифицируемых информацией движения для первой строки CTU;means for generating the first one or more prediction blocks for the first one or more coding units (CUs) of the first CTU row using the first reference blocks identified by the motion information for the first CTU row; средство для кодирования первых одного или более остаточных блоков для первых одной или более CU, причем первые один или более остаточных блоков представляют соответственные разности между первыми одним или более блоками предсказания и первыми одной или более CU;means for encoding the first one or more residual blocks for the first one or more CUs, the first one or more residual blocks representing respective differences between the first one or more prediction blocks and the first one or more CUs; средство для сохранения информации движения для первой строки CTU упомянутого изображения в первом буфере предиктора векторов движения, основывающегося на истории (MVP истории), в памяти, включая средство для сохранения первых одного или более векторов движения для первой строки CTU в первом буфере MVP истории для использования в качестве первых предикторов векторов движения, чтобы предсказывать первые один или более других векторов движения упомянутого изображения; means for storing motion information for the first CTU row of said image in a first history-based motion vector predictor (history MVP) buffer in memory, including means for storing the first one or more motion vectors for the first CTU row in the first history MVP buffer for use as first motion vector predictors to predict the first one or more other motion vectors of said image; средство для сброса второго буфера MVP истории в памяти;means for flushing a second history MVP buffer in memory; средство для кодирования информации движения для второй строки CTU упомянутого изображения, причем информация движения для второй строки CTU включает в себя вторые один или более векторов движения для второй строки CTU;means for encoding motion information for a second CTU row of said picture, the motion information for the second CTU row including second one or more motion vectors for the second CTU row; средство для формирования вторых одного или более блоков предсказания для вторых одной или более CU второй строки CTU с использованием вторых опорных блоков, идентифицируемых информацией движения для второй строки CTU;means for generating a second one or more prediction blocks for the second one or more CUs of the second CTU row using second reference blocks identified by motion information for the second CTU row; средство для кодирования вторых одного или более остаточных блоков для вторых одной или более CU, причем вторые один или более остаточных блоков представляют соответственные разности между вторыми одним или более блоками предсказания и вторыми одной или более CU; иmeans for encoding second one or more residual blocks for the second one or more CUs, wherein the second one or more residual blocks represent respective differences between the second one or more prediction blocks and the second one or more CUs; And средство для сохранения информации движения для второй строки CTU упомянутого изображения во втором буфере MVP истории после сброса второго буфера MVP истории, причем вторая строка CTU отличается от первой строки CTU, включая средство для сохранения вторых одного или более векторов движения для второй строки CTU во втором буфере MVP истории для использования в качестве вторых предикторов векторов движения, чтобы предсказывать вторые один или более других векторов движения упомянутого изображения.means for storing motion information for the second CTU row of the said image in the second history MVP buffer after resetting the second history MVP buffer, wherein the second CTU row differs from the first CTU row, including means for storing the second one or more motion vectors for the second CTU row in the second history MVP buffer for use as second motion vector predictors to predict the second one or more other motion vectors of the said image. 49. Устройство по п.48, при этом второй буфер MVP истории отличается от первого буфера MVP истории, причем средство для сохранения информации движения для первой строки CTU содержит первый подпроцесс процесса кодирования видео, и средство для сохранения информации движения для второй строки CTU содержит второй подпроцесс процесса кодирования видео.49. The apparatus of claim 48, wherein the second history MVP buffer differs from the first history MVP buffer, wherein the means for storing motion information for the first CTU line comprises a first video encoding process sub-process, and the means for storing motion information for the second CTU line comprises a second video encoding process sub-process. 50. Устройство по п.48, при этом второй буфер MVP истории отличается от первого буфера MVP истории, причем средство для сброса второго буфера MVP истории содержит средство для сброса второго буфера MVP истории в ответ на обработку начала второй строки CTU во время параллельной обработки волнового фронта.50. The apparatus of claim 48, wherein the second history MVP buffer is different from the first history MVP buffer, wherein means for flushing the second history MVP buffer comprises means for flushing the second history MVP buffer in response to processing the beginning of the second CTU row during parallel wavefront processing. 51. Устройство по п.48, в котором51. The device according to claim 48, in which средство для сохранения информации движения для первой строки CTU содержит средство для сохранения только информации движения, уникальной в пределах первого буфера MVP истории, в первом буфере MVP истории, иmeans for storing motion information for the first row of the CTU comprises means for storing only motion information unique within the first history MVP buffer in the first history MVP buffer, and средство для сохранения информации движения для второй строки CTU содержит средство для сохранения только информации движения, уникальной в пределах второго буфера MVP истории, во втором буфере MVP истории. means for storing motion information for the second row of the CTU comprises means for storing only motion information unique within the second history MVP buffer in the second history MVP buffer. 52. Устройство по п.48, дополнительно содержащее:52. The device according to claim 48, further comprising: средство для удаления, когда первый буфер MVP истории становится заполненным, одного или более самых ранних введенных векторов движения из первого буфера MVP истории в соответствии с правилом “первым пришел - первым обслужен” (FIFO); иmeans for deleting, when the first history MVP buffer becomes full, one or more of the earliest inputted motion vectors from the first history MVP buffer in accordance with a first-in-first-out (FIFO) rule; And средство для удаления, когда второй буфер MVP истории становится заполненным, одного или более самых ранних введенных векторов движения из второго буфера MVP истории в соответствии с правилом FIFO.means for deleting, when the second history MVP buffer becomes full, one or more of the earliest inputted motion vectors from the second history MVP buffer in accordance with a FIFO rule. 53. Устройство по п.48, в котором53. The device according to claim 48, in which средство для сохранения информации движения для первой строки CTU содержит средство для сохранения информации движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории из первого множества буферов MVP истории, включающего в себя первый буфер MVP истории; иmeans for storing motion information for the first row of the CTU comprises means for storing motion information for each of a plurality of different types of motion patterns in respective different history MVP buffers of the first plurality of history MVP buffers including the first history MVP buffer; And средство для сохранения информации движения для второй строки CTU содержит средство для сохранения информации движения для каждого из множества разных типов моделей движения в соответствующих разных буферах MVP истории второго множества буферов MVP истории, включающего в себя второй буфер MVP истории. means for storing motion information for the second row of the CTU comprises means for storing motion information for each of the plurality of different types of motion patterns in respective different history MVP buffers of the second plurality of history MVP buffers including the second history MVP buffer. 54. Устройство по п.53, при этом упомянутое множество разных типов моделей движения содержат одно или более из аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, подблочного предсказания вектора движения (MVP) и временного предсказания движения. 54. The apparatus of claim 53, wherein said plurality of different types of motion models comprise one or more of an affine motion model, intrablock copy mode motion information, local illumination compensation motion information, subblock motion vector prediction (MVP), and temporal motion prediction. 55. Устройство по п.54, дополнительно содержащее средство для генерации синтетического MVP из двух или более MVP в одном или более буферах MVP истории. 55. The apparatus of claim 54, further comprising means for generating a synthetic MVP from two or more MVPs in one or more history MVP buffers. 56. Устройство по п.55, при этом упомянутые два или более MVP имеют разные типы информации движения, содержащие две или более из кодированной информации движения, информации движения аффинной модели движения, информации движения режима внутриблочного копирования, информации движения компенсации локального освещения, информации движения подблочного MVP, информации движения временного предиктора движения, информации синтетического вектора движения, основывающейся на информации движения MVP, информации движения пространственного MVP и информации движения временного MVP.56. The apparatus of claim 55, wherein said two or more MVPs have different types of motion information comprising two or more of encoded motion information, affine motion model motion information, intra-block copy mode motion information, local lighting compensation motion information, sub - block MVP motion information, temporal motion predictor motion information, synthetic motion vector information based on motion MVP information, spatial MVP motion information, and temporal MVP motion information. 57. Устройство по п.48, при этом первая строка CTU имеет длину, меньшую полной ширины изображения. 57. The apparatus of claim 48, wherein the first line of the CTU has a length less than the full width of the image. 58. Устройство по п.48, в котором средство для сохранения информации движения для первой строки CTU содержит средство для сохранения информации движения для количества CU в первой строке CTU, которое меньше общего количества CU в первой строке CTU.58. The apparatus of claim 48, wherein the means for storing motion information for the first CTU row comprises means for storing motion information for a number of CUs in the first CTU row that is less than the total number of CUs in the first CTU row.
RU2020143566A 2018-07-10 2019-07-10 Set of history-based non-adjacent mvp for video encoding wave-front processing RU2800009C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US62/696,281 2018-07-10
US62/713,944 2018-08-02
US16/506,720 2019-07-09

Publications (2)

Publication Number Publication Date
RU2020143566A RU2020143566A (en) 2022-08-10
RU2800009C2 true RU2800009C2 (en) 2023-07-14

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070211801A1 (en) * 2006-03-09 2007-09-13 Kei Matsubayashi Frame rate conversion system, method of converting frame rate, transmitter, and receiver
US20130170549A1 (en) * 2011-12-28 2013-07-04 Microsoft Corporation Merge mode for motion information prediction
US20130336405A1 (en) * 2012-06-15 2013-12-19 Qualcomm Incorporated Disparity vector selection in video coding
RU2573744C2 (en) * 2011-07-20 2016-01-27 Квэлкомм Инкорпорейтед Buffering prediction data in video coding
WO2017197126A1 (en) * 2016-05-13 2017-11-16 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070211801A1 (en) * 2006-03-09 2007-09-13 Kei Matsubayashi Frame rate conversion system, method of converting frame rate, transmitter, and receiver
RU2573744C2 (en) * 2011-07-20 2016-01-27 Квэлкомм Инкорпорейтед Buffering prediction data in video coding
US20130170549A1 (en) * 2011-12-28 2013-07-04 Microsoft Corporation Merge mode for motion information prediction
US20130336405A1 (en) * 2012-06-15 2013-12-19 Qualcomm Incorporated Disparity vector selection in video coding
WO2017197126A1 (en) * 2016-05-13 2017-11-16 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Fan Wang et al., OpenCL based high-quality HEVC motion estimation on GPU, 2014 IEEE International Conference on Image Processing, 29.01.2015, 5 с.. *
Li Zhang et al., CE4-related: History-based Motion Vector Prediction, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 11th Meeting: Ljubljana, SI, 10-18 July 2018, [Найдено 01.02.2023] в Интернет URL https://phenix.int-evry.fr/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0104-v1.zip, 03.07.2018, 5 c.. *
Stefan Radicke et al., A Multi-Threaded Full-feature HEVC Encoder Based on Wavefront Parallel Processing, In Proceedings of the 11th International Conference on Signal Processing and Multimedia Applications (SIGMAP-2014), c. 90-98, 28.08.2014, 9 c.. *

Similar Documents

Publication Publication Date Title
JP7508660B2 (en) Multiple History-Based Non-Adjacent MVP for Wavefront Processing in Video Coding
US11212550B2 (en) History-based motion vector prediction for affine mode
US11025903B2 (en) Coding video data using derived chroma mode
JP7570355B2 (en) Merge mode coding for video coding
US10778977B2 (en) Triangle motion information for video coding
KR20220162701A (en) General Constraint Information Syntax in Video Coding
TW202107894A (en) Simplification of history-based motion vector prediction
WO2020072743A1 (en) History-based motion vector prediction for inter prediction coding
US11064192B2 (en) Simplification of spatial-temporal motion vector prediction
US20200036980A1 (en) Rounding of motion vectors for adaptive motion vector difference resolution and increased motion vector storage precision in video coding
US11051035B2 (en) Processing of illegal motion vectors for intra block copy mode in video coding
TW202245477A (en) Template matching refinement in inter-prediction modes
CA3150772A1 (en) Harmonized early termination in bdof and dmvr in video coding
RU2800009C2 (en) Set of history-based non-adjacent mvp for video encoding wave-front processing
RU2825319C2 (en) Block-differential pulse-code modulation in field of coefficients during video encoding
US20200267415A1 (en) Chroma deblocking filter for intra block copy mode for video coding