RU2783349C2 - Video processing method, video processing device, coder, decoder, carrier and computer program - Google Patents

Video processing method, video processing device, coder, decoder, carrier and computer program Download PDF

Info

Publication number
RU2783349C2
RU2783349C2 RU2021105692A RU2021105692A RU2783349C2 RU 2783349 C2 RU2783349 C2 RU 2783349C2 RU 2021105692 A RU2021105692 A RU 2021105692A RU 2021105692 A RU2021105692 A RU 2021105692A RU 2783349 C2 RU2783349 C2 RU 2783349C2
Authority
RU
Russia
Prior art keywords
ctu
current
row
processing
hmvp
Prior art date
Application number
RU2021105692A
Other languages
Russian (ru)
Other versions
RU2021105692A (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 RU2021105692A publication Critical patent/RU2021105692A/en
Application granted granted Critical
Publication of RU2783349C2 publication Critical patent/RU2783349C2/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: method for processing of video is proposed, containing: initialization of a list of a history-based motion vector prediction (hereinafter – HMVP) of a list for a current row of a coding tree unit (hereinafter – CTU), when a current CTU is an initial CTU of the current CTU row; and processing of the current CTU row based on HMVP list.
EFFECT: increase in the efficiency of encoding/decoding.
23 cl, 12 dwg

Description

Область техники, к которой относится изобретениеThe field of technology to which the invention belongs

Варианты осуществления настоящей заявки (раскрытия) в целом относятся к области кодирования видео и, в частности, к способу обработки видео, устройству обработки видео, кодеру, декодеру, носителю и компьютерной программе.Embodiments of the present application (disclosure) generally relate to the field of video coding and, in particular, to a video processing method, a video processing device, an encoder, a decoder, a medium, and a computer program.

Уровень техникиState of the art

Кодирование видео (кодирование и декодирование видео) используется в широком спектре приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и диски Blu-ray, системы получения и редактирования видеоконтента и видеокамеры приложений безопасности.Video encoding (video encoding and decoding) is used in a wide range of digital video applications, such as digital television broadcast, video transmission over the Internet and mobile networks, real-time conversational applications such as video chat, video conferencing, DVD and Blu-ray Disc , video content acquisition and editing systems, and video camera security applications.

С момента разработки блочного гибридного подхода к кодированию видео в стандарте H.261 в 1990 году были разработаны новые технологии и инструменты кодирования видео, которые легли в основу новых стандартов кодирования видео. Дополнительные стандарты кодирования видео содержат MPEG-1 видео, MPEG-2 видео, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), ITU-T H.265/высокоэффективное кодирование видео (HEVC), ITU-T H.266/универсальное кодирование видео (VVC) и расширения, например, масштабируемость и/или трехмерные (3D) расширения этих стандартов. Поскольку генерирование и использование видео становится все более и более повсеместным, трафик видео является самой большой нагрузкой на сети связи и хранилище данных, соответственно, одной из задач большинства стандартов кодирования видео было достижение снижения битовой скорости по сравнению с его предшественником без снижения качества изображения. Даже новейшее высокоэффективное кодирование видео (HEVC) может сжимать видео примерно в два раза больше, чем AVC, без ущерба для качества, и есть необходимость в дополнительном сжатии видео по сравнению с HEVC.Since the development of the block hybrid approach to H.261 video coding in 1990, new video coding technologies and tools have been developed that form the basis of new video coding standards. Additional video coding standards include MPEG-1 video, MPEG-2 video, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10 Advanced Video Coding (AVC), ITU-T H.265/High Efficiency Video Coding (HEVC), ITU-T H.266/Versatile Video Coding (VVC), and extensions such as scalability and/or 3D extensions of these standards. As video generation and use become more and more ubiquitous, video traffic is the biggest load on communication networks and data storage, respectively, one of the goals of most video coding standards has been to achieve a reduction in bit rate compared to its predecessor without compromising image quality. Even the latest High Efficiency Video Coding (HEVC) can compress video about twice as much as AVC without sacrificing quality, and there is a need for more video compression than HEVC.

Раскрытие сущности изобретенияDisclosure of the essence of the invention

Варианты осуществления настоящего раскрытия предоставляют способ обработки видео и соответствующее устройство для повышения эффективности кодирования.Embodiments of the present disclosure provide a video processing method and corresponding apparatus for improving coding efficiency.

Решение вышеупомянутых и других технических задач представлено независимыми пунктами формулы изобретения. Дополнительные формы реализации описаны в зависимых пунктах формулы изобретения, описании и на чертежах.The solution of the above and other technical problems is presented by independent claims. Additional forms of implementation are described in the dependent claims, the description and the drawings.

Первый аспект настоящего раскрытия обеспечивает способ обработки видео, содержащий: инициализацию списка предсказания вектора движения (HMVP) на основании исторических данных для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и обработка текущей строки CTU на основании HMVP списка. Начальный CTU может также упоминаться как начальный CTU и является первым CTU из CTUs той же строки CTU, которая обрабатывается.A first aspect of the present disclosure provides a video processing method, comprising: initializing a motion vector prediction (HMVP) list based on historical data for a current coding tree unit (CTU) row when the current CTU is a starting CTU of the current CTU row; and processing the current CTU row based on the HMVP list. The initial CTU may also be referred to as the initial CTU and is the first CTU of the CTUs of the same CTU string being processed.

Очевидно, что HMVP список для текущей строки CTU в начале инициализируется для обработки текущей строки CTU, процесс текущей строки CTU не должен основываться на HMVP списке предшествующей строки CTU и, таким образом, может повысить эффективность кодирования и эффективность декодирования.Obviously, the HMVP list for the current CTU line is initially initialized to process the current CTU line, the process of the current CTU line should not be based on the HMVP list of the previous CTU line, and thus can improve encoding efficiency and decoding efficiency.

Со ссылкой на первый аспект, в первом возможном способе реализации первого аспекта количество кандидатов вектора движения в инициализированном HMVP списке равно нулю.With reference to the first aspect, in the first possible way of implementing the first aspect, the number of motion vector candidates in the initialized HMVP list is zero.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, во второй возможной реализации первого аспекта текущая строка CTU принадлежит области изображения, которая состоит из множества строк CTU, текущая строка CTU является любой из множества строк CTU, например, первая (например, верхняя) строка CTU, вторая строка CTU, … и последняя (например, нижняя) строка CTU области изображения ...With reference to the first aspect or any of the above implementations of the first aspect, in the second possible implementation of the first aspect, the current CTU line belongs to the image area, which consists of a plurality of CTU lines, the current CTU line is any of the plurality of CTU lines, for example, the first (for example, the top ) the CTU line, the second CTU line, ... and the last (e.g. bottom) CTU line of the image area ...

Со ссылкой на первый аспект или любую вышеупомянутую реализацию первого аспекта, в третьей возможной реализации первого аспекта, способ дополнительно содержит: инициализацию HMVP списка для каждой из множества строк CTU, за исключением текущей строки CTU, в котором HMVP списки для множества строк CTU идентичны или различны. Другими словами, варианты осуществления могут дополнительно инициализировать HMVP списки для всех других строк CTU области изображения, то есть, могут инициализировать HMVP списки для всех строк CTU области изображения.With reference to the first aspect or any of the above implementations of the first aspect, in a third possible implementation of the first aspect, the method further comprises: initializing an HMVP list for each of the plurality of CTU strings except for the current CTU string, in which the HMVP lists for the plurality of CTU strings are identical or different . In other words, embodiments may further initialize HMVP lists for all other image area CTU lines, ie, may initialize HMVP lists for all image area CTU lines.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в четвертой возможной реализации первого аспекта обработка текущей строки CTU на основании HMVP списка содержит: обработку текущего CTU текущей строки CTU; обновление инициализированного HMVP списка на основании обработанного текущего CTU; и обработку второго CTU текущей строки CTU на основании обновленного HMVP списка.With reference to the first aspect or any of the above implementations of the first aspect, in a fourth possible implementation of the first aspect, processing the current CTU row based on the HMVP list comprises: processing the current CTU of the current CTU row; updating the initialized HMVP list based on the processed current CTU; and processing the second CTU of the current CTU row based on the updated HMVP list.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в пятой возможной реализации первого аспекта HMVP список обновляется в соответствии с обработанным CTU текущей строки CTU. With reference to the first aspect or any of the above first aspect implementations, in the fifth possible implementation of the first HMVP aspect, the list is updated according to the processed CTU of the current CTU row.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в шестой возможной реализации первого аспекта HMVP список для текущей строки CTU инициализируется следующим образом: опустошение HMVP списка для текущей строки CTU.With reference to the first aspect or any of the above first aspect implementations, in a sixth possible implementation of the first HMVP aspect, the list for the current CTU row is initialized as follows: empty the HMVP list for the current CTU row.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в седьмой возможной реализации первого аспекта обработка текущей строки CTU на основании HMVP списка содержит: обработку текущей строки CTU на основании HMVP списка из второго CTU текущей строки CTU, в котором второй CTU находится рядом с начальным CTU.With reference to the first aspect or any of the above implementations of the first aspect, in the seventh possible implementation of the first aspect, processing the current CTU row based on the HMVP list comprises: processing the current CTU row based on the HMVP list from the second CTU of the current CTU row in which the second CTU is adjacent with initial CTU.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в восьмой возможной реализации первого аспекта множество строк CTU обрабатывается в режиме параллельной обработки волнового фронта (WPP).With reference to the first aspect or any of the aforementioned implementations of the first aspect, in an eighth possible implementation of the first aspect, a plurality of CTU rows are processed in a wavefront parallel processing (WPP) mode.

Очевидно, что, поскольку HMVP список для текущей строки CTU инициализируется в начале для обработки текущей строки CTU, при объединении с режимом WPP можно обрабатывать строки CTU кадра изображения или области изображения параллельно и, таким образом, можно дополнительно повысить эффективность кодирования и декодирования.Obviously, since the HMVP list for the current CTU row is initialized at the beginning to process the current CTU row, when combined with the WPP mode, it is possible to process the CTU rows of a picture frame or a picture area in parallel, and thus the encoding and decoding efficiency can be further improved.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в девятой возможной реализации первого аспекта начинается обработка текущей строки CTU (или обработка текущей строки CTU начинается), когда обрабатывается конкретный CTU предшествующей строки CTU.With reference to the first aspect or any of the aforementioned implementations of the first aspect, in a ninth possible implementation of the first aspect, processing of the current CTU row starts (or processing of the current CTU row starts) when a particular CTU of the previous CTU row is processed.

Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в десятой возможной реализации первого аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и поверх или над текущей строкой CTU.With reference to the first aspect or any of the above first aspect implementations, in the tenth possible implementation of the first aspect, the preceding CTU line is the CTU line immediately adjacent to the current CTU line and on top of or above the current CTU line.

Со ссылкой на девятую реализацию первого аспекта или десятой реализации первого аспекта, в одиннадцатой возможной реализации первого аспекта, конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.With reference to the ninth implementation of the first aspect or the tenth implementation of the first aspect, in the eleventh possible implementation of the first aspect, the specific CTU of the preceding CTU string is the second CTU of the preceding CTU string; or the particular CTU of the preceding CTU row is the first CTU of the preceding CTU row.

Второй аспект настоящего раскрытия обеспечивает устройство для обработки видео, содержащее: блок инициализации, выполненный с возможностью инициализировать список предсказания вектора движения на основании исторических данных (HMVP) для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и блок обработки, выполненный с возможностью обрабатывать текущую строку CTU на основании HMVP списка.A second aspect of the present disclosure provides a video processing apparatus, comprising: an initializer configured to initialize a motion vector prediction (HMVP) list for a current coding tree unit (CTU) row when the current CTU is an initial CTU of the current CTU row; and a processing unit configured to process the current CTU row based on the HMVP list.

Со ссылкой на второй аспект, в первой возможной реализации второго аспекта, количество кандидатов вектора движения в инициализированном HMVP списке равно нулю.With reference to the second aspect, in the first possible implementation of the second aspect, the number of motion vector candidates in the initialized HMVP list is zero.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, во второй возможной реализации второго аспекта текущая строка CTU принадлежит области изображения, которая состоит из множества строк CTU и текущая строка CTU является любой из множества строк CTU.With reference to the second aspect or any of the above implementations of the second aspect, in the second possible implementation of the second aspect, the current CTU line belongs to an image area that consists of a plurality of CTU lines, and the current CTU line is any of the plurality of CTU lines.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в третьей возможной реализации второго аспекта блок инициализации дополнительно выполнен с возможностью инициализировать HMVP список для каждой из множества строк CTU, за исключением текущей строки CTU, в котором HMVP списки для множества строк CTU идентичны или различны.With reference to the second aspect or any of the above implementations of the second aspect, in a third possible implementation of the second aspect, the initializer is further configured to initialize an HMVP list for each of the plurality of CTU strings except for the current CTU string, in which the HMVP lists for the plurality of CTU strings are identical. or different.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в четвертой возможной реализации второго аспекта блок обработки дополнительно выполнен с возможностью: обрабатывать текущий CTU текущей строки CTU; обновить инициализированный HMVP список на основании обработанного текущего CTU; и обработать второй CTU текущей строки CTU на основании обновленного HMVP списка.With reference to the second aspect or any of the above implementations of the second aspect, in the fourth possible implementation of the second aspect, the processing unit is further configured to: process the current CTU of the current CTU row; update the initialized HMVP list based on the processed current CTU; and process the second CTU of the current CTU row based on the updated HMVP list.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в пятой возможной реализации второго аспекта HMVP список обновляется в соответствии с обработанным CTU текущей строки CTU.With reference to the second aspect or any of the above second aspect implementations, in the fifth possible implementation of the second HMVP aspect, the list is updated according to the processed CTU of the current CTU row.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в шестой возможной реализации второго аспекта блок инициализации дополнительно выполнен с возможностью инициализировать HMVP список для текущей строки CTU следующим образом: очистить HMVP список для текущей строки CTU.With reference to the second aspect or any of the above implementations of the second aspect, in the sixth possible implementation of the second aspect, the initializer is further configured to initialize the HMVP list for the current CTU row as follows: Clear the HMVP list for the current CTU row.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в седьмой возможной реализации второго аспекта блок обработки дополнительно выполнен с возможностью обрабатывать текущую строку CTU на основании HMVP списка следующим образом: обработать текущую строку CTU на основании HMVP списка из второго CTU текущей строки CTU, в котором второй CTU находится рядом с начальным CTU.With reference to the second aspect or any of the above implementations of the second aspect, in the seventh possible implementation of the second aspect, the processing unit is further configured to process the current CTU row based on the HMVP list as follows: process the current CTU row based on the HMVP list from the second CTU of the current CTU row , in which the second CTU is adjacent to the initial CTU.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в восьмой возможной реализации второго аспекта множество строк CTU обрабатываются в режиме параллельной обработки волнового фронта (WPP).With reference to the second aspect or any of the aforementioned implementations of the second aspect, in an eighth possible implementation of the second aspect, multiple CTU rows are processed in a wavefront parallel processing (WPP) mode.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в девятой возможной реализации второго аспекта текущая строка CTU начинается обрабатываться (или начинается обработка текущей строки CTU), когда обрабатывается конкретный CTU предшествующей строки CTU.With reference to the second aspect, or any of the above implementations of the second aspect, in a ninth possible implementation of the second aspect, the current CTU row starts processing (or the processing of the current CTU row starts) when the specific CTU of the previous CTU row is processed.

Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в десятой возможной реализации второго аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и на верху текущей строки CTU.With reference to the second aspect or any of the above second aspect implementations, in the tenth possible implementation of the second aspect, the preceding CTU line is the CTU line immediately adjacent to the current CTU line and on top of the current CTU line.

Со ссылкой на девятую реализацию второго аспекта или десятую реализацию второго аспекта, в одиннадцатой возможной реализации второго аспекта конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.With reference to the ninth implementation of the second aspect or the tenth implementation of the second aspect, in the eleventh possible implementation of the second aspect, the specific CTU of the preceding CTU string is the second CTU of the preceding CTU string; or the particular CTU of the preceding CTU row is the first CTU of the preceding CTU row.

Третий аспект настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования, содержащий: составление/инициализацию HMVP списка для текущей строки CTU; и обработку CTU текущей строки CTU на основании составленного/инициализированного HMVP списка.A third aspect of the present disclosure provides an encoding method implemented by a decoder, comprising: compiling/initializing an HMVP list for a current CTU string; and processing the CTU of the current CTU row based on the compiled/initialized HMVP list.

Со ссылкой на третий аспект, в первой возможной реализации третьего аспекта HMVP список для текущей строки CTU составляется/инициализируется следующим образом: очищение HMVP списка для текущей строки CTU; и/или установка значений по умолчанию для HMVP списка для текущей строки CTU; и/или составление/инициализация HMVP списка для текущей строки CTU на основании HMVP списка для CTU предшествующей строки CTU.With reference to the third aspect, in a first possible implementation of the third HMVP aspect, the list for the current CTU row is constructed/initialized as follows: clearing the HMVP list for the current CTU row; and/or setting default values for the HMVP list for the current CTU row; and/or compiling/initializing the HMVP list for the current CTU row based on the HMVP list for the CTUs of the preceding CTU row.

Со ссылкой на первую возможную реализацию третьего аспекта, во второй возможной реализации третьего аспекта установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: заполнение MV HMVP списка как МV унифицированного способа предсказания, в котором МV унифицированного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображения содержат первое опорное изображение в списке L0; и/или заполнение MV HMVP списка как МV двунаправленного способа предсказания, в котором МV двунаправленного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображениях содержат первое опорное изображение в L0 списке и первое опорное изображение в списке L1.With reference to the first possible implementation of the third aspect, in the second possible implementation of the third aspect, setting the default values for the HMVP list for the current row of the CTU comprises: populating the HMVP list MV as a unified prediction method MV, in which the unified prediction method MV is either a zero motion vector, or a non-zero motion vector, in which the reference pictures contain the first reference picture in the list L0; and/or populating the HMVP list MV as a bidirectional prediction method MV, wherein the bidirectional prediction method MV is either a zero motion vector or a non-zero motion vector, wherein the reference pictures comprise the first reference picture in the L0 list and the first reference picture in the L1 list.

Со ссылкой на первую возможную реализацию третьего аспекта, в третьей возможной реализации третьего аспекта каждое совместно размещенное изображение может хранить временной HMVP список для каждой строки CTU или для всего изображения, в котором установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: инициализацию/составление HMVP списка для текущей строки CTU на основании временного HMVP списка.With reference to the first possible implementation of the third aspect, in the third possible implementation of the third aspect, each co-located image may store a temporary HMVP list for each CTU row or for the entire picture, in which setting the default values for the HMVP list for the current CTU row contains: initialization/ compiling an HMVP list for the current CTU row based on the temporary HMVP list.

Со ссылкой на первую возможную реализацию третьего аспекта, в четвертой возможной реализации третьего аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и наверху текущей строки CTU. With reference to the first possible implementation of the third aspect, in the fourth possible implementation of the third aspect, the preceding CTU row is the CTU row immediately adjacent to the current CTU row and on top of the current CTU row.

Со ссылкой на четвертую возможную реализацию третьего аспекта, в пятой возможной реализации третьего аспекта, CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU.With reference to the fourth possible implementation of the third aspect, in the fifth possible implementation of the third aspect, the CTU of the previous CTU row is the second CTU of the previous CTU row.

Со ссылкой на четвертую возможную реализацию третьего аспекта, в пятой возможной реализации третьего аспекта, CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.With reference to the fourth possible implementation of the third aspect, in the fifth possible implementation of the third aspect, the CTU of the previous CTU row is the first CTU of the previous CTU row.

Четвертый аспект настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством кодирования, содержащий: составление/инициализацию HMVP списка для текущей строки CTU; обработку CTU текущей строки CTU на основании составленного/инициализированного HMVP списка.A fourth aspect of the present disclosure provides an encoding method implemented by an encoder, comprising: compiling/initializing an HMVP list for a current CTU string; processing the CTU of the current row of CTUs based on the compiled/initialized HMVP list.

Со ссылкой на четвертый аспект, в первой возможной реализации четвертого аспекта HMVP список для текущей строки CTU составляется/инициализируется следующим образом: очищение HMVP списка для текущей строки CTU; и/или установка значений по умолчанию для HMVP списка для текущей строки CTU; и/или составление/инициализацию HMVP списка для текущей строки CTU на основании HMVP списка для CTU предшествующей строки CTU.With reference to the fourth aspect, in a first possible implementation of the fourth HMVP aspect, the list for the current CTU row is constructed/initialized as follows: clearing the HMVP list for the current CTU row; and/or setting default values for the HMVP list for the current CTU row; and/or compiling/initializing the HMVP list for the current CTU row based on the HMVP list for the CTUs of the preceding CTU row.

Со ссылкой на первую реализацию четвертого аспекта, во второй возможной реализации четвертого аспекта установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: заполнение MV HMVP списка как MV унифицированного способа предсказания, в котором MV унифицированного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображения содержат первое опорное изображение в списке L0; и/или заполнение MV HMVP списка как МV двунаправленного способа предсказания, в котором МV двунаправленного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображения содержат первое опорное изображение в L0 списке и первое опорное изображение в списке L1.With reference to the first implementation of the fourth aspect, in the second possible implementation of the fourth aspect, setting the default values of the HMVP list for the current row of the CTU comprises: populating the HMVP list MV as a unified prediction method MV, in which the unified prediction method MV is either a zero motion vector or a non-zero motion vector, in which the reference pictures contain the first reference picture in the list L0; and/or populating the HMVP list MV as a bidirectional prediction method MV, wherein the bidirectional prediction method MV is either a null motion vector or a non-zero motion vector, wherein the reference pictures comprise the first reference picture in the L0 list and the first reference picture in the L1 list.

Со ссылкой на первую возможную реализацию четвертого аспекта, в третьей возможной реализации четвертого аспекта каждое совместно размещенное изображение может хранить временной HMVP список для каждой строки CTU или для всего изображения, в котором установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: инициализацию/составление HMVP списка для текущей строки CTU на основании временного HMVP списка.With reference to the first possible implementation of the fourth aspect, in the third possible implementation of the fourth aspect, each co-located image may store a temporary HMVP list for each CTU row or for the entire picture, in which setting the default values for the HMVP list for the current CTU row contains: initialization/ compiling an HMVP list for the current CTU row based on the temporary HMVP list.

Со ссылкой на первую возможную реализацию четвертого аспекта, в четвертой возможной реализации четвертого аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и над или выше текущей строки CTU.With reference to the first possible implementation of the fourth aspect, in the fourth possible implementation of the fourth aspect, the preceding CTU row is the CTU row immediately adjacent to the current CTU row and above or above the current CTU row.

Со ссылкой на четвертую возможную реализацию четвертого аспекта, в пятой возможной реализации четвертого аспекта, CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU.With reference to the fourth possible implementation of the fourth aspect, in the fifth possible implementation of the fourth aspect, the CTU of the previous CTU row is the second CTU of the previous CTU row.

Со ссылкой на четвертую возможную реализацию четвертого аспекта, в шестой возможной реализации четвертого аспекта, CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.With reference to the fourth possible implementation of the fourth aspect, in the sixth possible implementation of the fourth aspect, the CTU of the previous CTU row is the first CTU of the previous CTU row.

Пятый аспект настоящего раскрытия обеспечивает кодер, содержащий схему обработки для выполнения способа согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой одной реализации третьего аспекта, или согласно четвертому аспекту, или любой из реализации четвертого аспекта. Например, кодер может включать в себя схему инициализации, выполненную с возможностью инициализировать список предсказания вектора движения (HMVP) на основании исторических данных для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и схему обработки, выполненную с возможностью обрабатывать текущую строку CTU на основании HMVP списка.A fifth aspect of the present disclosure provides an encoder comprising a processing circuit for performing a method according to the first aspect, or any of the implementations of the first aspect, or according to the third aspect, or any one implementation of the third aspect, or according to the fourth aspect, or any of the implementations of the fourth aspect. For example, the encoder may include an initialization circuit configured to initialize a motion vector prediction (HMVP) list based on historical data for the current coding tree unit (CTU) row when the current CTU is the initial CTU of the current CTU row; and a processing circuit configured to process the current CTU row based on the HMVP list.

Шестой аспект настоящего раскрытия обеспечивает декодер, содержащий схему обработки для выполнения способа согласно первому аспекту или любому из способов реализации первого аспекта, или согласно третьему аспекту или любому одному из вариантов реализации третьего аспекта, или согласно четвертому аспекту, или любой одной реализации четвертого аспекта. Например, декодер может включать в себя схему инициализации, выполненную с возможностью инициализировать список предсказания вектора движения на основании исторических данных (HMVP) для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и схему обработки, выполненную с возможностью обрабатывать текущую строку CTU на основании HMVP списка.A sixth aspect of the present disclosure provides a decoder comprising a processing circuit for performing a method according to a first aspect, or any one implementation of a first aspect, or a third aspect, or any one implementation of a third aspect, or a fourth aspect, or any one implementation of the fourth aspect. For example, the decoder may include an initialization circuit configured to initialize a motion vector prediction (HMVP) list for the current coding tree unit (CTU) row when the current CTU is the initial CTU of the current CTU row; and a processing circuit configured to process the current CTU row based on the HMVP list.

Седьмой аспект настоящего раскрытия обеспечивает компьютерный программный продукт, содержащий программный код для выполнения способа согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту, или любой из реализаций четвертого аспекта.A seventh aspect of the present disclosure provides a computer program product comprising program code for executing a method according to the first aspect, or any of the implementations of the first aspect, or according to the third aspect, or any of the implementations of the third aspect, or according to the fourth aspect, or any of the implementations of the fourth aspect.

Восьмой аспект настоящего раскрытия обеспечивает машиночитаемый носитель данных, на котором хранятся компьютерные инструкции, которые при выполнении одним или более процессорами, побуждают один или более процессоров выполнять способ согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту или любой из реализаций четвертого аспекта.An eighth aspect of the present disclosure provides a computer-readable storage medium that stores computer instructions that, when executed by one or more processors, cause one or more processors to perform a method according to the first aspect, or any of the implementations of the first aspect, or according to the third aspect, or any of the implementations of the third aspect. , or according to the fourth aspect or any of the implementations of the fourth aspect.

Девятый аспект настоящего раскрытия обеспечивает декодер, содержащий: один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором, когда программы выполняется процессорами, декодер выполнен с возможностью выполнять способ согласно первому аспекту или любой реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту или любому из реализаций четвертого аспекта.A ninth aspect of the present disclosure provides a decoder comprising: one or more processors; and a persistent computer-readable storage medium connected to the processors and storing programs for execution by the processors, in which, when the programs are executed by the processors, the decoder is configured to perform the method according to the first aspect, or any implementations of the first aspect, or according to the third aspect, or any of the implementations of the third aspect, or according to the fourth aspect or any of the implementations of the fourth aspect.

Десятый аспект настоящего раскрытия обеспечивает кодер, содержащий: один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором когда программы выполняется процессорами, кодер выполнен с возможностью выполнять способ согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту или любой из реализаций четвертого аспекта.A tenth aspect of the present disclosure provides an encoder comprising: one or more processors; and a persistent computer-readable storage medium connected to the processors and storing programs for execution by the processors, in which, when the programs are executed by the processors, the encoder is configured to perform the method according to the first aspect or any of the implementations of the first aspect, or according to the third aspect or any of the implementations of the third aspect, or according to the fourth aspect or any of the implementations of the fourth aspect.

Краткое описание чертежейBrief description of the drawings

Далее приведено подробное описание вариантов осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:The following is a detailed description of embodiments of the invention with reference to the accompanying drawings, in which:

Фиг.1A является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;1A is a block diagram showing an example of a video coding system capable of implementing embodiments of the invention;

Фиг.1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;1B is a block diagram showing another example of a video coding system capable of implementing embodiments of the invention;

Фиг.2 является блок-схемой, показывающей пример видеокодера, выполненный с возможностью реализации вариантов осуществления изобретения;2 is a block diagram showing an example of a video encoder capable of implementing embodiments of the invention;

Фиг.3 является блок-схемой, показывающей примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;3 is a block diagram showing an exemplary structure of a video decoder capable of implementing embodiments of the invention;

Фиг.4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;4 is a block diagram illustrating an example of an encoding device or a decoding device;

Фиг.5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;Fig. 5 is a block diagram illustrating another example of an encoding device or a decoding device;

Фиг.6 показывает позиции пространственных соседних блоков, используемых при слиянии и составлении списка AMVP кандидатов;6 shows positions of spatial neighbor blocks used in merging and listing AMVP candidates;

Фиг.7 является блок-схемой алгоритма HMVP способа декодирования;Fig. 7 is a flowchart of the HMVP decoding method;

Фиг.8 является блок-схемой, иллюстрирующей порядок обработки WPP;Fig. 8 is a flowchart illustrating the order of WPP processing;

Фиг.9 является блок-схемой алгоритма, иллюстрирующей пример процесса функционирования видеодекодера согласно варианту осуществления;Fig. 9 is a flowchart illustrating an example of an operation process of a video decoder according to an embodiment;

Фиг.10 является блок-схемой алгоритма, иллюстрирующей пример процесса функционирования согласно варианту осуществления;10 is a flowchart illustrating an example of an operation process according to an embodiment;

Фиг.11 является блок-схемой, иллюстрирующей пример устройства для обработки видео.11 is a block diagram illustrating an example of a video processing apparatus.

В приведенном ниже описании идентичные ссылочные позиции обозначают идентичные или, по меньшей мере, функционально эквивалентные признаки, при отсутствии специального примечания относительно различия этих идентичных ссылочных позиций.In the following description, identical reference numerals designate identical or at least functionally equivalent features, unless specifically noted as to the difference between these identical reference numerals.

Осуществление изобретенияImplementation of the invention

В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть настоящего раскрытия и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего раскрытия могут использоваться. Понятно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на чертежах. Поэтому нижеследующее подробное описание не следует рассматривать в ограничительном смысле, и объем настоящего раскрытия определяется прилагаемой формулой изобретения.In the following description, reference is made to the accompanying drawings, which form part of the present disclosure and show, by way of illustration, specific aspects of embodiments of the invention or specific aspects in which embodiments of the present disclosure may be used. It is clear that embodiments of the invention can be used in other aspects and contain structural or logical changes not shown in the drawings. Therefore, the following detailed description should not be considered in a limiting sense, and the scope of the present disclosure is defined by the appended claims.

Например, очевидно, что настоящее изобретение описывает способ, который выполняется соответствующий устройством или системой, выполненной с возможностью выполнять способ и наоборот. Например, если описан один или более этапов конкретного способа, соответствующее устройство может включать в себя один или более блоков, например, функциональных блоков для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов) даже, если такой один или более блоков явно не описаны и не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описано на основании одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множество блоков) даже, если такой один или множество этапов явно не описаны или не проиллюстрированы на чертежах. Кроме того, следует понимать, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.For example, it is clear that the present invention describes a method that is performed by a corresponding device or system configured to perform the method and vice versa. For example, if one or more steps of a particular method are described, the corresponding device may include one or more blocks, for example, functional blocks for performing the described one or more steps of the method (for example, one block performing one or more steps, or a plurality of blocks each of which performs one or more of the plurality of steps) even if such one or more units are not explicitly described and illustrated in the drawings. On the other hand, for example, if a particular device is described in terms of one or more blocks, such as functional blocks, the corresponding method may include one step to perform the functionality of one or more blocks (for example, one step to perform the functionality of one or more blocks). blocks, or a plurality of steps, each of which performs the functionality of one or more of the plurality of blocks) even if such one or more steps is not explicitly described or illustrated in the drawings. In addition, it should be understood that features of the various exemplary embodiments and/or aspects described herein may be combined with each other unless specifically noted otherwise.

Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» можно использовать термин «кадр» или «изображение» как синонимы в области кодирования видео. Кодирование видео, используемое в настоящем изобретении (или настоящем раскрытии), указывает либо кодирование видео, либо декодирование видео. Кодирование видео выполняется на стороне источника, как правило, включающую в себя обработку (например, путем сжатия) исходных видеоизображений, чтобы уменьшить объем данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом, как будет объяснено позже), следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеопоследовательности. Комбинация части кодирования и части декодирования также называется CODEC (кодирование и декодирование).Video coding generally refers to the processing of a sequence of images that form a video or video sequence. Instead of the term "image", the term "frame" or "image" can be used as synonyms in the field of video coding. The video coding used in the present invention (or the present disclosure) indicates either video coding or video decoding. Video encoding is performed at the source side, typically including processing (eg, by compressing) the original video images to reduce the amount of data needed to represent the video images (for more efficient storage and/or transmission). The video decoding is performed on the destination side and usually involves inverse processing compared to the encoder to recover the video images. Embodiments relating to "encoding" video images (or images in general, as will be explained later) should be understood to refer to either "encoding" or "decoding" a video sequence. The combination of an encoding part and a decoding part is also called CODEC (encoding and decoding).

В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть, восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь при передаче или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования для уменьшения количества данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.In the case of lossless video coding, the original video images can be reconstructed, that is, the restored video images have the same quality as the original video images (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, additional compression is performed, for example by quantization, to reduce the amount of data representing video images that cannot be fully reconstructed in the decoder, i.e. the quality of the restored video images is lower or worse than the quality of the original video images.

Несколько стандартов кодирования видео, начиная с H.261, принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть, кодируется, на уровне блока (блока видео), например, используя пространственное (внутреннее изображение) предсказание и временное (внутреннее изображение) предсказание для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан), чтобы получить остаточный блок, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжаты), тогда как в декодере выполняется обратная обработка по сравнению с кодером, которая частично применяется к закодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказание) и/или восстановления для обработки, то есть, кодирования, последующих блоков.Several video coding standards, starting with H.261, belong to the group of "hybrid lossy video codecs" (i.e., combine spatial and temporal sample-domain prediction and 2D transform coding to apply transform-domain quantization). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and encoding is usually done at the block level. In other words, in the encoder, video is usually processed, that is, encoded, at the block (video block) level, for example, using spatial (intra-image) prediction and temporal (intra-image) prediction to generate a prediction block, subtracting the prediction block from the current block ( block currently being processed/to be processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compressed), while the decoder performs inverse processing compared with an encoder that is partially applied to the encoded or compressed block to reconstruct the current block for presentation. In addition, the encoder duplicates the processing cycle of the decoder so that both will generate identical predictions (eg, intra and inter prediction) and/or reconstructions for processing, i.e. encoding, subsequent blocks.

Используемый в настоящем описании термин «блок» может быть частью изображения или кадра. Для удобства описания варианты осуществления изобретения описаны здесь со ссылкой на высокоэффективное кодирование видео (HEVC) или опорное программное обеспечение универсального кодирования видео (VVC), разработанное объединенной группой сотрудничества по кодированию видео (JCT-VC) группы экспертов ITU-T по кодированию видео (VCEG) и группы экспертов ISO/IEC по движущимся изображениям (MPEG). Специалисту в данной области очевидно, что варианты осуществления изобретения не ограничиваются HEVC или VVC. Настоящее изобретение может относиться к CU, PU и TU. В HEVC CTU разделяется на CUs с использованием структуры дерева квадратов, обозначаемой как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на уровне CU. Каждый CU может быть дополнительно разделен на один, два или четыре PUs в соответствии с типом разделения PU. Внутри одного PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основании PU. После получения остаточного блока путем применения процесса предсказания на основании типа разделения PU, CU может быть разделен на блоки преобразования (TUs) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU. В новейших разработках технологии сжатия видео для разделения блока кодирования используется кадр разделения дерева квадрантов и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, блок дерева кодирования (CTU) сначала разделяется структурой дерева квадрантов. Листовые узлы дерева квадрантов дополнительно разделяются структурой двоичного дерева. Листовые узлы двоичного дерева называются блоками кодирования (CUs), и эта сегментация используется для предсказания и обработки преобразования без какого-либо дополнительно разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно с блочной структурой QTBT было предложено также использовать множественное разделение, например, разделение на тройное дерево.As used herein, the term "block" may be part of an image or frame. For convenience of description, embodiments of the invention are described herein with reference to High Efficiency Video Coding (HEVC) or Universal Video Coding (VVC) reference software developed by the Joint Collaborative Video Coding Group (JCT-VC) of the ITU-T Video Coding Expert Group (VCEG). ) and the ISO/IEC Moving Picture Expert Group (MPEG). A person skilled in the art will appreciate that embodiments of the invention are not limited to HEVC or VVC. The present invention may relate to CU, PU and TU. In HEVC, the CTU is divided into CUs using a square tree structure referred to as a coding tree. The decision as to whether to encode an image area using extrinsic (temporal) or intrinsic (spatial) prediction is made at the CU level. Each CU may be further partitioned into one, two or four PUs according to the partition type of the PU. Within one PU, the same prediction process is applied, and the corresponding information is transmitted to the decoder based on the PU. After obtaining the residual block by applying a prediction process based on the division type of the PU, the CU may be divided into transform units (TUs) according to a different quadtree structure similar to the coding tree for the CU. The latest developments in video compression technology use a quadtree-binary-tree (QTBT) split frame to split a coding block. In the block structure of the QTBT, the CU can be either square or rectangular. For example, a coding tree unit (CTU) is first divided by a quadtree structure. The leaf nodes of the quadtree are further separated by a binary tree structure. The leaf nodes of a binary tree are called coding units (CUs) and this segmentation is used to predict and process the transform without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel with the block structure of QTBT, it has also been proposed to use multiple partitioning, such as ternary tree partitioning.

В следующих вариантах осуществления со ссылкой на фиг.1-3 приведено описание кодера 20, декодера 30 и системы 10 кодирования.In the following embodiments, the encoder 20, the decoder 30, and the encoding system 10 will be described with reference to FIGS. 1-3.

Фиг.1A является концептуальной или схематической блок-схемой, иллюстрирующей пример системы 10 кодирования, например, система 10 кодирования видео, которая может использовать способы настоящего раскрытия (настоящее раскрытие). Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнять способы в соответствии с различными примерами, описанными в настоящем изобретении. Как показано на фиг.1A, система 10 кодирования содержит устройство 12 источник, выполненное с возможностью предоставлять кодированные данные 13, например, закодированное изображение 13, например, в устройство 14 назначения для декодирования закодированных данных 13.1A is a conceptual or schematic block diagram illustrating an example of an encoding system 10, such as a video encoding system 10, that may use the methods of the present disclosure (the present disclosure). Encoder 20 (eg, video encoder 20) and decoder 30 (eg, video decoder 30) of video coding system 10 represent examples of devices that can be configured to perform methods in accordance with the various examples described in the present invention. As shown in FIG. 1A, the encoding system 10 comprises a source device 12 configured to provide encoded data 13, such as an encoded image 13, for example, to a destination device 14 to decode the encoded data 13.

Устройство 12 источник содержит кодер 20 и может дополнительно, т.е. возможно, содержать источник 16 изображения, блок 18 предварительной обработки, например, блок 18 предварительной обработки изображения и интерфейс связи или блок 22 связи.The source device 12 contains an encoder 20 and may additionally, i. e. optionally comprise an image source 16, a pre-processing unit 18, for example an image pre-processing unit 18, and a communication interface or communication unit 22.

Источник 16 изображения может содержать или быть устройством захвата изображения любого типа, например, для захвата реального изображения и/или любого вида изображения или комментария (для кодирования содержимого экрана некоторые тексты на экране также считается частью изображения или изображения, которое должно быть закодировано), устройство для генерирования, например, процессор компьютерной графики для создания компьютерного анимированного изображения, или любое устройство для получения и/или предоставления реального изображения, компьютерного анимированного изображения (например, содержимое экрана, изображение виртуальной реальности (VR)) и/или любой их комбинации (например, изображение дополненной реальности (AR)).The image source 16 may comprise or be any type of image capture device, such as for capturing a real image and/or any kind of image or commentary (for screen encoding, some text on the screen is also considered part of the image or image to be encoded), device for generating, for example, a computer graphics processor for creating a computer animated image, or any device for receiving and/or providing a real image, a computer animated image (for example, screen content, a virtual reality (VR) image), and/or any combination thereof (for example , augmented reality (AR) image).

(Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть, изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или сокращенно luma) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты информации цветности или цвета. Соответственно, изображение в формате YCbCr содержит массив выборок яркости из значений выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование цвета. Если изображение является монохромным, оно может содержать только массив выборок яркости.A (digital) image is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A sample in an array can also be called a pixel (short for picture element) or a pixel. The number of samples in the horizontal and vertical direction (or axis) of the array or image determines the size and/or resolution of the image. Three color components are typically used to represent a color, that is, an image can be represented by or include three arrays of samples. In RBG format or color space, an image contains a corresponding array of red, green, and blue color samples. However, in video encoding, each pixel is typically represented in a luma/chrominance format or color space, such as YCbCr, which contains a luminance component labeled Y (sometimes L is also used instead) and two chrominance components labeled Cb and Cr. The Y component of luma (or abbreviated as luma) represents the brightness or intensity of the gray level (eg, as in a grayscale image), while the two chrominance (or short chroma) components Cb and Cr represent components of chrominance or color information. Accordingly, an image in YCbCr format contains an array of luma samples of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). RGB images can be converted to YCbCr format and vice versa, this process is also known as color conversion. If the image is monochrome, it can only contain an array of brightness samples.

В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.In a monochrome sample, there is only one sample array, which is nominally considered the luma array.

При дискретизации 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.At 4:2:0 sampling, each of the two chrominance arrays is half the height and half the width of the luma array.

При дискретизации 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту и половину ширины массива яркости.At 4:2:2 sampling, each of the two chrominance arrays has the same height and half the width of the luma array.

При дискретизации 4:4:4, в зависимости от значения separate_colour_plane_flag, применяется следующее:With 4:4:4 sampling, depending on the value of separate_colour_plane_flag, the following applies:

- если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости;- if separate_colour_plane_flag is 0, each of the two chroma arrays has the same height and width as the luma array;

- в противном случае (separate_colour_plane_flag равен 1) три цветные плоскости обрабатываются отдельно как монохромные изображения с выборкой.- otherwise (separate_colour_plane_flag is 1) the three color planes are treated separately as sampled monochrome images.

Источник 16 изображения (например, источник 16 видео) может представлять собой, например, камеру для захвата изображения, память, например, память изображения, содержащую или хранящую ранее захваченное или сгенерированное изображение, и/или интерфейс любого типа (внутренний или внешний) для получения или приема изображения. Камера может быть, например, локальной или интегрированной камерой, интегрированной в исходное устройство, память может быть локальной или интегрированной памятью, например, интегрировано в исходное устройство. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео, например, внешнего устройства захвата изображения, такого как камера, внешней памяти или внешнего устройства формирования изображения, например, внешнего компьютерного графического процессора, компьютера или сервера. Интерфейс может быть любым, например, проводным или беспроводным интерфейсом, оптическим интерфейсом в соответствии с любым проприетарным или стандартизованным протоколом интерфейса. Интерфейс для получения данных 17 изображения может быть тем же интерфейсом, что и интерфейс 22 связи, или его частью.Image source 16 (e.g., video source 16) may be, for example, a camera for capturing an image, a memory, such as an image memory, containing or storing a previously captured or generated image, and/or any type of interface (internal or external) for obtaining or receiving an image. The camera may be, for example, a local or integrated camera integrated in the source device, the memory may be local or integrated memory, for example, integrated in the source device. The interface may be, for example, an external interface for receiving an image from an external video source, such as an external image capture device such as a camera, external memory, or an external imaging device, such as an external computer GPU, computer, or server. The interface may be any, such as a wired or wireless interface, an optical interface in accordance with any proprietary or standardized interface protocol. The interface for obtaining image data 17 may be the same interface as the communication interface 22 or part of it.

В отличие от блока 18 предварительной обработки и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения (например, видеоданные 16) также могут называться необработанным изображением или данными 17 исходного изображения.Unlike the pre-processing unit 18 and the processing performed by the pre-processing unit 18, the image or image data 17 (eg, video data 16) may also be referred to as raw image or original image data 17.

Блок 18 предварительной обработки выполнен с возможностью принимать (необработанные) данные 17 изображения и выполнять предварительную обработку данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Выполненная предварительная обработка блоком 18 предварительной обработки может, например, включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.The pre-processing unit 18 is configured to receive (raw) image data 17 and perform pre-processing of the image data 17 to obtain a pre-processed image 19 or pre-processed image data 19. The pre-processing performed by the pre-processor 18 may, for example, include cropping, color format conversion (eg from RGB to YCbCr), color correction or noise reduction. It can be understood that the pre-processing unit 18 may be an optional component.

Кодер 20 (например, видеокодер 20) выполнен с возможностью принимать предварительно обработанные данные 19 изображения и предоставлять данные 21 закодированного изображения (дополнительные подробности будут описаны ниже, например, на основании фиг.2 или фиг.4).The encoder 20 (eg, video encoder 20) is configured to receive pre-processed image data 19 and provide encoded image data 21 (more details will be described below, for example, based on FIG. 2 or FIG. 4).

Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью принимать данные 21 закодированного изображения и передавать их другому устройству, например, в устройство 14 назначения или любое другое устройство для хранения или прямого восстановления или для обработки данных 21 закодированного изображения соответственно перед сохранением кодированных данных 13 и/или передачей кодированных данных 13 на другое устройство, например, устройство 14 назначения или любое другое устройство для декодирования или сохранения.The communication interface 22 of the source device 12 may be configured to receive the encoded image data 21 and transmit it to another device, for example, to the destination device 14 or any other device for storage or direct retrieval or for processing the encoded image data 21, respectively, before storing the encoded data 13 and/or transmitting the encoded data 13 to another device, such as a destination device 14 or any other device for decoding or storage.

Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. возможно, содержать интерфейс связи или блок 28 связи, блок 32 постобработки и устройство 34 отображения.Destination device 14 includes a decoder 30 (eg video decoder 30) and may additionally, i. e. possibly contain a communication interface or a communication unit 28, a post-processing unit 32 and a display device 34.

Интерфейс 28 связи устройства 14 назначения выполнен с возможностью принимать данные 21 кодированного изображения или кодированные данные 13, например, непосредственно из устройства 12 источника или из любого другого источника, например, запоминающее устройство, например, устройство хранения данных закодированного изображения.The communication interface 28 of the destination device 14 is configured to receive encoded image data 21 or encoded data 13, for example, directly from the source device 12 or from any other source, such as a storage device, such as an encoded image data storage device.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передавать или принимать кодированные данные 21 изображения или закодированные данные 13 через прямую линию связи между устройством 12 источника и устройством 14 назначения, например, прямое проводное или беспроводное соединение, или через любую сеть, например, проводную или беспроводную сеть или любую их комбинацию, или любую частную и общественную сеть, или любую их комбинацию.Communication interface 22 and communication interface 28 may be configured to transmit or receive encoded image data 21 or encoded data 13 via a direct link between source device 12 and destination device 14, such as a direct wired or wireless connection, or via any network, such as , wired or wireless network, or any combination thereof, or any private and public network, or any combination thereof.

Интерфейс 22 связи может быть, например, выполнен с возможностью упаковывать данные 21 закодированного изображения в соответствующий формат, например, пакеты для передачи по каналу связи или сети связи.The communication interface 22 may, for example, be configured to pack the encoded image data 21 into an appropriate format, such as packets, for transmission over a communication channel or network.

Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью распаковывать закодированные данные 13 для получения данных 21 закодированного изображения.The communication interface 28, analogous to the communication interface 22, may, for example, be configured to decompress the encoded data 13 to obtain encoded image data 21.

Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены с возможностью представлять однонаправленные интерфейсы связи, как показано стрелкой для данных 13 кодированного изображения на фиг.1A, указывающей направление от устройства 12 источника к устройству 14 назначения, или двунаправленные интерфейсы связи, и может быть выполнен с возможностью, например, отправлять и получать сообщения, например, для установки соединения, подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, передаче данных закодированного изображения.Both communication interface 22 and communication interface 28 may be configured to represent unidirectional communication interfaces, as shown by the arrow for coded image data 13 in FIG. 1A indicating the direction from source device 12 to destination device 14, or bidirectional communication interfaces, and may be configured, for example, to send and receive messages, for example, to establish a connection, acknowledge and exchange any other information related to the communication channel and/or data transmission, for example, the transmission of encoded image data.

Декодер 30 выполнен с возможностью принимать данные 21 кодированного изображения и предоставлять данные 31 декодированного изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основании фиг. 3 или фиг. 5).The decoder 30 is configured to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (more details will be described below, for example, based on FIG. 3 or FIG. 5).

Постпроцессор 32 устройства 14 назначения выполнен с возможностью пост-обработки данных 31 декодированного изображения (также называемых данными восстановленного изображения), например, декодированное изображение 31, для получения данных 33 изображения после обработки, например, пост обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может включать, в себя, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки данных 31 декодированного изображения для отображения, например, с помощью устройства 34 отображения.The post processor 32 of the destination device 14 is configured to post-process the decoded image data 31 (also referred to as reconstructed image data), such as the decoded image 31, to obtain post-processed image data 33, such as the post-processed image 33. Post-processing performed by the post-processing unit 32 , may include, for example, color format conversion (for example, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare decoded image data 31 for display, for example, by device 34 display.

Устройство 34 отображения устройства 14 назначения выполнено с возможностью принимать данные 33 изображения с постобработкой для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например встроенный или внешний дисплей или монитор. Дисплеи могут, например, состоят из жидкокристаллических дисплеев (LCD), дисплей на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифрового светового процессора (DLP) или любой другой тип дисплея.The display device 34 of the destination device 14 is configured to receive post-processed image data 33 for displaying the image to, for example, a user or viewer. The display device 34 may be or comprise any kind of display for presenting the reconstructed image, such as a built-in or external display or monitor. The displays may, for example, consist of liquid crystal displays (LCD), organic light emitting diode (OLED) displays, plasma displays, projectors, micro-LED displays, liquid crystals on silicon (LCoS), digital light processor (DLP) or any other type of display .

Хотя фиг.1A изображает устройство 12 источника и устройство 14 назначения как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, либо с помощью отдельных аппаратных средств и/или программного обеспечения, либо любой их комбинации.Although FIG. 1A depicts source device 12 and destination device 14 as separate devices, device embodiments may also comprise both or both functionality, source device 12 or corresponding functionality, and destination device 14 or corresponding functionality. In such embodiments, source device 12 or related functionality and destination device 14 or related functionality may be implemented using the same hardware and/or software, or using separate hardware and/or software, or any of them. combinations.

Как будет очевидно для специалиста в данной области техники из описания, наличие и (точное) разделение функциональных возможностей различных модулей или функций в устройстве 12 источника и/или устройстве 14 назначения, как показано на фиг.1A, может отличаться в зависимости от фактического устройства и приложения.As will be apparent to one skilled in the art from the description, the presence and (exact) separation of functionality of various modules or functions in source device 12 and/or destination device 14 as shown in FIG. 1A may differ depending on the actual device and applications.

Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30), каждый может быть реализован в виде любой из множества подходящих схем, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, аппаратное обеспечение или любые их комбинации. Если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем постоянным машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения способов настоящего раскрытия. Любое из вышеперечисленного (включающее в себя оборудование, программное обеспечение, комбинацию оборудования и программного обеспечения и т.д.) может рассматриваться как один или более процессоров. Каждый из видеокодера 20 и видеодекодера 30 может быть использован в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве.Encoder 20 (e.g., video encoder 20) and decoder 30 (e.g., video decoder 30) may each be implemented as any of a variety of suitable circuits such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs) , field programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. If the methods are partially implemented in software, the device may store instructions for the software on a suitable persistent computer-readable storage medium and may execute instructions in hardware using one or more processors to perform the methods of the present disclosure. Any of the above (including hardware, software, a combination of hardware and software, etc.) may be considered one or more processors. Each of video encoder 20 and video decoder 30 may be used in one or more encoders or decoders, each of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.

Устройство 12 источника может называться устройством кодирования видео или оборудованием кодирования видео. Устройство 14 назначения может называться устройством декодирования видео или оборудованием декодирования видео. Устройство 12 источника и устройство 14 назначения могут быть примерами устройств кодирования видео или оборудования кодирования видео.Source device 12 may be referred to as a video encoding device or video encoding equipment. Destination device 14 may be referred to as a video decoding device or video decoding equipment. Source device 12 and destination device 14 may be examples of video encoding devices or video encoding equipment.

Устройство 12 источника и устройство 14 назначения могут включать в себя любое из широкого диапазона устройств, включающие в себя любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства последовательной передачи видео (например, серверы служб контента или контент серверы доставки), широковещательное приемное устройство, широковещательное передающее устройство и т.п., и могут использовать операционную систему любого типа или не использовать ее.Source device 12 and destination device 14 may include any of a wide range of devices, including any kind of portable or stationary devices, such as laptops or laptops, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, televisions. set-top boxes, televisions, display devices, digital media players, game consoles, video serial devices (such as content service servers or content delivery servers), broadcast receiver, broadcast transmitter, etc., and may use any type of operating system or don't use it.

В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

В некоторых случаях система 10 кодирования видео, показанная на фиг.1A, является просто примером, и способы настоящего раскрытия могут применяться к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the video coding system 10 shown in FIG. 1A is merely an example, and the methods of the present disclosure may apply to video coding settings (e.g., video coding or video decoding) that do not necessarily involve communication between encoding devices and decoding. In other examples, data is retrieved from local memory, streamed over a network, and the like. The video encoding device may encode and store data in memory, and/or the video decoder may retrieve and decode data from memory. In some examples, encoding and decoding is performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve and decode data from memory.

Следует понимать, что для каждого из вышеупомянутых примеров, описанных со ссылкой на видеокодер 20, видеодекодер 30 может быть выполнен с возможностью выполнения обратного процесса. Что касается элементов синтаксиса сигнализации, видеодекодер 30 может быть выполнен с возможностью принимать и анализировать такой элемент синтаксиса и декодировать, ассоциированные видеоданные, соответственно. В некоторых примерах видеокодер 20 может энтропийно кодировать один или более элементов синтаксиса в кодированный битовый последовательность видео. В таких примерах видеодекодер 30 может анализировать такой элемент синтаксиса и соответственно декодировать ассоциированные видеоданные.It should be understood that for each of the above examples described with reference to video encoder 20, video decoder 30 may be configured to perform the reverse process. With regard to signaling syntax elements, video decoder 30 may be configured to receive and parse such syntax element and decode the associated video data, respectively. In some examples, video encoder 20 may entropy encode one or more syntax elements into an encoded video bitstream. In such examples, video decoder 30 may parse such a syntax element and decode the associated video data accordingly.

Фиг. 1B является иллюстративной схемой другого примера системы 40 кодирования видео, включающей в себя кодер 20 по фиг.2 и/или декодер 30 по фиг.3 согласно примерному варианту осуществления. Система 40 может реализовывать способы в соответствии с различными примерами, описанными в настоящем изобретении. В проиллюстрированной реализации система 40 кодирования видео может включать в себя устройство (устройства) 41 формирования изображения, видеокодер 100, видеодекодер 30 (и/или видеокодер, реализованный через логическую схему 47 блока (блоков) 46 обработки), антенну 42, один или более процессоров 43, одно или более хранилищ 44 памяти и/или устройство 45 отображения.Fig. 1B is an illustrative diagram of another example of a video coding system 40 including encoder 20 of FIG. 2 and/or decoder 30 of FIG. 3 according to an exemplary embodiment. System 40 may implement methods in accordance with the various examples described in the present invention. In the illustrated implementation, video coding system 40 may include imager(s) 41, video encoder 100, video decoder 30 (and/or video encoder implemented via processing unit(s) 46 logic 47), antenna 42, one or more processors 43, one or more memory stores 44 and/or a display device 45.

Как показано, устройство (устройства) 41 формирования изображения, антенна 42, блок (блоки) обработки 46, логическая схема 47, видеокодер 20, видеодекодер 30, процессор (процессоры) 43, хранилище (хранилища) 44 памяти и/или устройство 45 отображения может быть способно обмениваться данными друг с другом. Как обсуждалось, хотя это проиллюстрировано как с видеокодером 20, так и с видеодекодером 30, в различных примерах система 40 кодирования видео может включать в себя только видеокодер 20 или только видеодекодер 30.As shown, imaging device(s) 41, antenna 42, processing unit(s) 46, logic circuit 47, video encoder 20, video decoder 30, processor(s) 43, memory storage(s) 44, and/or display device 45 may be able to communicate with each other. As discussed, although illustrated with both video encoder 20 and video decoder 30, in various examples, video coding system 40 may include only video encoder 20 or only video decoder 30.

Как показано, в некоторых примерах система 40 кодирования видео может включать в себя антенну 42. Антенна 42 может быть выполнена с возможностью, например, передавать или принимать закодированный битовый последовательность видеоданных. Кроме того, в некоторых примерах система 40 кодирования видео может включать в себя устройство 45 отображения. Устройство 45 отображения может быть выполнено с возможностью представлять видеоданные. Как показано, в некоторых примерах, логическая схема 47 может быть реализована через блок (блоки) 46 обработки. Блок (блоки) 46 обработки может включать в себя логику специализированной интегральной схемы (ASIC), графический процессор (процессоры), процессор (процессоры) общего назначения, или тому подобное. Система 40 кодирования видео также может включать в себя дополнительный процессор (процессоры) 43, который аналогичным образом может включать в себя логику специализированной интегральной схемы (ASIC), графический процессор (процессоры), процессор (процессоры) общего назначения и т.п. В некоторых примерах логическая схема 47 может быть реализована с помощью аппаратного обеспечения, специализированного оборудования для кодирования видео и т.п., и процессор (процессоры) 43 может реализовывать программное обеспечение общего назначения, операционные системы и т.п. Кроме того, хранилище (хранилища) 44 памяти может быть любым типом памяти, например энергозависимой памятью (например, статической оперативной памятью (SRAM), динамической памятью с произвольным доступом (DRAM) и т.д.) или энергонезависимой памятью (например, флэш-памятью и т. д.) и т. д. В неограничивающем примере хранилище (хранилища) 44 памяти может быть реализовано с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к хранилищу (хранилищам) 44 памяти (например, для реализации буфера изображения). В других примерах логическая схема 47 и/или блок (блоки) 46 обработки могут включать в себя хранилища памяти (например, кэш и т.п.) для реализации буфера изображений и т.п.As shown, in some examples, video coding system 40 may include an antenna 42. Antenna 42 may be configured to, for example, transmit or receive an encoded video bit sequence. In addition, in some examples, the video encoding system 40 may include a display device 45 . The display device 45 may be configured to present video data. As shown, in some examples, logic circuitry 47 may be implemented via processing unit(s) 46 . Processing unit(s) 46 may include application specific integrated circuit (ASIC) logic, graphics processor(s), general purpose processor(s), or the like. Video encoding system 40 may also include additional processor(s) 43, which may likewise include application specific integrated circuit (ASIC) logic, graphics processor(s), general purpose processor(s), and the like. In some examples, logic circuitry 47 may be implemented in hardware, dedicated video coding hardware, and the like, and processor(s) 43 may implement general purpose software, operating systems, and the like. In addition, memory storage(s) 44 may be any type of memory, such as volatile memory (eg, static random access memory (SRAM), dynamic random access memory (DRAM), etc.) or non-volatile memory (eg, flash memory). memory, etc.), etc. In a non-limiting example, the memory store(s) 44 may be implemented with a cache. In some examples, logic circuitry 47 may access memory store(s) 44 (eg, to implement an image buffer). In other examples, logic circuitry 47 and/or processing unit(s) 46 may include memory stores (eg, cache, etc.) for implementing an image buffer and the like.

В некоторых примерах видеокодер 100, реализованный с помощью логической схемы, может включать в себя буфер изображения (например, с помощью блока (блоков) 46 обработки или хранилища (хранилищ) 44 памяти) и графического процессора (например, через блок (блоки) 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может включать в себя видеокодер 100, реализованный посредством логической схемы 47, для воплощения различных модулей, как обсуждалось со ссылкой на фиг. 2 и/или любую другую систему или подсистему кодирования, описанную в настоящем документе. Логическая схема может быть выполнена с возможностью выполнять различные операции, как описано в настоящем изобретении.In some examples, the video encoder 100 implemented with logic may include an image buffer (eg, via processing unit(s) 46 or memory storage(s) 44) and a graphics processor (eg, via processing unit(s) 46). ). The graphics processor may be communicatively coupled to the image buffer. The graphics processing unit may include a video encoder 100 implemented by logic 47 to implement various modules, as discussed with reference to FIG. 2 and/or any other coding system or subsystem described herein. The logic circuit may be configured to perform various operations as described in the present invention.

Видеодекодер 30 может быть реализован аналогично тому, как реализован через логическую схему 47, для воплощения различных модулей, как обсуждалось в отношении декодера 30 на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в настоящем документе. В некоторых примерах видеодекодер 30 может быть реализован с помощью логической схемы, может включать в себя буфер изображения (например, посредством блока (блоков) 420 обработки или хранилища (хранилищ) 44 памяти)) и блока обработки графики (например, через блок (блоки) 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может включать в себя видеодекодер 30, реализованный через логическую схему 47, для воплощения различных модулей, как обсуждалось со ссылкой на фиг.3 и/или любую другую систему или подсистему декодера, описанную в настоящем изобретении.Video decoder 30 may be implemented in a manner similar to that implemented via logic circuitry 47 to implement various modules as discussed with respect to decoder 30 in FIG. 3 and/or any other decoder system or subsystem described herein. In some examples, video decoder 30 may be implemented with logic, may include an image buffer (e.g., via processing unit(s) 420 or memory storage(s) 44)) and a graphics processing unit (e.g., via processing unit(s) 44). 46 treatments). The graphics processor may be communicatively coupled to the image buffer. The graphics processing unit may include a video decoder 30 implemented via logic 47 to implement various modules as discussed with reference to FIG. 3 and/or any other decoder system or subsystem described in the present invention.

В некоторых примерах антенна 42 системы 40 кодирования видео может быть выполнена с возможностью принимать закодированный битовый последовательность видеоданных. Как обсуждалось, кодированный последовательность битов может включать в себя данные, индикаторы, значения индексов, данные выбора режима и т.п., связанные с кодированием видеокадра, как обсуждалось в данном документе, например, данные, ассоциированные с разделом кодирования (например, коэффициенты преобразования или квантованные коэффициенты преобразования, возможные индикаторы (как обсуждалось) и/или данные, определяющие раздел кодирования). Система 40 кодирования видео может также включать в себя видеодекодер 30, подключенный к антенне 42 и выполненный с возможностью декодировать кодированный битовый последовательность. Устройство 45 отображения выполнено с возможностью представлять видеокадры.In some examples, antenna 42 of video coding system 40 may be configured to receive an encoded video bit sequence. As discussed, the encoded bitstream may include data, indicators, index values, mode selection data, and the like associated with encoding a video frame as discussed herein, such as data associated with an encoding section (e.g., transform coefficients or quantized transform coefficients, possible indicators (as discussed) and/or data defining the coding section). Video coding system 40 may also include a video decoder 30 coupled to antenna 42 and configured to decode the encoded bit sequence. The display device 45 is configured to present video frames.

КОДЕР И СПОСОБ КОДИРОВАНИЯENCODER AND METHOD OF ENCODING

Фиг.2 показывает схематическую/концептуальную блок-схему примерного видеокодера 20, который выполнен с возможностью реализации способов настоящего раскрытия. В примере на фиг.2, видеокодер 20 содержит блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, блок 220 контурного фильтра, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 выбора режима. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.2 shows a schematic/conceptual block diagram of an exemplary video encoder 20 that is configured to implement the methods of the present disclosure. In the example of FIG. 2, video encoder 20 comprises a residual calculation block 204, a transform processing block 206, a quantization block 208, an inverse quantization block 210 and an inverse transform processing block 212, a reconstruction block 214, a buffer 216, a loop filter block 220, a decoded buffer 230 images (DPB), block 260 processing prediction and block 270 entropy coding. The prediction processing unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a mode select unit 262. Inter prediction block 244 may include a motion estimator and a motion compensation block (not shown). The video encoder 20 shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder according to a hybrid video codec.

Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой тракт сигнала кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания образуют обратный тракт прохождения сигнала кодера, в котором обратный тракт сигнала кодера соответствует тракту сигнала декодера (см. декодер 30 на фиг.3).For example, the residual calculation block 204, the transform processing block 206, the quantization block 208, the prediction processing block 260, and the entropy encoding block 270 form a direct signal path of the encoder 20, while, for example, the inverse quantization block 210, the inverse transform processing block 212, block 214 recovery buffer 216, loop filter 220, decoded picture buffer (DPB) 230, prediction processor 260 form an encoder reverse signal path, in which the encoder reverse signal path corresponds to the decoder signal path (see decoder 30 in FIG. 3).

Кодер 20 выполнен с возможностью принимать, например, посредством ввода 202 изображение 201 или блок 203 изображения 201, например, изображение последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения также может называться блоком текущего изображения или блоком изображения, подлежащим кодированию, и изображение 201 является текущим изображением или изображением, которое должно быть кодировано (в частности, при кодировании видео для различия текущего изображения от других изображений, например, ранее закодированных и/или декодированные изображения одной и той же видеопоследовательности, т.е. видеопоследовательности, которая также включает в себя текущее изображение).Encoder 20 is configured to receive, for example, via input 202, image 201 or block 203 of image 201, for example, an image of a sequence of images constituting a video or video sequence. Image block 203 may also be referred to as a current image block or an image block to be encoded, and image 201 is the current image or an image to be encoded (particularly when encoding a video to distinguish the current image from other images, such as previously encoded and/or or decoded pictures of the same video sequence, i.e. a video sequence that also includes the current picture).

РАЗДЕЛЕНИЕSEPARATION

Варианты осуществления кодера 20 могут содержать блок разделения (не показан на фиг. 2), выполненный с возможностью разделять изображение 201 на множество блоков, например блоки, подобные блоку 203, обычно на множество неперекрывающихся блоков. Блок разделения может быть выполнен с возможностью использовать один и тот же размер блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между изображениями или подмножествами, или группами изображений, и для разделения каждого изображения на соответствующие блоки.Embodiments of encoder 20 may include a splitter (not shown in FIG. 2) configured to split image 201 into multiple blocks, such as blocks like block 203, typically into multiple non-overlapping blocks. The dividing block may be configured to use the same block size for all images of the video sequence and the corresponding block size grid, or to change the block size between images or subsets or groups of images, and to divide each image into appropriate blocks.

В одном примере блок 260 обработки предсказания видеокодера 20 может быть выполнен с возможностью выполнять любую комбинацию способов разделения, описанных выше.In one example, prediction processor 260 of video encoder 20 may be configured to perform any combination of the partitioning methods described above.

Подобно изображению 201, блок 203 снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 201. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 201) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 201) или любое другое количество и/или вид массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203.Like image 201, block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples with intensity values (sample values), albeit smaller than image 201. In other words, block 203 may contain, for example, one array of samples (for example, a luminance array in the case of a monochrome image 201) or three sample arrays (eg, a luminance array and two chrominance arrays in the case of a color image 201) or any other number and/or type of arrays depending on the color format used. The number of samples in the horizontal and vertical direction (or axis) of block 203 determines the size of block 203.

Кодер 20, показанный на фиг.2, выполнен с возможностью кодирования изображения 201 блок за блоком, например, кодирование и предсказание выполняется для каждого блока 203.The encoder 20 shown in FIG. 2 is configured to encode the image 201 block by block, for example, encoding and prediction is performed for each block 203.

ВЫЧИСЛЕНИЕ ОСТАТОЧНОЙ ВЕЛИЧИНЫRESIDUAL CALCULATION

Блок 204 вычисления остатка выполнен с возможностью вычисления остаточного блока 205 на основании блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.The residual calculator 204 is configured to calculate the residual block 205 based on the image block 203 and the prediction block 265 (more details about the prediction block 265 are provided later), for example, by subtracting the sample values of the predictor 265 from the sample values of the image block 203, sample by sample. (pixel by pixel) to get the residual block 205 in the sample area.

ПРЕОБРАЗОВАНИЕTRANSFORMATION

Блок 206 обработки преобразования выполнен с возможностью применять преобразование, например, дискретное косинусное преобразование (DCT) или дискретное синусоидальное преобразование (DST) на выборочных значениях остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.The transform processing unit 206 is configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), on the sampled values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 may also be referred to as residual transform coefficients and represent the residual block 205 in the transform region.

Блок 206 обработки преобразования может быть выполнен с возможностью применять целочисленные аппроксимации DCT/DST, таких как преобразования, указанные для HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, применяются дополнительные коэффициенты масштабирования как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основании определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операции сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, блоком 212 обработки обратного преобразования в декодере 30 (и соответствующий обратному преобразованию, например, блоком 212 обработки обратного преобразования в кодере 20) и соответствующими коэффициентами масштабирования для прямого преобразования, например, блоком 206 обработки преобразования может быть определен кодер 20, соответственно.The transform processing unit 206 may be configured to apply DCT/DST integer approximations such as the transforms specified for HEVC/H.265. Compared to the orthogonal DCT, such integer approximations are usually scaled by a certain factor. To preserve the norm of the residual block that is processed by forward and backward transforms, additional scaling factors are applied as part of the transform process. The scaling factors are usually chosen based on certain constraints, such as scaling factors that are a power of two for the shift operation, the bit width of the transform coefficients, the trade-off between accuracy and implementation cost, and so on. Specific scaling factors are, for example, indicated for the inverse transform, for example, by the inverse transform processing block 212 in the decoder 30 (and corresponding to the inverse transform, for example, by the inverse transform processing block 212 in the encoder 20), and the corresponding scaling factors for the forward transform, for example, by block 206 conversion processing may be determined by the encoder 20, respectively.

КВАНТОВАНИЕQUANTIZATION

Блок 208 квантования выполнен с возможностью квантовать коэффициенты 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 преобразования также могут называться квантованными остаточными коэффициентами 209. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более точного или более грубого квантования. Меньшие размеры этапов квантования соответствуют более точному квантованию, тогда как большие размеры этапов квантования соответствуют более грубому квантованию. Применимый размер этапа квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заданного набора применимых размеров этапа квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры этапов квантования) и большие параметры квантования могут соответствовать грубому квантованию (большие размеры этапов квантования) или наоборот. Квантование может включать в себя деление по размеру этапа квантования и соответствующее или обратное деквантование, например, посредством обратного квантования 210, может включать в себя умножение на размер этапа квантования. Варианты осуществления согласно некоторым стандартам, например, HEVC может быть выполнен с возможностью использовать параметр квантования для определения размера этапа квантования. Как правило, размер этапа квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении фиксированной точки уравнения для размера этапа квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, в котором потери возрастают с увеличением размеров этапов квантования.Quantizer 208 is configured to quantize transform coefficients 207 to obtain quantized transform coefficients 209, for example by applying scalar quantization or vector quantization. The quantized transform coefficients 209 may also be referred to as quantized residual coefficients 209. The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The usable quantization step size may be indicated by a quantization parameter (QP). The quantization parameter may, for example, be an index to a given set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes) and large quantization parameters may correspond to coarse quantization (large quantization step sizes) or vice versa. Quantization may include dividing by the size of the quantization step and corresponding or inverse dequantization, for example by inverse quantization 210, may include multiplying by the size of the quantization step. Embodiments according to some standards, for example, HEVC may be configured to use a quantization parameter to determine the size of a quantization step. Typically, the quantization step size can be calculated based on the quantization parameter using a fixed-point approximation of an equation involving division. Additional scaling factors may be introduced for quantization and dequantization to recover the residual block rate, which may be changed due to the scaling used in the fixed-point approximation of the equation for quantization step size and quantization parameter. In one exemplary implementation, inverse transform scaling and dequantization may be combined. Alternatively, customized quantization tables can be used and signaled from the encoder to the decoder, for example, in a bitstream. Quantization is a lossy operation in which the loss increases as the size of the quantization steps increases.

Блок 210 обратного квантования выполнен с возможностью применять обратное квантование блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения схемы, обратной схемы квантования, применяемой блоком 208 квантования на основании или с использованием того же размера этапа квантования, как блок 208 квантования. Деквантованные коэффициенты 211 также могут называться деквантованными остаточными коэффициентами 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потерь при квантовании, коэффициентам 207 преобразования.The inverse quantizer 210 is configured to apply the inverse quantization of the quantizer 208 to the quantized coefficients to obtain the dequantized coefficients 211, for example, by applying a scheme inverse to the quantization scheme applied by the quantizer 208 based on or using the same quantization step size as the quantizer 208 quantization. The dequantized coefficients 211 may also be referred to as the dequantized residual coefficients 211 and correspond, although not usually identical to the transform coefficients due to quantization loss, to the transform coefficients 207.

Блок 212 обработки обратного преобразования выполнен с возможностью применять обратное преобразование блоком 206 обработки преобразования, например, обратное дискретное косинусное преобразование (DCT) или обратное дискретное синусоидальное преобразование (DST) для получения блока 213 обратного преобразования в области выборки. Блок 213 обратного преобразования может также называться блоком 213 деквантования обратного преобразования или остаточным блоком 213 обратного преобразования.The inverse transform processing unit 212 is configured to apply an inverse transform by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain an inverse transform block 213 in the sample area. The inverse transform block 213 may also be referred to as the inverse transform dequantization block 213 or the inverse transform residual block 213 .

Блок 214 восстановления (например, сумматор 214) выполнен с возможностью добавлять блок 213 обратного преобразования (т.е. восстановленный остаточный блок 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.Reconstructor 214 (eg, adder 214) is configured to add inverse transform block 213 (i.e., reconstructed residual block 213) to prediction block 265 to obtain reconstructed block 215 in the sample area, for example, by adding sample values of the reconstructed residual block 213 and the sample values of the predictor 265 .

Возможно, блок 216 буфера (или коротко «буфер» 216), например, строковый буфер 216 выполнен с возможностью буферизации или хранения восстановленного блока 215 и соответствующих значений выборок, например, для внутреннего предсказания. В дополнительных вариантах осуществления кодер может быть выполнен с возможностью использовать нефильтрованные восстановленные блоки и/или соответствующие значения выборок, хранящиеся в блоке 216 буфера, для любого вида оценки и/или предсказания, например, для внутреннего предсказания.Optionally, buffer block 216 (or "buffer" 216 for short), such as string buffer 216, is configured to buffer or store the reconstructed block 215 and corresponding sample values, such as for intra prediction. In further embodiments, the encoder may be configured to use the unfiltered reconstructed blocks and/or corresponding sample values stored in buffer block 216 for any kind of estimation and/or prediction, such as intra prediction.

Варианты осуществления кодера 20 могут быть выполнены с возможностью, например, использовать блок 216 буфера не только для хранения восстановленных блоков 215 для внутреннего предсказания 254, но также для блока 220 контурного фильтра (не показан на фиг.2) и/или, например, блок 216 буфера и блок 230 буфера декодированных изображений образуют один буфер. Дополнительные варианты осуществления могут быть выполнены с возможностью использовать отфильтрованные блоки 221 и/или блоки или выборки из буфера 230 декодированных изображений (оба не показаны на фиг.2) в качестве входных данных или для основы для внутреннего предсказания 254.Embodiments of encoder 20 may be configured to, for example, use buffer block 216 not only to store reconstructed blocks 215 for intra prediction 254, but also for loop filter block 220 (not shown in FIG. 2) and/or, for example, block The buffer 216 and the decoded picture buffer block 230 form one buffer. Additional embodiments may be configured to use filtered blocks 221 and/or blocks or samples from decoded picture buffer 230 (both not shown in FIG. 2) as input or as a basis for intra prediction 254.

Блок 220 контурного фильтра (или коротко «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения фильтрованного блока 221, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра предназначен для представления одного или более контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением (SAO) или другие фильтры, например, двусторонний фильтр или адаптивный контурный фильтр (ALF), или фильтры повышения резкости или сглаживания, или коллаборативные фильтры. Хотя блок 220 контурного фильтра показан на фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221. Буфер 230 декодированных изображений может хранить восстановленные блоки кодирования после того, как блок 220 контурного фильтра выполняет операции фильтрации на восстановленных блоках кодирования.The loop filter block 220 (or "loop filter" 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter block 220 is for representing one or more loop filters, such as a deblocking filter, an adaptive offset (SAO) filter, or other filters, such as a two-sided filter or an adaptive loop filter (ALF), or sharpening or smoothing filters, or collaborative filters. Although the loop filter block 220 is shown as a loop filter in FIG. 2, in other configurations, the loop filter block 220 may be implemented as a post loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221. Decoded picture buffer 230 may store reconstructed coding blocks after loop filter block 220 performs filtering operations on the reconstructed coding blocks.

Варианты осуществления кодера 20 (соответственно блок 220 контурного фильтра) могут быть выполнены с возможностью выводить параметры контурного фильтра (таких как информация об адаптивном смещении выборки), например, напрямую или энтропийно кодируемые блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра для декодирования.Embodiments of encoder 20 (respectively, loop filter block 220) may be configured to output loop filter parameters (such as adaptive sample offset information), for example, directly or entropy encoded by entropy encoding block 270 or any other entropy encoding block, such that, for example, decoder 30 may receive and apply the same loop filter parameters for decoding.

Буфер 230 декодированных изображений (DPB) может быть памятью опорных изображений, в котором хранятся данные опорных изображений для использования при кодировании видеоданных с помощью видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, например, динамическая память с произвольным доступом (DRAM), включающая в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. DPB 230 и буфер 216 могут быть предоставлены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В некотором примере буфер 230 декодированного изображения (DPB) выполнен с возможностью хранить фильтрованный блок 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранить другие ранее отфильтрованные блоки, например, ранее восстановленные и отфильтрованные блоки 221 одного и того же текущего изображения или разных изображений, например, ранее восстановленного изображения и могут предоставлять полные ранее восстановленные, то есть, декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. В некотором примере, если восстановленный блок 215 восстанавливается, но без внутриконтурной фильтрации, буфер 230 декодированных изображений (DPB) выполнен с возможностью хранить восстановленный блок 215.Decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data for use in encoding video data with video encoder 20. DPB 230 may be formed by any of a variety of memories, such as dynamic random access memory (DRAM) , including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. DPB 230 and buffer 216 may be provided by the same storage device or separate storage devices. In some example, the decoded picture buffer (DPB) 230 is configured to store the filtered block 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously restored and filtered blocks 221 of the same current image or different images, e.g., a previously reconstructed image, and may provide complete previously restored, i.e., decoded, images (and corresponding reference blocks and samples) and/or partially reconstructed current image (and corresponding reference blocks and samples), e.g., for inter prediction. In some example, if the reconstructed block 215 is reconstructed but without in-loop filtering, the decoded picture buffer (DPB) 230 is configured to store the reconstructed block 215.

Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, выполнен с возможностью принимать или получать блок 203 (текущий блок 203 текущего изображения 201) и данные восстановленного изображения, например, опорных выборок одного и того же (текущего) изображения из буфера 216 и/или данные 231 опорного изображения из одного или множества ранее декодированных изображений из буфера 230 декодированного изображения, и обрабатывать эти данные для предсказания, то есть, чтобы обеспечить блок 265 предсказания, который может быть блоком 245 внешнего предсказания или блоком 255 внутреннего предсказания.The prediction processing unit 260, also referred to as the block prediction processing unit 260, is configured to receive or obtain a block 203 (the current block 203 of the current image 201) and reconstructed image data, such as reference samples of the same (current) image from the buffer 216 and /or reference picture data 231 from one or a plurality of previously decoded pictures from decoded picture buffer 230, and process the data for prediction, that is, to provide a prediction block 265, which may be an inter prediction block 245 or an intra prediction block 255.

Блок 262 выбора режима может быть выполнен с возможностью выбирать режим предсказания (например, режим внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.Mode selector 262 may be configured to select a prediction mode (eg, intra or inter prediction mode) and/or a corresponding predictor 245 or 255 to be used as predictor 265 to calculate residual block 205 and to recover reconstructed block 215 .

Варианты осуществления блока 262 выбора режима могут быть выполнены с возможностью выбирать режим предсказания (например, из тех, которые поддерживаются блоком 260 обработки предсказания), который обеспечивает наилучшее соотношение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальный объем служебной сигнализации (минимальные служебные данные сигнализации означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 262 выбора режима может быть выполнен с возможностью определять режим предсказания на основании оптимизации искажения скорости (RDO), то есть, выбирать режим предсказания, который обеспечивает оптимизацию искажения с минимальной скоростью, или который ассоциирован с искажением скорости, по меньшей мере, для удовлетворения критерия выбора режима предсказания.Embodiments of mode selector 262 may be configured to select a prediction mode (e.g., from those supported by prediction processing block 260) that provides the best ratio or, in other words, minimum residual (minimum residual means better compression for transmission or storage) , or minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which takes into account or balances both. The mode selector 262 may be configured to determine a prediction mode based on rate distortion optimization (RDO), that is, select a prediction mode that provides minimum rate distortion optimization, or that is associated with rate distortion to at least satisfy the criterion select the prediction mode.

Далее будет приведено подробное описание процесса обработки предсказания (например, блок 260 обработки предсказания и выбор режима (например, блоком 262 выбора режима)), выполняемый примерным кодером 20.Next, a detailed description will be given of the prediction processing process (eg, prediction processing unit 260 and mode selection (eg, mode selection unit 262)) performed by the exemplary encoder 20.

Как описано выше, кодер 20 выполнен с возможностью определять или выбирать наилучший или оптимальный режим предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.As described above, encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (predetermined) prediction modes. The set of prediction modes may include, for example, intra prediction modes and/or inter prediction modes.

Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или средний) и планарный режим, или направленные режимы, например, как определено в H.265, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или средний) и планарный режим, или направленные режимы, например, как определено в H.266 на стадии разработки.The intra prediction mode set may contain 35 different intra prediction modes, such as non-directional modes such as DC (or average) mode and planar mode, or directional modes such as defined in H.265, or may contain 67 different intra prediction modes , for example, non-directional modes such as DC (or medium) mode and planar mode, or directional modes, for example, as defined in H.266 at the development stage.

Набор (или возможные) режимов внешнего предсказания зависит от доступных опорных изображений (т.е. предшествующих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например, будь то все опорное изображение или только его часть, например, область окна поиска вокруг области текущего блока, опорного изображения используется для поиска наилучшего соответствия опорного блока и/или, например, применяется ли интерполяция пикселей, например половина/полу-пиксельная и/или четверть-пиксельная интерполяция или нет.The set (or possible) inter prediction modes depends on the available reference pictures (i.e., previous at least partially decoded pictures, such as those stored in DBP 230) and other inter prediction parameters, such as whether it is the entire reference picture or only its part, for example, the area of the search box around the area of the current block, the reference image is used to find the best match of the reference block and/or, for example, whether pixel interpolation is applied, such as half/half-pixel and/or quarter-pixel interpolation or not.

В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.In addition to the aforementioned prediction modes, a skip mode and/or a direct mode may be applied.

Блок 260 обработки предсказания может быть дополнительно выполнен с возможностью разделять блок 203 на более мелкие части или подблоки, например, итеративно с использованием четырехъядерного разделения (QT), двоичного разделения (BT) или тройного разделения дерева (TT) или любой их комбинации, и для выполнения, например, предсказания для каждого из разделов или подблоков блока, в котором выбор режима включает в себя выбор древовидной структуры разделенного блока 203 и режимов предсказания, применяемых к каждому из разделов или подблоков блока.Prediction processing unit 260 may be further configured to partition block 203 into smaller chunks or subblocks, for example, iteratively using quad split (QT), binary split (BT), or triple tree split (TT), or any combination thereof, and for performing, for example, prediction for each of the partitions or subblocks of the block, wherein the mode selection includes selecting the tree structure of the partitioned block 203 and the prediction modes applied to each of the partitions or subblocks of the block.

Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) (не показан на фиг.2) и блок компенсации движения (MC) (не показан на фиг.2). Блок оценки движения выполнен с возможностью принимать или получать блок 203 изображения (блок 203 текущего изображения текущего изображения 201) и декодированного изображения 231 или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленные блоки одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например. видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.Inter prediction block 244 may include a motion estimator (ME) (not shown in FIG. 2) and a motion compensation (MC) block (not shown in FIG. 2). The motion estimator is configured to receive or obtain an image block 203 (current image block 203 of the current image 201) and a decoded image 231 or at least one or a plurality of previously reconstructed blocks, e.g., reconstructed blocks of one or a plurality of other/different previously decoded 231 images for motion estimation. For example. the video sequence may comprise the current picture and previously decoded pictures 231 or, in other words, the current picture and previously decoded pictures 231 may be part of or form a sequence of pictures that make up the video sequence.

Кодер 20 может, например, быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одинаковых или различных изображений из множества других изображений и обеспечивать опорное изображение (или индекс опорного кадра, ...) и/или смещение (пространственное смещение) между позицией (X, Y координаты) опорного блока и позицией текущего блока в качестве взаимосвязанных параметров предсказания в блок оценки движения (не показан на фиг.2). Это смещение также называется вектором движения (MV).The encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different pictures from a plurality of other pictures and provide a reference picture (or reference frame index, ...) and/or an offset (spatial offset) between position ( X, Y coordinates) of the reference block and the position of the current block as related prediction parameters to the motion estimation block (not shown in FIG. 2). This displacement is also called motion vector (MV).

Блок компенсации движения выполнен с возможностью получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основании или с использованием параметра внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения (не показанным на фиг.2), может включать в себя выборку или генерацию блока предсказания на основании вектора движения/блока, определенного посредством оценки движения, возможно, выполнять интерполяцию до суб-пиксельной точности. Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей, таким образом, потенциально увеличивая количество кандидатов блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок 246 компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Блок 246 компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками и сегментом видео, для использования видеодекодером 30 при декодировании блоков изображения сегмента видео.The motion compensation block is configured to obtain, for example, receive an inter prediction parameter and perform inter prediction based on or using the inter prediction parameter to obtain inter prediction block 245 . Motion compensation performed by a motion compensator (not shown in FIG. 2) may include sampling or generating a prediction block based on a motion vector/block determined by motion estimation, possibly interpolating to sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thus potentially increasing the number of prediction block candidates that can be used to encode an image block. After receiving the motion vector for the PU of the current picture block, the motion compensator 246 may locate the prediction block pointed to by the motion vector in one of the reference picture lists. Motion compensator 246 may also generate syntax elements associated with blocks and a video segment for use by video decoder 30 when decoding image blocks of a video segment.

Блок 254 внутреннего предсказания выполнен с возможностью получать, например, принимать, блок 203 изображения (текущий блок изображения) и один или множество ранее восстановленных блоков, например, восстановленные соседние блоки одного и того же изображения для внутренней оценки. Кодер 20 может, например, быть выполнен с возможностью выбирать режим внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.The intra prediction block 254 is configured to receive, for example, an image block 203 (the current image block) and one or a plurality of previously reconstructed blocks, such as reconstructed neighboring blocks of the same image, for intra estimation. Encoder 20 may, for example, be configured to select an intra prediction mode from a plurality of (predetermined) intra prediction modes.

Варианты осуществления кодера 20 могут быть выполнены с возможностью выбирать режим внутреннего предсказания на основании критерия оптимизации, например, минимальный остаток (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, наиболее похожий на текущий блок 203 изображения) или минимальное отношение искажение-скорость.Embodiments of the encoder 20 may be configured to select an intra prediction mode based on an optimization criterion, such as a minimum residual (eg, an intra prediction mode providing a prediction block 255 most similar to the current picture block 203) or a minimum distortion-rate ratio.

Блок 254 внутреннего предсказания дополнительно выполнен с возможностью определять на основании параметра внутреннего предсказания, например, выбранный режим внутреннего предсказания, блок 255 внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания для блока, блок 254 внутреннего предсказания также выполнен с возможностью предоставлять параметр внутреннего предсказания, то есть, информацию, указывающую выбранный режим внутреннего предсказания для блока в блок 270 энтропийного кодирования. В одном примере блок 254 внутреннего предсказания может быть выполнен с возможностью выполнять любую комбинацию способов внутреннего предсказания, описанных ниже.The intra prediction block 254 is further configured to determine, based on the intra prediction parameter, for example, the selected intra prediction mode, the intra prediction block 255 . In any case, after selecting the intra prediction mode for the block, the intra prediction block 254 is also configured to provide an intra prediction parameter, that is, information indicating the selected intra prediction mode for the block, to the entropy encoding block 270 . In one example, intra predictor 254 may be configured to perform any combination of the intra prediction methods described below.

Блок 270 энтропийного кодирования выполнен с возможностью применять алгоритм или схему энтропийного кодирования (например, схема кодирования с переменной длиной (VLC), контекстно-адаптивная схема VLC (CALVC), схема арифметического кодирования, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанное на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийное кодирование с вероятностным интервалом разделения (PIPE) или другой способ или способ энтропийного кодирования) к квантованным остаточным коэффициентам 209, параметры внешнего предсказания, параметр внутреннего предсказания и/или параметры контурного фильтра, по отдельности или вместе (или не полностью) для получения данных 21 закодированного изображения, которые могут быть выведены выходом 272, например, в форме закодированного битового потока 21. Закодированный битовый поток 21 может быть передан в видеодекодер 30 или заархивирован для последующей передачи или поиска видеодекодером 30. Блок 270 энтропийного кодирования может быть дополнительно выполнен с возможностью энтропийного кодирования других элементов синтаксиса для кодируемого текущего сегмента видео.The entropy encoding unit 270 is configured to apply an entropy encoding algorithm or scheme (e.g., variable length coding (VLC) scheme, context adaptive VLC scheme (CALVC), arithmetic coding scheme, context adaptive binary arithmetic coding (CABAC) based on context adaptive binary arithmetic coding (SBAC), probabilistic separation interval entropy (PIPE), or other entropy encoding method or method) to quantized residual coefficients 209, inter prediction parameters, intra prediction parameter, and/or loop filter parameters, individually or together (or incompletely) to obtain encoded picture data 21 that can be output by output 272, for example, in the form of an encoded bitstream 21. The encoded bitstream 21 can be transmitted to video decoder 30 or archived for later transmission or retrieval as decoder 30. Entropy encoding unit 270 may be further configured to entropy encode other syntax elements for the current video segment being coded.

Другие структурные варианты видеокодера 20 могут использоваться для кодирования потока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в один блок.Other structural variants of video encoder 20 may be used to encode the stream. For example, non-transform-based encoder 20 may quantize the residual signal directly without transform processing unit 206 for certain blocks or frames. In another implementation, encoder 20 may have quantizer 208 and inverse quantizer 210 combined into one block.

Фиг.3 показывает примерный видеодекодер 30, который выполнен с возможностью реализации способов настоящего раскрытия. Видеодекодер 30, выполненный с возможностью принимать кодированные данные 21 изображения (например, кодированный битовый последовательность), например, кодируется кодером 100, чтобы получить декодированное изображение 131. Во время процесса декодирования видеодекодер 30 принимает видеоданные, например, закодированный битовый последовательность видео, который представляет блоки изображения кодированного сегмента видео и ассоциированные элементы синтаксиса, из видеокодера 100.3 shows an exemplary video decoder 30 that is configured to implement the methods of the present disclosure. Video decoder 30, configured to receive encoded image data 21 (e.g., encoded bit sequence), for example, is encoded by encoder 100 to obtain decoded image 131. During the decoding process, video decoder 30 receives video data, for example, encoded video bit sequence, which represents blocks encoded video segment images and associated syntax elements, from video encoder 100.

В примере на фиг.3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированных изображений и блок 360 обработки предсказания. Блок 360 обработки предсказания может включать в себя блок 344 внешнего предсказания, блок 354 внутреннего предсказания и блок 362 выбора режима. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в целом, обратный к этапу кодирования, описанный применительно к видеокодеру 100 на фиг.2.In the example of FIG. 3, the decoder 30 includes an entropy decoding block 304, an inverse quantization block 310, an inverse transform processing block 312, a reconstruction block 314 (e.g., adder 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a block 360 prediction processing. The prediction processing block 360 may include an inter prediction block 344, an intra prediction block 354, and a mode selection block 362. Video decoder 30 may, in some examples, perform a decoding pass that is generally the reverse of the encoding step described with respect to video encoder 100 in FIG.

Блок 304 энтропийного декодирования выполнен с возможностью выполнять энтропийное декодирование кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг.3), например, (декодированный) любой или все параметры внешнего предсказания, параметр внутреннего предсказания, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования дополнительно выполнен с возможностью пересылать параметры внешнего предсказания, параметр внутреннего предсказания и/или другие элементы синтаксиса в блок 360 обработки предсказания. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне блока видео.The entropy decoding unit 304 is configured to perform entropy decoding of the encoded image data 21 to obtain, for example, quantized coefficients 309 and/or decoded coding parameters (not shown in FIG. 3), such as (decoded) any or all inter prediction parameters, parameter intra prediction, loop filter parameters, and/or other syntax elements. The entropy decoding block 304 is further configured to forward the inter prediction parameters, the intra prediction parameter, and/or other syntax elements to the prediction processing block 360 . Video decoder 30 may receive syntax elements at a video segment level and/or a video block level.

Блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичным по функциям блоку 112 обработки обратного преобразования, блок 314 восстановления может быть идентичным по функциям блоку 114 восстановления, буфер 316 может быть идентичен по функциям буферу 116, контурный фильтр 320 может быть идентичен по функции контурному фильтру 120 и буфер 330 декодированного изображения может быть идентичен по функции буферу 130 декодированного изображения.Inverse quantizer 310 may be identical in function to inverse quantizer 110, inverse transform processor 312 may be identical in function to inverse transform processor 112, restorer 314 may be identical in function to restorer 114, buffer 316 may be identical in function to buffer 116, loop filter 320 may be identical in function to loop filter 120, and decoded image buffer 330 may be identical in function to decoded image buffer 130.

Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания и блок 354 внутреннего предсказания, в котором блок 344 внешнего предсказания может быть аналогичен по функционалу блоку 144 внешнего предсказания, блок 354 внутреннего предсказания может быть аналогичен по функционалу блоку 154 внутреннего предсказания. Блок 360 обработки предсказания обычно выполнен с возможностью выполнять предсказание блока и/или получения блока 365 предсказания из закодированных данных 21, и принимать или получать (явно или неявно) ассоциированные с предсказанием параметры и/или информацию о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.Prediction processing block 360 may comprise inter prediction block 344 and intra prediction block 354, in which inter prediction block 344 may be similar in functionality to inter prediction block 144, intra prediction block 354 may be similar in functionality to intra prediction block 154. Prediction processing unit 360 is typically configured to perform block prediction and/or obtain prediction block 365 from encoded data 21, and receive or obtain (explicitly or implicitly) prediction-associated parameters and/or selected prediction mode information, for example, from block 304 entropy decoding.

Когда сегмент видео кодируется как внутренне кодированный (I) сегмент, блок 354 внутреннего предсказания блока 360 обработки предсказания выполнен с возможностью генерировать блок 365 предсказания для блока изображения текущего сегмента видео на основании сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется как внешне кодированный (то есть, B или P) сегмент, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 обработки предсказания выполнен с возможностью генерировать блоки 365 предсказания для блока видео текущего сегмента видео на основании векторов движения и других элементов синтаксиса, принятых из блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть сгенерированы из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может формировать списки опорных кадров, список 0 и список 1, используя способы составления по умолчанию на основании опорных изображений, хранящихся в DPB 330.When a video segment is encoded as an intra-coded (I) segment, the intra prediction block 354 of the prediction processing block 360 is configured to generate a prediction block 365 for a picture block of the current video segment based on the signaled intra prediction mode and data from previously decoded blocks of the current frame or picture. When a video frame is encoded as an inter-coded (i.e., B or P) segment, the inter prediction block 344 (e.g., motion compensation block) of the prediction processing block 360 is configured to generate prediction blocks 365 for the video block of the current video segment based on the motion vectors and others. syntax elements received from block 304 entropy decoding. For inter prediction, prediction blocks may be generated from one of the reference pictures in one of the reference picture lists. Video decoder 30 may generate reference frame lists, list 0 and list 1, using default composition methods based on reference pictures stored in DPB 330.

Блок 360 обработки предсказания выполнен с возможностью определять информацию предсказания для блока видео текущего сегмента видео путем анализа векторов движения и других элементов синтаксиса и использовать информацию предсказания для генерирования блоков предсказания для текущего декодируемого блока видео. Например, блок 360 обработки предсказания использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования блоков видео сегмента видео, типа сегмента внешнего предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информацию составления одного или более списков опорных изображений для сегмента, векторы движения для каждого внешне кодированного блока видео сегмента, статус внешнего предсказания для каждого внешне кодированного блока видео сегмента и другую информацию для декодирования блоков видео в текущем сегмента видео.The prediction processing unit 360 is configured to determine prediction information for the video block of the current video segment by analyzing motion vectors and other syntax elements, and use the prediction information to generate prediction blocks for the current video block being decoded. For example, prediction processing unit 360 uses some of the received syntax elements to determine the prediction mode (eg, intra or inter prediction) used to encode the video blocks of a video segment, the inter prediction segment type (eg, B-segment, P-segment, or GPB- segment), one or more reference picture listing information for the segment, motion vectors for each inter-coded video block of the segment, inter-prediction status for each externally-coded video block of the segment, and other information for decoding video blocks in the current video segment.

Блок 310 обратного квантования выполнен с возможностью выполнять обратное квантование, то есть, деквантование квантованных коэффициентов преобразования, предоставленных в битовом потоке и декодированных блоком 304 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 100 для каждого блока видео в сегменте видео для определения степени квантования и, аналогично, степени обратного квантования, которое должно применяться.The inverse quantizer 310 is configured to perform inverse quantization, that is, dequantization of the quantized transform coefficients provided in the bitstream and decoded by the entropy decoder 304 . The inverse quantization process may include using a quantization parameter calculated by video encoder 100 for each video block in a video segment to determine the amount of quantization, and likewise, the amount of inverse quantization to be applied.

Блок 312 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования для генерирования остаточных блоков в области пикселей.The inverse transform processing unit 312 is configured to apply an inverse transform, such as an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to generate residual blocks in the pixel region.

Блок 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять блок 313 обратного преобразования (т.е. восстановленный остаточный блок 313) к блоку 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.Reconstructor 314 (eg, adder 314) is configured to add inverse transform block 313 (i.e., reconstructed residual block 313) to prediction block 365 to obtain reconstructed block 315 in the sample area, for example, by adding sample values of reconstructed residual block 313 and values of the samples block 365 prediction.

Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например для сглаживания переходов пикселей или иного улучшения качества видео. В одном примере блок 320 контурного фильтра может быть выполнен с возможностью выполнять любую комбинацию способов фильтрации, описанных ниже. Блок 320 контурного фильтра предназначен для представления одного или более контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением (SAO) или другие фильтры, например, двусторонний фильтр или адаптивный контурный фильтр (ALF), или фильтры повышения резкости или сглаживания, или коллаборативные фильтры. Хотя блок 320 контурного фильтра показан на фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.The loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, such as to smooth pixel transitions or otherwise improve video quality. In one example, the loop filter unit 320 may be configured to perform any combination of the filtering methods described below. The loop filter block 320 is designed to represent one or more loop filters, such as a deblocking filter, an adaptive offset (SAO) filter, or other filters, such as a two-sided filter or an adaptive loop filter (ALF), or sharpening or anti-aliasing filters, or collaborative filters. Although the loop filter block 320 is shown in FIG. 3 as a loop filter, in other configurations, the loop filter block 320 may be implemented as a post loop filter.

Декодированные блоки 321 видео в данном кадре или изображении затем сохраняются в буфере 330 декодированных изображений, в котором хранятся опорные изображения, используемые для последующей компенсации движения.The decoded video blocks 321 in a given frame or picture are then stored in the decoded picture buffer 330, which stores reference pictures used for subsequent motion compensation.

Декодер 30 выполнен с возможностью выводить декодированное изображение 311, например, через выход 312 для представления или просмотра пользователю.The decoder 30 is configured to output the decoded image 311, for example, through the output 312 for presentation or viewing to the user.

Другие варианты видеодекодера 30 могут использоваться для декодирования сжатого битового потока. Например, декодер 30 может формировать выходной видеопоследовательность без блока 320 контурной фильтрации. Например, декодер 30 без преобразования может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other variants of video decoder 30 may be used to decode the compressed bitstream. For example, decoder 30 may generate an output video sequence without loop filter block 320 . For example, the non-transform decoder 30 may perform inverse quantization of the residual signal directly without the inverse transform processing unit 312 for certain blocks or frames. In another implementation, video decoder 30 may have an inverse quantizer 310 and an inverse transform processor 312 combined into one block.

Фиг.4 является схемой устройства 400 кодирования видео согласно варианту осуществления настоящего раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг.1A или кодер, такой как видеокодер 20 по фиг.1А. В варианте осуществления устройство 400 кодирования видео может быть одним или более компонентами видеодекодера 30 по фиг.1A или видеокодера 20 по фиг. 1A, как описано выше.4 is a diagram of a video encoding apparatus 400 according to an embodiment of the present disclosure. The video encoding device 400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, video encoding device 400 may be a decoder, such as video decoder 30 of FIG. 1A, or an encoder, such as video encoder 20 of FIG. 1A. In an embodiment, video encoding device 400 may be one or more components of video decoder 30 of FIG. 1A or video encoder 20 of FIG. 1A as described above.

Устройство 400 кодирования видео содержит входные порты 410 и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и выходные порты 450 для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео может также содержать оптико-электрические (OE) компоненты и электрические-оптические (EO) компоненты, подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для вывода или ввода оптических или электрических сигналов.The video encoding device 400 includes input ports 410 and receiver (Rx) units 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmitter (Tx) blocks 440 and data output ports 450; and a memory 460 for storing data. The video encoder 400 may also include optical-electrical (OE) components and electrical-optical (EO) components connected to input ports 410, receiver units 420, transmitter units 440, and output ports 450 for outputting or inputting optical or electrical signals.

Процессор 430 реализован аппаратным и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 соединен с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные операции кодирования. Таким образом, использование модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.Processor 430 is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, as a multi-core processor), FPGA, ASIC, and DSP. Processor 430 is connected to input ports 410, receiver units 420, transmitter units 440, output ports 450, and memory 460. Processor 430 includes an encoding module 470. Encoding module 470 implements the disclosed embodiments described above. For example, encoding module 470 implements, processes, prepares, or provides various encoding operations. Thus, the use of the encoding module 470 provides a significant improvement in the functionality of the video encoding device 400 and allows the video encoding device 400 to be converted to a different state. Alternatively, encoding module 470 is implemented as instructions stored in memory 460 and executed by processor 430.

Память 460 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве запоминающего устройства для переполнения данных, для хранения программ, когда такие программы выбраны для выполнения, а также для хранения инструкций и данных, которые читаются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM).Memory 460 includes one or more disks, tape drives, and solid state drives and can be used as a storage device for overflowing data, for storing programs when such programs are selected for execution, and for storing instructions and data that are read during program execution. Memory 460 may be volatile and/or non-volatile and may be read only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and/or static random access memory (SRAM).

Фиг.5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства 310 источника и устройство 320 назначения по фиг.1 согласно примерному варианту осуществления. Устройство 500 может реализовывать описанные выше технологии настоящего раскрытия. Устройство 500 может быть в форме вычислительной системы, включающей в себя несколько вычислительных устройств, или в форме одного вычислительного устройства, например, мобильного телефона, планшетного компьютера, портативного компьютера, портативного компьютера, настольного компьютера и тому подобное.FIG. 5 is a simplified block diagram of a device 500 that can be used as one or both of source device 310 and destination device 320 of FIG. 1 according to an exemplary embodiment. Device 500 may implement the technologies of the present disclosure described above. Device 500 may be in the form of a computing system including multiple computing devices, or in the form of a single computing device such as a mobile phone, tablet computer, laptop computer, laptop computer, desktop computer, and the like.

Процессор 502 в устройстве 500 может быть центральным процессором. Альтернативно, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например, с процессором 502, с использованием более чем одного процессора могут быть достигнуты преимущества в скорости и эффективности.Processor 502 in device 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device or a plurality of devices capable of manipulating or processing information that currently exists or will be developed in the future. While the disclosed implementations may be implemented with a single processor, as shown for example with processor 502, speed and efficiency advantages may be achieved using more than one processor.

Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя, по меньшей мере, одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы. Устройство 500 также может включать в себя дополнительную память в виде вторичного хранилища 514, которым может быть, например, карта памяти, используемая с мобильным вычислительным устройством. Поскольку сеансы видеосвязи могут содержать значительный объем информации, они могут быть сохранены полностью или частично во вторичном хранилище 514 и загружены в память 504 по мере необходимости для обработки.Memory 504 in device 500 may be read only memory (ROM) or random access memory (RAM) in an implementation. The memory 504 may be any other suitable type of storage device. Memory 504 may include code and data 506 accessed by processor 502 using bus 512. Memory 504 may further include an operating system 508 and application programs 510, application programs 510 include at least one program, which allows the processor 502 to perform the methods described here. For example, application programs 510 may include applications 1 through N, which further include a video encoding application that performs the methods described herein. Device 500 may also include additional memory in the form of secondary storage 514, which may be, for example, a memory card used with a mobile computing device. Because video communications may contain a significant amount of information, they may be stored in whole or in part in secondary storage 514 and loaded into memory 504 as needed for processing.

Устройство 500 также может включать в себя одно или более устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который сочетает в себе дисплей с сенсорным элементом, способным распознавать прикосновения. Дисплей 518 может быть подключен к процессору 502 через шину 512. Другие устройства вывода, которые позволяют пользователю программировать или иным образом использовать устройство 500, могут быть предоставлены в дополнение к дисплею 518 или в качестве альтернативы ему. Когда устройство вывода работает или включает в себя дисплей, дисплей может быть реализован различными способами, в том числе с помощью жидкокристаллического дисплея (LCD), дисплея с электронно-лучевой трубкой (CRT), плазменного дисплея или дисплея на светоизлучающих диодах (LED), например, органический светодиодный дисплей (OLED).The device 500 may also include one or more output devices such as a display 518. The display 518 may be, in one example, a touch display that combines a display with a touch element capable of sensing touch. Display 518 may be connected to processor 502 via bus 512. Other output devices that allow a user to program or otherwise use device 500 may be provided in addition to or as an alternative to display 518. When the output device is operating or includes a display, the display may be implemented in various ways, including liquid crystal display (LCD), cathode ray tube (CRT) display, plasma display, or light emitting diode (LED) display, for example , organic light-emitting diode display (OLED).

Устройство 500 также может включать в себя устройство 520 формирования изображений, например, камеру, или любое другое устройство 520 формирования изображений, существующее в настоящее время или разработанное в будущем, которое может воспринимать изображение, такое как изображение пользователя устройства 500. Устройство 520 формирования изображений может быть расположено так, чтобы оно было направлено на пользователя, работающего с устройством 500. В примере положение и оптическая ось устройства 520 формирования изображений могут быть сконфигурированы таким образом, что поле зрения включает в себя область, которая непосредственно примыкает к дисплею 518 и из которой виден дисплей 518.The device 500 may also include an imaging device 520, such as a camera, or any other imaging device 520, currently existing or developed in the future, that can capture an image, such as an image of a user of the device 500. The imaging device 520 may be positioned so that it is directed towards the user operating the device 500. In an example, the position and optical axis of the imaging device 520 may be configured such that the field of view includes an area that is immediately adjacent to the display 518 and from which the display 518.

Устройство 500 может также включать в себя устройство 522 обнаружения звука, например, микрофон, или любое другое устройство обнаружения звука, существующее в настоящее время или разработанное в дальнейшем, которое может воспринимать звуки вблизи устройства 500. Устройство 522 обнаружения звука может быть расположено таким образом, чтобы оно было направлено на пользователя, управляющего устройством 500, и может быть выполнено с возможностью принимать звуки, например, речь или другие звуки, издаваемые пользователем, когда пользователь управляет устройством 500.The device 500 may also include a sound detection device 522, such as a microphone, or any other sound detection device now or later developed that can sense sounds in the vicinity of the device 500. The sound detection device 522 may be positioned such that so that it is directed towards the user operating the device 500 and may be configured to receive sounds, such as speech or other sounds made by the user when the user is operating the device 500.

Хотя фиг.5 изображает процессор 502 и память 504 устройства 500 как интегрированные в единый блок, можно использовать другие конфигурации. Операции процессора 502 могут быть распределены между несколькими машинами (каждая машина имеет один или более процессоров), которые могут быть соединены напрямую или через локальную область или другую сеть. Память 504 может быть распределена между несколькими машинами, такими как сетевая память или память на нескольких машинах, выполняющих операции устройства 500. Хотя здесь изображена одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или более блоков, таких как несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.Although FIG. 5 depicts processor 502 and memory 504 of device 500 as integrated into a single unit, other configurations may be used. The operations of processor 502 may be distributed across multiple machines (each machine having one or more processors), which may be connected directly or through a local area or other network. Memory 504 may be distributed across multiple machines, such as network memory or memory on multiple machines performing device 500 operations. Although a single bus is shown here, device 500 bus 512 may be comprised of multiple buses. In addition, secondary storage 514 may be directly connected to other components of the device 500 or may be accessed via a network and may contain one integrated unit, such as a memory card, or more units, such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.

В VVC векторы движения внешне кодированных блоков могут передаваться двумя способами: в усовершенствованном режиме предсказания вектора движения (AMVP) или в режиме слияния. В режиме AVMP сигнализируют разницу между реальным вектором движения и вектором движения предсказания (MVP), опорный индекс и индекс MVP, относящийся к списку кандидатов AVMP, где опорный индекс указывает опорное изображение, где опорный блок скопирован для компенсации движения. Для режима слияния указывается индекс слияния, относящийся к списку кандидатов на слияние, и используется вся информация движения, ассоциированная с кандидатом на слияние.In VVC, motion vectors of outer-coded blocks can be transmitted in two ways: in advanced motion vector prediction (AMVP) mode or in merge mode. In the AVMP mode, the difference between the real motion vector and the prediction motion vector (MVP), the reference index and the MVP index related to the AVMP candidate list are signaled, where the reference index indicates the reference picture where the reference block is copied for motion compensation. For the merge mode, a merge index related to the merge candidate list is specified, and all traffic information associated with the merge candidate is used.

Как список кандидатов AMVP, так и список кандидатов на слияние получены из временных или пространственных соседних кодированных блоков. В частности, список кандидатов на слияние составлен путем проверки следующих четырех типов MVP кандидатов слияния в следующем порядке:Both the AMVP candidate list and the merge candidate list are derived from temporal or spatial adjacent code blocks. Specifically, the list of merger candidates is compiled by checking the following four MVP types of merger candidates in the following order:

1. Пространственные кандидаты слияния, которые могут быть определены из пяти пространственных соседних блоков, как показано на фиг.6, то есть, блоки A0 и A1, расположенные в левом нижнем углу, блоки B0 и B1, расположенные в правом верхнем углу, и блок B2, расположенный в левом верхнем углу.1. Spatial merge candidates that can be determined from five spatial neighboring blocks as shown in Fig. 6, that is, blocks A0 and A1 located in the lower left corner, blocks B0 and B1 located in the upper right corner, and B2, located in the upper left corner.

2. Временной MVP (TMVP) кандидат слияния.2. Interim MVP (TMVP) merge candidate.

3. Комбинированные кандидаты слияния с двунаправленным предсказанием.3. Combined Merge Candidates with Bidirectional Prediction.

4. Кандидаты слияния с нулевым вектором движения.4. Merge candidates with zero motion vector.

Как только количество доступных кандидатов слияния достигает сигнализируемые максимально разрешенные кандидаты слияния (например, 5 в обычных условиях тестирования), процесс составления списка кандидатов слияния заканчивается. Следует отметить, что максимально допустимые кандидаты слияния могут быть разными в разных условиях.Once the number of available merge candidates reaches the signaled maximum allowed merge candidates (eg, 5 under normal testing conditions), the merge candidate listing process ends. It should be noted that the maximum allowable merger candidates may be different under different conditions.

Аналогичным образом, для списка кандидатов AMVP проверяются три типа кандидатов MVP в следующем порядке:Similarly, for a list of AMVP candidates, three types of MVP candidates are tested in the following order:

1. До двух пространственных кандидатов MVP, где один из двух определяется из блоков B0, B1 и B2, как показано на фиг.6, и другой из двух определяется из блоков A0 и A1, как показано на фиг.6.1. Up to two spatial MVP candidates, where one of the two is determined from blocks B0, B1 and B2 as shown in FIG. 6 and the other of the two is determined from blocks A0 and A1 as shown in FIG.

2. Временные MVP (TMVP) кандидаты.2. Temporary MVP (TMVP) candidates.

3. Нулевые MVP кандидаты.3. Zero MVP candidates.

В JVET-K0104 представлен способ предсказания вектора движения на основании исторических данных (HMVP), который является входным документом для Объединенной группы экспертов по видео (JVET) ITU-T SG 16 WP 3 ISO/IEC JTC 1/SC 29/WG 11 (доступно на http://phenix.it-sudparis.eu/jvet/), где кандидат HMVP определяется как информация движения ранее закодированного блока. В процессе кодирования/декодирования поддерживается таблица с несколькими кандидатами HMVP. При обнаружении нового сегмента таблица очищается. Всякий раз, при наличии блока внешнего кодирования, добавляется ассоциированная информация движения к последней записи таблицы в качестве нового кандидата HMVP. Общий последовательность кодирования изображен на фиг.7, который включает в себя:JVET-K0104 introduces a Historical Motion Vector Prediction (HMVP) method, which is an input document for the Joint Video Experts Group (JVET) ITU-T SG 16 WP 3 ISO/IEC JTC 1/SC 29/WG 11 (Available at http://phenix.it-sudparis.eu/jvet/), where the HMVP candidate is defined as the motion information of the previously encoded block. A multi-candidate HMVP table is maintained during the encoding/decoding process. When a new segment is found, the table is cleared. Whenever there is an outer coding block, the associated motion information is added to the last table entry as a new HMVP candidate. The general encoding sequence is depicted in Fig. 7, which includes:

Этап 701-загрузить таблицу с кандидатами HMVP;Step 701 - Download HMVP Candidate Table;

Этап 702-декодировать блок с кандидатами HMVP в загруженной таблице;Step 702 - Decode block with HMVP candidates in loaded table;

Этап 703-обновить таблицу с помощью декодированной информации движения при декодировании блока.Step 703 - Update the table with the decoded motion information when decoding the block.

Этапы 701-703 могут выполняться циклически.Steps 701-703 may be performed cyclically.

Кандидаты HMVP могут использоваться в процессе составления списка кандидатов слияния. Все кандидаты HMVP от последней записи до первой записи в таблице вставляются после кандидата TMVP. К кандидатам HMVP может применяться обрезка. Когда общее количество доступных кандидатов слияния достигает сигнализированного максимально разрешенного количества кандидатов слияния, процесс составления списка кандидатов слияния завершается.HMVP candidates can be used in the merger candidate listing process. All HMVP candidates from the last entry to the first entry in the table are inserted after the TMVP candidate. Pruning may be applied to HMVP candidates. When the total number of available merge candidates reaches the signaled maximum allowed number of merge candidates, the merge candidate listing process ends.

Операция сокращения предназначена для идентификации идентичных кандидатов предиктора движения в списке и удаления одного из идентичных кандидатов из списка.The pruning operation is for identifying identical motion predictor candidates in the list and removing one of the identical candidates from the list.

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

Для повышения эффективности обработки введена обработка, называемая параллельной обработкой волнового фронта (WPP), где режим WPP позволяет обрабатывать строки CTUs параллельно. В режиме WPP каждая строка CTU обрабатывается относительно своей предшествующей (непосредственно смежной) строки CTU с использованием задержки двух последовательных CTUs. Например, как показано на фиг.8, кадр изображения или область изображения состоит из множества строк CTU, каждая последовательность (строка) включает в себя 11 CTUs, т.е. последовательность 1 включает в себя CTU0 - CTU10, последовательность 2 включает в себя CTU11 - CTU 21, последовательность 3 включает в себя CTU22 - CTU32, последовательность 4 включает в себя CTU33 TO 43… Следовательно, в режиме WPP при завершении процесса кодирования/декодирования CTU1 в последовательности 1, процесс кодирования/ декодирования CTU11 в последовательности 2 может начаться аналогично, когда процесс кодирования/декодирования CTU12 в последовательности 2 завершен, процесс кодирования/декодирования CTU22 в последовательности 3 может начаться, когда процесс кодирования/декодирования CTU23 в последовательности 3 завершен, может начаться процесс кодирования/декодирования CTU33 в последовательности 4, когда процесс кодирования/декодирования CTU34 в последовательности 4 завершен, может начаться процесс кодирования/декодирования CTU44 в последовательности 5.To improve processing efficiency, a processing called Wavefront Parallel Processing (WPP) has been introduced, where the WPP mode allows rows of CTUs to be processed in parallel. In WPP mode, each CTU row is processed relative to its preceding (immediately adjacent) CTU row using the delay of two consecutive CTUs. For example, as shown in FIG. 8, an image frame or image area is composed of a plurality of CTU lines, each sequence (line) includes 11 CTUs, i.e. sequence 1 includes CTU0 - CTU10, sequence 2 includes CTU11 - CTU 21, sequence 3 includes CTU22 - CTU32, sequence 4 includes CTU33 TO 43… Therefore, in WPP mode, when CTU1 encode/decode process is completed in sequence 1, the CTU11 encoding/decoding process in sequence 2 can start similarly, when the CTU12 encoding/decoding process in sequence 2 is completed, the CTU22 encoding/decoding process in sequence 3 can start, when the CTU23 encoding/decoding process in sequence 3 is completed, can start CTU33 encoding/decoding process in sequence 4, when the CTU34 encoding/decoding process in sequence 4 is completed, the CTU44 encoding/decoding process in sequence 5 can start.

Однако при объединении WPP с HMVP, как указано выше, HMVP список поддерживается и обновляется после обработки каждого блока кодирования, таким образом, поддерживается один HMVP список, который продолжает обновляться до последнего CTU строки CTU, поэтому параллельная обработка волнового фронта не может быть выполнена, так как N-й последовательность должен дождаться завершения обработки последнего CTU в указанной выше строке CTU.However, when WPP is combined with HMVP as above, the HMVP list is maintained and updated after each coding block is processed, thus one HMVP list is maintained that keeps updating until the last CTU of the CTU row, so parallel wavefront processing cannot be done, so how the Nth sequence should wait for the last CTU in the above CTU line to finish processing.

Фиг. 9 является блок-схемой алгоритма, иллюстрирующей примерную работу видеодекодера, такого как видеодекодер 30 по фиг.3 в соответствии с вариантом осуществления настоящего раскрытия. Один или более структурных элементов видеодекодера 30, включающий в себя блок 344 внешнего предсказания, могут быть выполнены с возможностью выполнять способы, показанные на фиг.9. В примере на фиг.9, видеодекодер 30 может выполнять следующие этапы:Fig. 9 is a flowchart illustrating exemplary operation of a video decoder, such as video decoder 30 of FIG. 3, in accordance with an embodiment of the present disclosure. One or more building blocks of video decoder 30, including inter prediction block 344, may be configured to perform the methods shown in FIG. In the example of FIG. 9, video decoder 30 may perform the following steps:

901. В начале обработки строки CTU выполняется составление/инициализация HMVP списка для строки CTU.901. At the beginning of the processing of the CTU string, the HMVP list is compiled/initialized for the CTU string.

Когда обрабатываемый CTU является первым CTU (начальным CTU) строки CTU, составляется или инициализируется HMVP список для строки CTU, таким образом, первый CTU строки CTU может обрабатываться на основании HMVP списка для строки CTU.When the CTU being processed is the first CTU (initial CTU) of the CTU string, an HMVP list for the CTU string is compiled or initialized, so the first CTU of the CTU string can be processed based on the HMVP list for the CTU string.

HMVP список для строки CTU может быть составлен или инициализирован блоком 344 внешнего предсказания по фиг.3, когда способ является способом кодирования. Альтернативно, HMVP список для строки CTU может быть составлен или инициализирован блоком 244 внешнего предсказания по фиг.2, когда способ является способом декодирования.The HMVP list for the CTU string may be compiled or initialized by the inter predictor 344 of FIG. 3 when the method is an encoding method. Alternatively, the HMVP list for the CTU string may be compiled or initialized by inter predictor 244 of FIG. 2 when the method is a decoding method.

В реализации для кадра изображения каждая строка CTU может поддерживаться с другим списком HMVP. В другой реализации для области изображения каждая строка CTU может поддерживаться с другим списком HMVP, где область изображения состоит из множества строк CTU, где изображение может быть сегментом, плиткой или блоком VVC.In an implementation for an image frame, each CTU row may be supported with a different HMVP list. In another implementation for an image region, each CTU line may be supported with a different HMVP list, where the image region consists of multiple CTU lines, where the image may be a VVC segment, tile, or block.

Если блок представляет собой прямоугольную область строк CTU в пределах конкретной плитки на изображении, плитка может быть разделена на несколько блоков, каждый из которых состоит из одной или более строк CTU внутри плитки. Плитка, не разделенная на несколько блоков, также называется блоком. Однако блок, который является истинным подмножеством плитки, не называется плиткой.If a block is a rectangular area of CTU lines within a particular tile in an image, the tile may be divided into multiple blocks, each consisting of one or more CTU lines within a tile. A tile that is not divided into multiple blocks is also called a block. However, a block that is a true subset of a tile is not called a tile.

Следует отметить, что поддержание другого HMVP списка для каждой строки CTU означает только то, что конкретный HMVP список может поддерживаться для строки CTU, но кандидаты в разных списках HMVP могут быть одинаковыми, например, все кандидаты в одном HMVP списке совпадают с кандидатами в другом HMVP списке, следует отметить, что кандидаты в одном HMVP списке могут не иметь избыточности; или кандидаты в разных списках HMVP могут перекрываться, например, некоторые из кандидатов в одном HMVP списке совпадают с некоторыми кандидатами в другом HMVP списке, и некоторые из кандидатов в одном HMVP списке не идентичны в другом HMVP списке; или кандидаты в разных списках HMVP могут быть совершенно разными, например, ни один из кандидатов в одном HMVP списке не имеет идентичного в другом HMVP списке. Следует отметить, что, когда все CTUs в строке CTU были обработаны, поддерживаемый HMVP список для строки CTU может быть освобожден, что может снизить требования к хранилищу.It should be noted that maintaining a different HMVP list for each CTU row only means that a particular HMVP list can be maintained for a CTU row, but candidates in different HMVP lists may be the same, e.g. all candidates in one HMVP list are the same as candidates in another HMVP list, it should be noted that candidates in the same HMVP list may not have redundancy; or candidates in different HMVP lists may overlap, for example, some of the candidates in one HMVP list are the same as some of the candidates in another HMVP list, and some of the candidates in one HMVP list are not identical in the other HMVP list; or candidates in different HMVP lists can be completely different, for example, no candidate in one HMVP list has an identical candidate in another HMVP list. Note that when all CTUs in a CTU row have been processed, the HMVP-maintained list for the CTU row may be freed, which may reduce storage requirements.

Настоящее изобретение обеспечивает следующие способы построения/инициализации HMVP списка:The present invention provides the following methods for building/initializing an HMVP list:

Способ 1: в начале обработки строки CTU соответствующий HMVP список очищается или устанавливается в значения по умолчанию. Значения по умолчанию является заданным кандидатом, известным как кодеру, так и декодеру.Method 1: At the start of CTU string processing, the corresponding HMVP list is cleared or set to default values. The default value is a given candidate known to both the encoder and the decoder.

Например, соответствующий HMVP список заполняется MVs по умолчанию, например:For example, the corresponding HMVP list is populated with default MVs, like so:

а) MVs согласно унифицированному предсказанию, где MV может быть нулевым вектором движения и опорные изображения могут включать в себя первое опорное изображение в списке L0; и/илиa) MVs according to unified prediction, where MV may be a zero motion vector and the reference pictures may include the first reference picture in the L0 list; and/or

b) MVs согласно двунаправленного предсказания, где MV может быть нулевым вектором движения и опорные изображения могут включать в себя первое опорное изображение в списке L0 и первое опорное изображение в списке L1; и/илиb) MVs according to bidirectional prediction, where MV may be a zero motion vector and the reference pictures may include the first reference picture in the L0 list and the first reference picture in the L1 list; and/or

c) MVs ранее обработанного изображения в соответствии с порядком обработки изображений. Более конкретно, MVs, которые принадлежат ранее обработанному изображению и которые находятся в пространственной близости от текущего блока, когда позиция текущего блока накладывается на предшествующее изображение; и/илиc) MVs of the previously processed image according to the image processing order. More specifically, MVs that belong to a previously processed image and that are in spatial proximity to the current block when the position of the current block overlaps the previous image; and/or

d) MVs временного HMVP списка, где каждое совместно размещенное изображение может хранить временной HMVP список для каждой строки CTU или для всего изображения, таким образом, временной HMVP список может использоваться для построения/инициализации HMVP списка для текущей строки CTU.d) Temporary HMVP list MVs, where each co-located image can store a temporary HMVP list for each CTU row or for the entire picture, so the temporary HMVP list can be used to build/initialize an HMVP list for the current CTU row.

Способ 2: в начале обработки текущей строки CTU, соответствующий HMVP список составляется/инициализируется на основании HMVP списка второго CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и в верхней части текущей строки CTU.Method 2: At the start of processing the current CTU row, the corresponding HMVP list is compiled/initialized based on the HMVP list of the second CTU of the previous CTU row, where the previous CTU row is the CTU row immediately adjacent to the current CTU row and at the top of the current CTU row.

Как показано на фиг.8 в качестве примера, где, когда текущая строка CTU является строкой CTU последовательности 2, предшествующая строка CTU является строкой CTU последовательности 1, второй CTU предшествующей строки является CTU1; когда текущая строка CTU является строкой CTU последовательности 3, предшествующая строка CTU является строкой CTU последовательности 2, второй CTU предшествующей строки является CTU12; когда текущая строка CTU является строкой CTU последовательности 4, предшествующая строка CTU является строкой CTU последовательности 3, второй CTU предшествующей строки является CTU23; когда текущая строка CTU является строкой CTU последовательности 5, предшествующая строка CTU является строкой CTU последовательности 4, и второй CTU предшествующей строки является CTU34; когда текущая строка CTU является строкой CTU последовательности 6, предшествующая строка CTU является строкой CTU последовательности 5 и второй CTU предшествующей строки является CTU45.As shown in FIG. 8 as an example, where when the current CTU line is the CTU line of sequence 2, the previous CTU line is the CTU line of sequence 1, the second CTU of the previous line is CTU1; when the current CTU line is the CTU line of sequence 3, the previous CTU line is the CTU line of sequence 2, the second CTU of the previous line is CTU12; when the current CTU line is the CTU line of sequence 4, the previous CTU line is the CTU line of sequence 3, the second CTU of the previous line is CTU23; when the current CTU line is the CTU line of sequence 5, the previous CTU line is the CTU line of sequence 4, and the second CTU of the previous line is CTU34; when the current CTU line is the CTU line of sequence 6, the previous CTU line is the CTU line of sequence 5, and the second CTU of the previous line is CTU45.

Способ 3: в начале обработки текущей строки CTU, соответствующий HMVP список составляется/инициализируется на основании HMVP списка первого CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и в верхней части текущей строки CTU.Method 3: At the start of processing the current CTU row, the corresponding HMVP list is compiled/initialized based on the HMVP list of the first CTU of the previous CTU row, where the previous CTU row is the CTU row immediately adjacent to the current CTU row and at the top of the current CTU row.

Как показано на фиг.8 в качестве примера, где, когда текущая строка CTU является строкой CTU последовательности 2, предшествующая строка CTU является строкой CTU последовательности 1 и первый CTU предшествующей строки является CTU0; когда текущая строка CTU является строкой CTU последовательности 3, предшествующая строка CTU является строкой CTU последовательности 2, и первая строка CTU предшествующей строки является CTU11; когда текущая строка CTU является строкой CTU последовательности 4, предшествующая строка CTU является строкой CTU последовательности 3, и первый CTU строки предшествующей строки является CTU22; когда текущая строка CTU является строкой CTU последовательности 5, предшествующая строка CTU является строкой CTU последовательности 4 и первый CTU строки предшествующей строки является CTU33; когда текущая строка CTU является строкой CTU последовательности 6, предшествующая строка CTU является строкой CTU последовательности 5 и первый CTU строки предшествующей строки является CTU44.As shown in FIG. 8 as an example, where when the current CTU row is the CTU row of sequence 2, the previous CTU row is the CTU row of sequence 1, and the first CTU of the previous row is CTU0; when the current CTU line is the CTU line of sequence 3, the previous CTU line is the CTU line of sequence 2, and the first CTU line of the previous line is CTU11; when the current CTU line is the CTU line of sequence 4, the previous CTU line is the CTU line of sequence 3, and the first CTU of the line of the previous line is CTU22; when the current CTU line is the CTU line of sequence 5, the previous CTU line is the CTU line of sequence 4, and the first CTU of the line of the previous line is CTU33; when the current CTU line is the CTU line of sequence 6, the previous CTU line is the CTU line of sequence 5, and the first CTU of the line of the previous line is CTU44.

Согласно способам с 1 по 3, обработка текущей строки CTU не требует ожидания завершения обработки предшествующей строки CTU текущей строки CTU, что позволяет повысить эффективность обработки кадра текущего изображения.According to methods 1 to 3, the processing of the current CTU line does not need to wait until the processing of the previous CTU line of the current CTU line is completed, which makes it possible to improve the processing efficiency of the current picture frame.

902. Обработка CTU в строке CTU на основании составленного/инициализированного HMVP списка.902 Processing the CTU in the CTU line based on the compiled/initialized HMVP list.

Обработка CTU может быть обработкой внешнего предсказания, которая выполняется во время процесса декодирования, то есть, обработка CTU может быть реализована блоком 344 внешнего предсказания по фиг.3. В качестве альтернативы обработка CTU может быть обработкой внешнего предсказания, которая выполняется во время процесса кодирования, то есть, обработка CTU может быть реализована блоком 244 внешнего предсказания по фиг. 2.The CTU processing may be inter prediction processing that is performed during the decoding process, that is, the CTU processing may be implemented by the inter prediction block 344 of FIG. Alternatively, the CTU processing may be inter prediction processing that is performed during the encoding process, that is, the CTU processing may be implemented by inter prediction block 244 of FIG. 2.

Следует отметить, что вышеупомянутые способы построения/инициализации HMVP списка также могут использоваться для нормальной обработки HMVP без волновых фронтов, например, обработки HMVP без WPP. В результате обработка HMVP идентична независимо от применения WPP, что снижает необходимость в дополнительной логической реализации.It should be noted that the above HMVP list building/initialization methods can also be used for normal HMVP processing without wavefronts, such as HMVP processing without WPP. As a result, HMVP processing is identical regardless of WPP, which reduces the need for additional logic implementation.

Следует отметить, что обработка по фиг.9 также может быть процессом кодирования, реализованным кодером, таким как видеокодер 20 по фиг. 2 в соответствии с вариантом осуществления настоящего раскрытия.It should be noted that the processing of FIG. 9 may also be an encoding process implemented by an encoder, such as video encoder 20 of FIG. 2 in accordance with an embodiment of the present disclosure.

Кроме того, следует отметить, что вышеупомянутые способы, касающиеся комбинации волновых фронтов и предсказания на основании HMVP, также могут использоваться для внутреннего предсказания. То есть, можно использовать ранее используемые внутренние режимы и ранее использованная таблица для каждой строки CTU инициализируется значениями по умолчанию.In addition, it should be noted that the above-mentioned methods regarding the combination of wavefronts and prediction based on HMVP can also be used for intra prediction. That is, previously used internal modes can be used and the previously used table for each CTU row is initialized with default values.

Например, инициализация HMVP списка для каждой строки CTU при внутреннем предсказании может быть выполнена с внутренними режимами по умолчанию, такими как планарный, DC, вертикальный, горизонтальный, режим 2, VDIA и DIA режимы.For example, initialization of the HMVP list for each CTU row in intra prediction may be performed with default intra modes such as planar, DC, vertical, horizontal, mode 2, VDIA, and DIA modes.

Фиг.10 является блок-схемой алгоритма, иллюстрирующей примерную работу видеодекодера или видеокодера, такого как видеодекодер 30 по фиг. 3 в соответствии с вариантом осуществления настоящего раскрытия и видеокодера 20 по фиг.2 в соответствии с вариантом осуществления настоящего раскрытия. Один или более структурных элементов видеодекодера 30/кодера 20, включающие в себя блок 344 внешнего предсказания/блок 244 внешнего предсказания, могут быть выполнены с возможностью выполнять способы, показанные на фиг.10. В примере на фиг.10, видеодекодер 30/видеокодер 20 может выполнять следующие этапы:FIG. 10 is a flowchart illustrating exemplary operation of a video decoder or video encoder such as video decoder 30 of FIG. 3 according to an embodiment of the present disclosure, and video encoder 20 of FIG. 2 according to an embodiment of the present disclosure. One or more structural elements of video decoder 30/encoder 20, including inter prediction unit 344/inter prediction unit 244, may be configured to perform the methods shown in FIG. In the example of FIG. 10, video decoder 30/video encoder 20 may perform the following steps:

Этап 1010-инициализация HMVP списка для текущей строки CTU, когда текущий CTU является начальным CTU текущей строки CTU.Step 1010 - initialize the HMVP list for the current CTU row when the current CTU is the initial CTU of the current CTU row.

Следует отметить, что текущая строка CTU может быть любой строкой CTU кадра изображения, состоящей из множества строк CTU, или областью изображения (может быть частью кадра изображения), состоящей из множества строк CTU. И текущая строка CTU может быть любой из множества строк CTU.It should be noted that the current CTU line may be any image frame CTU line consisting of a plurality of CTU lines, or an image area (may be part of an image frame) consisting of a plurality of CTU lines. And the current CTU string can be any one of many CTU strings.

Является ли текущий CTU начальным CTU (или первым CTU) текущей строки CTU, может быть определено на основании индекса текущего CTU. Например, как показано на фиг.8, каждый CTU имеет уникальный индекс, таким образом, можно определить, является ли текущий CTU первым CTU текущей строки CTU на основании индекса текущего CTU. Например, CTUs с индексом 0, 11, 22, 33, 44 или 55… являются первым CTU строк CTU, соответственно. В качестве альтернативы возьмем фиг.8 в качестве примера, каждая строка CTU включает в себя 11 CTUs, то есть, ширина каждой строки CTU равна 11, таким образом, можно использовать ширину строки CTU, чтобы разделить индекс CTU для определения, равен ли остаток 0 или нет, если остаток равен 0, соответствующий CTU является первым CTU строки CTU; в противном случае, если остаток не равен 0, соответствующий CTU не является первым CTU строки CTU. То есть, если индекс CTU% ширины строки CTU = 0, CTU является первым CTU строки CTU; в противном случае, если индекс CTU% ширины строки CTU ≠ 0, CTU не является первым CTU строки CTU. Следует отметить, что, когда обработка строки CTU выполняется справа налево, то аналогичным образом может быть определено, является ли CTU начальным CTU строки CTU.Whether the current CTU is the initial CTU (or first CTU) of the current CTU row may be determined based on the index of the current CTU. For example, as shown in FIG. 8, each CTU has a unique index, so it can be determined whether the current CTU is the first CTU of the current CTU row based on the index of the current CTU. For example, CTUs with index 0, 11, 22, 33, 44, or 55… are the first CTU of the CTU lines, respectively. Alternatively, take Fig. 8 as an example, each CTU row includes 11 CTUs, that is, the width of each CTU row is 11, so you can use the width of the CTU row to divide the CTU index to determine whether the remainder is 0 or not, if the remainder is 0, the corresponding CTU is the first CTU of the CTU row; otherwise, if the remainder is not 0, the corresponding CTU is not the first CTU of the CTU row. That is, if index CTU% of CTU row width = 0, CTU is the first CTU of the CTU row; otherwise, if index CTU% of CTU row width ≠ 0, CTU is not the first CTU of the CTU row. It should be noted that when processing of the CTU row is performed from right to left, it can be determined in the same way whether the CTU is the initial CTU of the CTU row.

После инициализации HMVP списка количество кандидатов вектора движения в инициализированном HMVP списке равно нулю.After the initialization of the HMVP list, the number of motion vector candidates in the initialized HMVP list is zero.

Инициализация может быть выполнена как очистка HMVP списка для текущей строки CTU, то есть, сделать HMVP список для текущей строки CTU пустым, другими словами, количество кандидатов в HMVP списке для текущей строки CTU равно нулю.The initialization can be done as clearing the HMVP list for the current CTU row, i.e., making the HMVP list for the current CTU row empty, in other words, the number of candidates in the HMVP list for the current CTU row is zero.

В другом варианте реализации, способ может дополнительно включать в себя следующий этап: инициализация HMVP списка для каждой из множества строк CTU, кроме текущей строки CTU, в котором HMVP списки для множества строк CTU идентичны или различны.In another implementation, the method may further include: initializing an HMVP list for each of the plurality of CTU strings other than the current CTU string, wherein the HMVP lists for the plurality of CTU strings are identical or different.

Инициализация может быть выполнена как установка значений по умолчанию для HMVP списка для текущей строки CTU или инициализация HMVP списка для текущей строки CTU на основании HMVP списка для CTU предшествующей строки CTU, как описано выше.The initialization may be performed as setting default values for the HMVP list for the current CTU row, or initializing the HMVP list for the current CTU row based on the HMVP list for the CTUs of the previous CTU row, as described above.

Этап 1020, обработать текущую строку CTU на основании HMVP списка.Step 1020, process the current CTU row based on the HMVP list.

Обработка может быть процессом внешнего предсказания, таким образом, может быть получен блок предсказания. Операция восстановления может выполняться на основании блока предсказания, чтобы получить восстановленный блок, наконец, декодированное изображение может быть получено на основании восстановленного блока. Подробности этих процессов описаны выше.The processing may be an inter prediction process, thus a prediction block may be obtained. A reconstruction operation may be performed based on the prediction block to obtain a reconstructed block, finally, a decoded image may be obtained based on the reconstructed block. The details of these processes are described above.

Как показано на фиг.8 текущий кадр изображения содержит множество строк CTU, для повышения эффективности кодирования/декодирования множество строк CTU может обрабатываться в режиме параллельной обработки волнового фронта (WPP). То есть, текущая строка CTU начинает обрабатываться (или начинается обработка текущей строки CTU), когда обрабатывается конкретный CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и наверху текущей строки CTU, где конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU. Возьмем фиг.8 для примера, когда текущая строка CTU является последовательностью 3, предшествующая строка CTU является последовательностью 2, конкретный CTU предшествующей строки CTU может быть CTU 12, то есть, когда CTU 12 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 3, то есть, декодер/кодер начинает обрабатывать CTU 22. Возьмем фиг.8 для другого примера, когда текущая строка CTU является последовательности 4, предшествующая строка CTU является последовательностью 3, конкретный CTU предшествующей строки CTU может быть CTU 23, то есть, когда CTU 23 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 4, то есть, декодер/кодер начинает обрабатывать CTU 33.As shown in FIG. 8, the current picture frame contains a plurality of CTU lines, in order to improve coding/decoding efficiency, a plurality of CTU lines can be processed in a parallel wavefront processing (WPP) mode. That is, the current CTU line begins to be processed (or the processing of the current CTU line begins) when the specific CTU of the previous CTU line is processed, where the previous CTU line is the CTU line immediately adjacent to the current CTU line and on top of the current CTU line, where the specific CTU of the previous line The CTU is the second CTU of the preceding CTU row; or the particular CTU of the preceding CTU row is the first CTU of the preceding CTU row. Taking Fig. 8 as an example, when the current CTU line is sequence 3, the previous CTU line is sequence 2, the specific CTU of the previous CTU line may be CTU 12, that is, when CTU 12 is being processed, the decoder/encoder starts processing the CTU line of sequence 3, that is, the decoder/encoder starts processing CTU 22. Take FIG. 8 for another example, when the current CTU row is sequence 4, the previous CTU row is sequence 3, the specific CTU of the previous CTU row may be CTU 23, that is, when CTU 23 processed, the decoder/encoder starts processing the CTU string of sequence 4, that is, the decoder/encoder starts processing CTU 33.

В одной реализации обработка текущей строки CTU на основании HMVP списка может включать в себя: обработку текущего CTU текущей строки CTU; обновление инициализированного HMVP списка на основании обработанного текущего CTU; и обработку второго CTU текущей строки CTU на основании обновленного HMVP списка.In one implementation, processing the current CTU row based on the HMVP list may include: processing the current CTU of the current CTU row; updating the initialized HMVP list based on the processed current CTU; and processing the second CTU of the current CTU row based on the updated HMVP list.

Фиг.11 является блок-схемой, показывающей пример устройства 1100 для обработки видео, выполненное с возможностью реализации вариантов осуществления изобретения, устройство 1100 для обработки видео может быть кодером 20 или декодером 30, как показано на фиг.11, устройство включает в себя:Fig. 11 is a block diagram showing an example of a video processing apparatus 1100 capable of implementing embodiments of the invention, the video processing apparatus 1100 may be an encoder 20 or a decoder 30 as shown in Fig. 11, the apparatus includes:

Блок 1110 инициализации, выполненный с возможностью инициализации HMVP списка для текущей строки CTU, когда текущий CTU является начальным CTU (первым CTU) текущей строки CTU.Initializer 1110, configured to initialize the HMVP list for the current CTU row when the current CTU is the initial CTU (first CTU) of the current CTU row.

Детали инициализации, выполняемой блоком 1110 инициализации, могут относиться к этапу 1010.Details of the initialization performed by the initialization block 1110 may refer to block 1010.

Блок 1120 обработки, выполненный с возможностью обрабатывать текущую строку CTU на основании HMVP списка.A processing unit 1120, configured to process the current CTU row based on the HMVP list.

Подробная информация обработки, выполняемой блоком 1120 обработки, может относиться к этапу 1020.Details of the processing performed by the processing unit 1120 may refer to block 1020.

Обработка может быть процессом внешнего предсказания, таким образом, может быть получен блок предсказания. Операция восстановления может выполняться на основании блока предсказания для получения восстановленного блока, наконец, декодированное изображение может быть получено на основании восстановленного блока. Подробности этих процессов описаны выше.The processing may be an inter prediction process, thus a prediction block may be obtained. A reconstruction operation may be performed based on the prediction block to obtain a reconstructed block, finally, a decoded image may be obtained based on the reconstructed block. The details of these processes are described above.

Как показано на фиг.8, текущий кадр изображения содержит множество строк CTU, чтобы повысить эффективность кодирования/декодирования множество строк CTU может обрабатываться в режиме WPP. То есть, текущая строка CTU начинает обрабатываться, когда обрабатывается конкретный CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и наверху текущей строки CTU, где конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU. Возьмем фиг.8 для примера, когда текущая строка CTU является последовательностью 3, предшествующая строка CTU является последовательностью 2, конкретным CTU предшествующей строки CTU может быть CTU 12, то есть, когда CTU 12 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 3, то есть, декодер/кодер начинает обрабатывать CTU 22. Рассмотрим фиг.8 для другого примера, когда текущая строка CTU является последовательностью 4, предшествующая строка CTU является последовательностью 3, конкретным CTU предшествующей строки CTU может быть CTU 23, то есть, когда CTU 23 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 4, то есть, декодер/кодер начинает обрабатывать CTU 33.As shown in FIG. 8, the current picture frame contains a plurality of CTU lines, in order to improve coding/decoding efficiency, a plurality of CTU lines can be processed in WPP mode. That is, the current CTU row starts to be processed when the specific CTU of the previous CTU row is processed, where the previous CTU row is the CTU row immediately adjacent to the current CTU row and at the top of the current CTU row, where the specific CTU of the previous CTU row is the second CTU of the previous CTU row; or the particular CTU of the preceding CTU row is the first CTU of the preceding CTU row. Taking Fig. 8 as an example, when the current CTU line is sequence 3, the previous CTU line is sequence 2, the specific CTU of the previous CTU line may be CTU 12, that is, when CTU 12 is being processed, the decoder/encoder starts processing the CTU line of sequence 3, that is, the decoder/encoder starts processing CTU 22. Consider Fig. 8 for another example, when the current CTU row is sequence 4, the previous CTU row is sequence 3, the specific CTU of the previous CTU row may be CTU 23, that is, when CTU 23 processed, the decoder/encoder starts processing the CTU string of sequence 4, that is, the decoder/encoder starts processing CTU 33.

Настоящее изобретение дополнительно раскрывает кодер, который включает в себя схему обработки для выполнения способа обработки видео или способа кодирования настоящего раскрытия.The present invention further discloses an encoder that includes a processing circuit for performing a video processing method or an encoding method of the present disclosure.

Настоящее изобретение дополнительно раскрывает декодер, который включает в себя схему обработки для выполнения способа обработки видео или способа кодирования настоящего раскрытия.The present invention further discloses a decoder that includes a processing circuit for performing a video processing method or an encoding method of the present disclosure.

Настоящее изобретение дополнительно раскрывает компьютерный программный продукт, который содержит программный код для выполнения способа обработки видео или способа кодирования настоящего раскрытия.The present invention further discloses a computer program product that contains program code for executing the video processing method or encoding method of the present disclosure.

Настоящее изобретение дополнительно раскрывает машиночитаемый носитель данных, хранящий компьютерные инструкции, которые при исполнении одним или более процессорами побуждают один или более процессоров выполнять способ обработки видео или способ кодирования настоящего раскрытия. Машиночитаемый носитель информации является энергонезависимым или энергозависимым.The present invention further discloses a computer-readable storage medium storing computer instructions that, when executed by one or more processors, cause one or more processors to execute the video processing method or encoding method of the present disclosure. The computer-readable storage medium is non-volatile or volatile.

Настоящее изобретение дополнительно раскрывает декодер, содержащий один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа обработки видео или способа кодирования настоящего раскрытия.The present invention further discloses a decoder comprising one or more processors; and a persistent computer-readable storage medium coupled to the processors and storing programs for execution by the processors, in which the program, when executed by the processors, configures the decoder to perform the video processing method or encoding method of the present disclosure.

Настоящее изобретение дополнительно раскрывает кодер, содержащий один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа обработки видео или способа кодирования настоящего раскрытия.The present invention further discloses an encoder comprising one or more processors; and a persistent computer-readable storage medium coupled to the processors and storing programs for execution by the processors, in which the program, when executed by the processors, configures the encoder to perform the video processing method or encoding method of the present disclosure.

Процесс инициализации для HMVP списка описан в общем синтаксисе данных сегмента VVC (Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29 / WG 11, универсальное кодирование видео (проект 6)), раздел 7.3.8.1 VVC описывает:The initialization process for the HMVP list is described in the common VVC segment data syntax (Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29 / WG 11, Universal Video Coding (draft 6)), section 7.3.8.1 VVC describes:

slice_data( ) {slice_data( ) { DescriptorDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 ResetIbcBuf = 1ResetIbcBuf = 1 }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[CtbAddrInBs] coding_tree_unit( )coding_tree_unit( ) if( entropy_coding_sync_enabled_flag &&
( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] – 1 ) &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
if( entropy_coding_sync_enabled_flag &&
( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] – 1 ) &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
end_of_subset_one_bit /* equal to 1 */end_of_subset_one_bit /* equal to 1 */ ae(v)ae(v) byte_alignment( )byte_alignment( ) }} }} end_of_brick_one_bit /* equal to 1 */end_of_brick_one_bit /* equal to 1 */ ae(v)ae(v) if( i < NumBricksInCurrSlice − 1 )if( i < NumBricksInCurrSlice − 1 ) byte_alignment( )byte_alignment( ) }} }}

Где j% BrickWidth [SliceBrickIdx [i]]) = = 0 означает, что CTU с индексом j является начальным CTU строки CTU, и NumHmvpCand = 0 означает, что количество кандидатов в HMVP списке установлено на 0, другими словами, HMVP список очищается.Where j% BrickWidth[SliceBrickIdx[i]]) == 0 means that the CTU at index j is the initial CTU of the CTU row, and NumHmvpCand = 0 means that the number of candidates in the HMVP list is set to 0, in other words, the HMVP list is cleared.

Процесс обновления для HMVP списка описан в разделе 8.5.2.16 VVC (Объединенная группа экспертов по видео (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29 / WG 11, универсальное кодирование видео (проект 6)), раздел 7.3.8.1 VVC описывает:The update process for the HMVP list is described in Section 8.5.2.16 of the VVC (Joint Video Experts Group (JVET) ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29 / WG 11 Universal Video Coding (Draft 6)), Section 7.3.8.1 of the VVC describes:

Входными данными процесса являются:The process inputs are:

векторы движения яркости с точностью 1/16 дробной выборки mvL0 и mvL1,luminance motion vectors with an accuracy of 1/16 fractional sampling mvL0 and mvL1,

опорные индексы refIdxL0 и refIdxL1,reference indexes refIdxL0 and refIdxL1,

флаги использования списка предсказаний predFlagL0 и predFlagL1,prediction list usage flags predFlagL0 and predFlagL1,

индекс веса двунаправленного предсказания равен bcwIdx.the bidirectional prediction weight index is bcwIdx.

MVP кандидат hMvpCand состоит из векторов mvL0 и mvL1 движения яркости, опорных индексов refIdxL0 и refIdxL1, флагов predFlagL0 и predFlagL1 использования списка предсказаний и индекса bcwIdx веса двойного предсказания.The MVP candidate hMvpCand consists of the luma motion vectors mvL0 and mvL1, the reference indices refIdxL0 and refIdxL1, the prediction list usage flags predFlagL0 and predFlagL1, and the dual prediction weight index bcwIdx.

Список HmvpCandList кандидатов модифицируется с помощью кандидата hMvpCand следующими упорядоченными этапами:The HmvpCandList candidate list is modified with the hMvpCand candidate in the following ordered steps:

переменная identityCandExist устанавливается равной FALSE и переменная removeIdx устанавливается равной 0.identityCandExist is set to FALSE and removeIdx is set to 0.

Когда NumHmvpCand больше 0, для каждого индекса hMvpIdx с hMvpIdx = 0..NumHmvpCand - 1 выполняются следующие этапы до тех пор, пока identityCandExist не станет равным TRUE:When NumHmvpCand is greater than 0, for each hMvpIdx index with hMvpIdx = 0..NumHmvpCand - 1, the following steps are performed until identityCandExist is TRUE:

Когда hMvpCand равен HmvpCandList [hMvpIdx], identityCandExist устанавливается равным TRUE и removeIdx устанавливается равным hMvpIdx.When hMvpCand is equal to HmvpCandList[hMvpIdx], identityCandExist is set to TRUE and removeIdx is set to hMvpIdx.

Список HmvpCandList кандидатов обновляется следующим образом:The HmvpCandList list of candidates is updated as follows:

если identityCandExist равно TRUE или NumHmvpCand равно 5, применяется следующее:if identityCandExist is TRUE or NumHmvpCand is 5, the following applies:

для каждого индекса i с i = (removeIdx + 1) .. (NumHmvpCand - 1) HmvpCandList [i - 1] устанавливается равным HmvpCandList [i].for each index i with i = (removeIdx + 1) .. (NumHmvpCand - 1) HmvpCandList[i - 1] is set equal to HmvpCandList[i].

HmvpCandList [NumHmvpCand - 1] устанавливается равным mvCand.HmvpCandList [NumHmvpCand - 1] is set to mvCand.

В противном случае (connectedCandExist равен FALSE, а NumHmvpCand меньше 5) применяется следующее:Otherwise (connectedCandExist is FALSE and NumHmvpCand is less than 5), the following applies:

HmvpCandList [NumHmvpCand ++] устанавливается равным mvCand.HmvpCandList[NumHmvpCand++] is set to mvCand.

В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или более инструкций или кода на машиночитаемом носителе и выполняться аппаратным блоком обработки. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных, или носителю связи, включающий в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям данных, которые являются энергонезависимыми, или (2) средам связи, таким как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может получить доступ один или более компьютеров, или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации описанных в настоящем изобретении способов. Компьютерный программный продукт может включать в себя машиночитаемый носитель.In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If 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. A computer-readable medium may include a computer-readable medium that corresponds to a tangible medium, such as a data medium, or a communication medium, including any medium that facilitates the transfer of a computer program from one place to another, such as according to a communication protocol. Thus, computer-readable media can typically correspond to (1) tangible computer-readable storage media that are non-volatile, or (2) communication media 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 herein. The computer program product may include a computer readable medium.

В качестве примера, но не ограничения, такие машиночитаемые носители данных могут включать в себя RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, накопители на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любые другие устройства. другой носитель, который можно использовать для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение правильно называть машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновый сигнал, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновый сигнал используются в таковой среде. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск и диск, используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом и диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем машиночитаемых носителей.By way of example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk drives or other magnetic storage devices, flash memory, or any other device. . another medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are used in such an environment. 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-volatile tangible storage media. The disc and disc used in this document include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs usually reproduce data magnetically and discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer readable media.

Инструкции могут выполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые логические матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных в настоящем документе способов. Дополнительно, в некоторых аспектах описанные функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, выполненных с возможностью кодировать и декодировать или содержащиеся в комбинированном кодеке. Дополнительно, способы могут быть полностью реализованы в одной или более схемах или логических элементах.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), programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term "processor" as used herein may refer to any of the aforementioned structures, or any other structure suitable for implementing the methods described herein. Additionally, in some aspects, the described functionality may be provided within dedicated hardware and/or software modules configured to encode and decode or contained in a combined codec. Additionally, the methods may be fully implemented in one or more circuits or logic elements.

Способы настоящего раскрытия могут быть реализованы в большом количестве устройств или устройств, включающие в себя беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В настоящем изобретении описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнять раскрытые технологии, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены набором взаимодействующих аппаратных блоков, включающие в себя один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или встроенным программным обеспечением.The methods of the present disclosure may be implemented in a wide variety of devices or devices, including a wireless telephone, an integrated circuit (IC), or an IC array (eg, a chipset). The present invention describes various components, modules, or blocks to emphasize the functional aspects of devices capable of performing the disclosed technologies, but not necessarily requiring implementation in different hardware blocks. Rather, as described above, the various blocks may be combined into a codec hardware block, or provided with a set of cooperating hardware blocks, including one or more processors, as described above, along with suitable software and/or firmware.

Claims (41)

1. Способ обработки видео, содержащий этапы, на которых:1. A video processing method, comprising the steps of: инициализируют, в начале обработки каждой строки блока дерева кодирования (CTU) области изображения, содержащей множество строк CTU, список предсказания вектора движения (HMVP) на основании исторических данных для каждой из множества строк CTU, причем количество кандидатов векторов движения в инициализированном списке HMVP равно нулю; иinitializing, at the start of processing each line of a coding tree unit (CTU) of a picture area containing a plurality of CTU lines, a motion vector prediction (HMVP) list based on historical data for each of the plurality of CTU lines, wherein the number of motion vector candidates in the initialized HMVP list is zero ; and выполняют обработку множества строк CTU на основании инициализированных HMVP списков.perform processing of the plurality of CTU rows based on the initialized HMVP lists. 2. Способ по п.1, в котором этап выполнения обработки множества строк CTU на основании инициализированных HMVP списков содержит подэтапы, на которых:2. The method of claim 1, wherein the step of performing multiple CTU string processing based on HMVP initialized lists comprises sub-steps of: выполняют обработку текущего CTU текущей строки CTU;performing processing of the current CTU of the current CTU row; выполняют обновление соответствующего HMVP списка на основании обработанного текущего CTU; иupdating the corresponding HMVP list based on the processed current CTU; and выполняют обработку второго CTU текущей строки CTU на основании обновленного HMVP списка.performing processing of the second CTU of the current CTU row based on the updated HMVP list. 3. Способ по п.1, в котором HMVP список текущей строки CTU из множества строк CTU обновляется в соответствии с обработанным CTU текущей строки CTU.3. The method of claim 1, wherein the HMVP list of the current CTU row of the plurality of CTU rows is updated according to the processed CTU of the current CTU row. 4. Способ по п.1, в котором HMVP список для текущей строки CTU из множества строк CTU инициализируется посредством:4. The method of claim 1, wherein the HMVP list for the current CTU row of the plurality of CTU rows is initialized by: очистки HMVP списка для текущей строки CTU.clearing the HMVP list for the current CTU line. 5. Способ по п.1, в котором этап выполнения обработки множества строк CTU на основании инициализированных HMVP списков содержит подэтап, на котором:5. The method of claim 1, wherein the step of performing multiple CTU row processing based on initialized HMVP lists comprises a sub-step of: выполняют обработку текущей строки CTU на основании соответствующего HMVP списка из второго CTU текущей строки CTU, причем второй CTU является смежным с начальным CTU.processing the current CTU row based on the corresponding HMVP list from the second CTU of the current CTU row, the second CTU being adjacent to the initial CTU. 6. Способ по п.1, в котором множество строк CTU обрабатывается в режиме параллельной обработки волнового фронта (WPP).6. The method of claim 1, wherein the plurality of CTU rows are processed in a wavefront parallel processing (WPP) mode. 7. Способ по п.2, в котором этап обработки текущего CTU текущей строки CTU начинается, когда обрабатывается конкретный CTU предшествующей строки CTU.7. The method of claim 2, wherein the step of processing the current CTU of the current CTU row begins when a particular CTU of the previous CTU row is processed. 8. Способ по п.7, в котором предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и над текущей строкой CTU.8. The method of claim 7, wherein the preceding CTU line is the CTU line immediately adjacent to the current CTU line and above the current CTU line. 9. Способ по п.7, в котором конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.9. The method of claim 7, wherein the particular CTU of the preceding CTU row is a second CTU of the preceding CTU row; or the particular CTU of the preceding CTU row is the first CTU of the preceding CTU row. 10. Устройство обработки видео, содержащее:10. A video processing device, comprising: блок инициализации, выполненный с возможностью инициализации, в начале обработки каждой строки блока дерева кодирования (CTU) области изображения, содержащей множество строк CTU, списка предсказания вектора движения (HMVP), на основании исторических данных для каждой из множества строк CTU, причем количество кандидатов векторов движения в инициализированном списке HMVP равно нулю; иan initialization block configured to initialize, at the start of processing each line of a coding tree unit (CTU) of an image area containing a plurality of CTU lines, a motion vector prediction list (HMVP), based on historical data for each of the plurality of CTU lines, wherein the number of vector candidates movement in the initialized HMVP list is zero; and блок обработки, выполненный с возможностью обработки множества строк CTU на основании инициализированных HMVP списков.a processing unit configured to process a plurality of CTU rows based on the initialized HMVP lists. 11. Устройство по п.10, в котором блок обработки выполнен с возможностью обработки текущей строки CTU на основании HMVP списка посредством:11. The apparatus of claim 10, wherein the processing unit is configured to process the current CTU row based on the HMVP list by: обработки текущего CTU, текущей строки CTU;processing the current CTU, the current line of the CTU; обновления соответствующего HMVP списка, на основании обработанного текущего CTU; иupdating the corresponding HMVP list based on the processed current CTU; and обработки второго CTU текущей строки CTU на основании обновленного HMVP списка.processing the second CTU of the current CTU row based on the updated HMVP list. 12. Устройство по п.10, в котором HMVP список текущей строки CTU из множества строк CTU обновляется в соответствии с обработанным CTU текущей строки CTU.12. The apparatus of claim 10, wherein the HMVP list of the current CTU row of the plurality of CTU rows is updated according to the processed CTU of the current CTU row. 13. Устройство по п.10, в котором блок инициализации дополнительно выполнен с возможностью инициализации HMVP списка для текущей строки CTU из множества строк CTU посредством:13. The apparatus of claim 10, wherein the initializer is further configured to initialize the HMVP list for the current CTU row from the plurality of CTU rows by: очистки HMVP списка для текущей строки CTU.clearing the HMVP list for the current CTU line. 14. Устройство по п.10, в котором блок обработки дополнительно выполнен с возможностью обработки множества строк CTU на основании инициализированных HMVP списков посредством:14. The apparatus of claim 10, wherein the processing unit is further configured to process a plurality of CTU rows based on the initialized HMVP lists by: обработки текущей строки CTU на основании соответствующего HMVP списка из второго CTU текущей строки CTU, причем второй CTU является смежным с начальным CTU.processing the current CTU row based on the corresponding HMVP list from the second CTU of the current CTU row, the second CTU being adjacent to the initial CTU. 15. Устройство по п.10, в котором множество строк CTU обрабатывается в режиме параллельной обработки волнового фронта (WPP).15. The apparatus of claim 10, wherein the plurality of CTU rows are processed in a wavefront parallel processing (WPP) mode. 16. Устройство по п.11, в котором обработка текущего CTU текущей строк CTU начинается, когда обрабатывается конкретный CTU предшествующей строки CTU.16. The apparatus of claim 11, wherein processing of the current CTU of the current CTU rows begins when a particular CTU of the preceding CTU row is processed. 17. Устройство по п.16, в котором предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и над текущей строкой CTU.17. The apparatus of claim 16, wherein the preceding CTU line is the CTU line immediately adjacent to the current CTU line and above the current CTU line. 18. Устройство по п.16, в котором конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.18. The apparatus of claim 16, wherein the particular CTU of the preceding CTU row is the second CTU of the preceding CTU row; or the particular CTU of the preceding CTU row is the first CTU of the preceding CTU row. 19. Кодер, содержащий схему обработки для выполнения способа по любому из пп.1-9.19. An encoder containing a processing circuit for performing the method according to any one of claims 1-9. 20. Декодер, содержащий схему обработки для выполнения способа по любому из пп.1-9.20. A decoder containing a processing circuit for performing the method according to any one of claims 1-9. 21. Машиночитаемый носитель данных, хранящий программу, вызывающую, при исполнении компьютером, выполнение способа по любому из пп.1-9.21. A computer-readable storage medium storing a program that causes, when executed by a computer, the execution of the method according to any one of claims 1-9. 22. Декодер, содержащий:22. Decoder, containing: один или более процессоров; иone or more processors; and энергонезависимый машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, причем программы, при выполнении процессорами, вызывают выполнение, декодером, способа по любому из пп.1-9.a non-volatile computer-readable storage medium coupled to the processors and storing programs for execution by the processors, wherein the programs, when executed by the processors, cause execution, by a decoder, of a method according to any one of claims 1-9. 23. Кодер, содержащий:23. An encoder containing: один или более процессоров; иone or more processors; and энергонезависимый машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, причем программы, при выполнении процессорами, вызывают выполнение, кодером, способа по любому из пп.1-9.a non-volatile computer-readable storage medium coupled to the processors and storing programs for execution by the processors, wherein the programs, when executed by the processors, cause the encoder to execute the method of any one of claims 1-9.
RU2021105692A 2018-08-10 2019-08-12 Video processing method, video processing device, coder, decoder, carrier and computer program RU2783349C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/717,004 2018-08-10

Publications (2)

Publication Number Publication Date
RU2021105692A RU2021105692A (en) 2022-09-12
RU2783349C2 true RU2783349C2 (en) 2022-11-11

Family

ID=

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RU 2752644 C1 - 2021.07.29, приоритет от 2018.07.18. US 2017094271 A1 - 2017.03.30. HAITAO YANG еt al., Description of Core Experiment 4 (CE4): Inter prediction and motion vector coding, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K1024-v3, 11th Meeting: Ljubljana, 10-18 July 2018. LI ZHANG еt 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, JVET-K0104-v1, 11th Meeting: Ljubljana, 10-18 July 2018. WO 2015090219 A1 - 2015.06.25. RU 2624560 C2 - 2017.07.04. *

Similar Documents

Publication Publication Date Title
JP7106744B2 (en) Encoders, decoders and corresponding methods using IBC dedicated buffers and default refresh for luma and chroma components
KR102542433B1 (en) Video processing methods, video processing devices, encoders, decoders, media and computer programs
JP7250917B2 (en) Method and Apparatus for Intra Prediction Using Interpolating Filters
AU2019383290B2 (en) An encoder, a decoder and corresponding methods for merge mode
JP2022524357A (en) Encoders, decoders, and corresponding inter-prediction methods
JP2023099561A (en) Early termination of optical flow improvement
US11818357B2 (en) Encoder, a decoder and corresponding methods using compact MV storage
US20240040113A1 (en) Video picture decoding and encoding method and apparatus
JP2022535859A (en) Method for constructing MPM list, method for obtaining intra-prediction mode of chroma block, and apparatus
CN111416977B (en) Video encoder, video decoder and corresponding methods
KR20220024877A (en) How to calculate the position of integer grid reference sample for block level boundary sample gradient calculation in double prediction optical flow calculation and double prediction correction
CN112118447B (en) Construction method, device and coder-decoder for fusion candidate motion information list
CN111432219B (en) Inter-frame prediction method and device
JP2023100701A (en) Encoder, decoder and corresponding methods using intra mode coding for intra prediction
RU2783349C2 (en) Video processing method, video processing device, coder, decoder, carrier and computer program
RU2817030C2 (en) Encoder, decoder and corresponding use methods for ibc combining list
RU2783385C2 (en) Encoder, decoder and related methods using compact mv storage
RU2771925C1 (en) Encoder, decoder and corresponding methods using a compact mv storage
RU2809841C2 (en) Method and device for intra-frame prediction using linear model
RU2820991C1 (en) Encoder, decoder and corresponding methods for reducing complexity in intraframe prediction for planar mode
RU2798316C2 (en) Method and equipment for external prediction
RU2783348C1 (en) Encoder, decoder and corresponding methods for obtaining the boundary power of the debloking filter