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 PDFInfo
- 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
Links
- 238000003672 processing method Methods 0.000 title claims description 11
- 238000004590 computer program Methods 0.000 title description 6
- 239000000969 carrier Substances 0.000 title description 3
- 238000000034 method Methods 0.000 claims description 55
- 230000000875 corresponding Effects 0.000 claims description 27
- 239000000126 substance Substances 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 41
- 238000004891 communication Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 10
- 241000023320 Luma <angiosperm> Species 0.000 description 9
- 230000003044 adaptive Effects 0.000 description 8
- 230000002457 bidirectional Effects 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 8
- 238000005070 sampling Methods 0.000 description 7
- 238000003384 imaging method Methods 0.000 description 6
- 238000007906 compression Methods 0.000 description 5
- 230000003287 optical Effects 0.000 description 5
- 230000002085 persistent Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000001702 transmitter Effects 0.000 description 4
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(E)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 3
- 241001442055 Vipera berus Species 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 102100015958 CTU1 Human genes 0.000 description 2
- 101700030867 CTU1 Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003068 static Effects 0.000 description 2
- 230000001131 transforming Effects 0.000 description 2
- 210000002381 Plasma Anatomy 0.000 description 1
- 210000004915 Pus Anatomy 0.000 description 1
- 230000003190 augmentative Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001419 dependent Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 229920002635 polyurethane Polymers 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised Effects 0.000 description 1
Images
Abstract
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
Фиг.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
Устройство 12 источник содержит кодер 20 и может дополнительно, т.е. возможно, содержать источник 16 изображения, блок 18 предварительной обработки, например, блок 18 предварительной обработки изображения и интерфейс связи или блок 22 связи.The
Источник 16 изображения может содержать или быть устройством захвата изображения любого типа, например, для захвата реального изображения и/или любого вида изображения или комментария (для кодирования содержимого экрана некоторые тексты на экране также считается частью изображения или изображения, которое должно быть закодировано), устройство для генерирования, например, процессор компьютерной графики для создания компьютерного анимированного изображения, или любое устройство для получения и/или предоставления реального изображения, компьютерного анимированного изображения (например, содержимое экрана, изображение виртуальной реальности (VR)) и/или любой их комбинации (например, изображение дополненной реальности (AR)).The
(Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть, изображение может быть представлено или включать в себя три массива выборок. В формате 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
В отличие от блока 18 предварительной обработки и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения (например, видеоданные 16) также могут называться необработанным изображением или данными 17 исходного изображения.Unlike the
Блок 18 предварительной обработки выполнен с возможностью принимать (необработанные) данные 17 изображения и выполнять предварительную обработку данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Выполненная предварительная обработка блоком 18 предварительной обработки может, например, включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.The
Кодер 20 (например, видеокодер 20) выполнен с возможностью принимать предварительно обработанные данные 19 изображения и предоставлять данные 21 закодированного изображения (дополнительные подробности будут описаны ниже, например, на основании фиг.2 или фиг.4).The encoder 20 (eg, video encoder 20) is configured to receive
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью принимать данные 21 закодированного изображения и передавать их другому устройству, например, в устройство 14 назначения или любое другое устройство для хранения или прямого восстановления или для обработки данных 21 закодированного изображения соответственно перед сохранением кодированных данных 13 и/или передачей кодированных данных 13 на другое устройство, например, устройство 14 назначения или любое другое устройство для декодирования или сохранения.The
Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. возможно, содержать интерфейс связи или блок 28 связи, блок 32 постобработки и устройство 34 отображения.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью принимать данные 21 кодированного изображения или кодированные данные 13, например, непосредственно из устройства 12 источника или из любого другого источника, например, запоминающее устройство, например, устройство хранения данных закодированного изображения.The
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передавать или принимать кодированные данные 21 изображения или закодированные данные 13 через прямую линию связи между устройством 12 источника и устройством 14 назначения, например, прямое проводное или беспроводное соединение, или через любую сеть, например, проводную или беспроводную сеть или любую их комбинацию, или любую частную и общественную сеть, или любую их комбинацию.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковывать данные 21 закодированного изображения в соответствующий формат, например, пакеты для передачи по каналу связи или сети связи.The
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью распаковывать закодированные данные 13 для получения данных 21 закодированного изображения.The
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены с возможностью представлять однонаправленные интерфейсы связи, как показано стрелкой для данных 13 кодированного изображения на фиг.1A, указывающей направление от устройства 12 источника к устройству 14 назначения, или двунаправленные интерфейсы связи, и может быть выполнен с возможностью, например, отправлять и получать сообщения, например, для установки соединения, подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, передаче данных закодированного изображения.Both
Декодер 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
Устройство 34 отображения устройства 14 назначения выполнено с возможностью принимать данные 33 изображения с постобработкой для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например встроенный или внешний дисплей или монитор. Дисплеи могут, например, состоят из жидкокристаллических дисплеев (LCD), дисплей на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифрового светового процессора (DLP) или любой другой тип дисплея.The display device 34 of the
Хотя фиг.1A изображает устройство 12 источника и устройство 14 назначения как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, либо с помощью отдельных аппаратных средств и/или программного обеспечения, либо любой их комбинации.Although FIG. 1A depicts
Как будет очевидно для специалиста в данной области техники из описания, наличие и (точное) разделение функциональных возможностей различных модулей или функций в устройстве 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
Кодер 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
Устройство 12 источника может называться устройством кодирования видео или оборудованием кодирования видео. Устройство 14 назначения может называться устройством декодирования видео или оборудованием декодирования видео. Устройство 12 источника и устройство 14 назначения могут быть примерами устройств кодирования видео или оборудования кодирования видео.
Устройство 12 источника и устройство 14 назначения могут включать в себя любое из широкого диапазона устройств, включающие в себя любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства последовательной передачи видео (например, серверы служб контента или контент серверы доставки), широковещательное приемное устройство, широковещательное передающее устройство и т.п., и могут использовать операционную систему любого типа или не использовать ее.
В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.In some cases,
В некоторых случаях система 10 кодирования видео, показанная на фиг.1A, является просто примером, и способы настоящего раскрытия могут применяться к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the
Следует понимать, что для каждого из вышеупомянутых примеров, описанных со ссылкой на видеокодер 20, видеодекодер 30 может быть выполнен с возможностью выполнения обратного процесса. Что касается элементов синтаксиса сигнализации, видеодекодер 30 может быть выполнен с возможностью принимать и анализировать такой элемент синтаксиса и декодировать, ассоциированные видеоданные, соответственно. В некоторых примерах видеокодер 20 может энтропийно кодировать один или более элементов синтаксиса в кодированный битовый последовательность видео. В таких примерах видеодекодер 30 может анализировать такой элемент синтаксиса и соответственно декодировать ассоциированные видеоданные.It should be understood that for each of the above examples described with reference to
Фиг. 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
Как показано, устройство (устройства) 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,
Как показано, в некоторых примерах система 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
В некоторых примерах видеокодер 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
Видеодекодер 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
В некоторых примерах антенна 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
КОДЕР И СПОСОБ КОДИРОВАНИЯ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
Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой тракт сигнала кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания образуют обратный тракт прохождения сигнала кодера, в котором обратный тракт сигнала кодера соответствует тракту сигнала декодера (см. декодер 30 на фиг.3).For example, the residual calculation block 204, the
Кодер 20 выполнен с возможностью принимать, например, посредством ввода 202 изображение 201 или блок 203 изображения 201, например, изображение последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения также может называться блоком текущего изображения или блоком изображения, подлежащим кодированию, и изображение 201 является текущим изображением или изображением, которое должно быть кодировано (в частности, при кодировании видео для различия текущего изображения от других изображений, например, ранее закодированных и/или декодированные изображения одной и той же видеопоследовательности, т.е. видеопоследовательности, которая также включает в себя текущее изображение).
РАЗДЕЛЕНИЕSEPARATION
Варианты осуществления кодера 20 могут содержать блок разделения (не показан на фиг. 2), выполненный с возможностью разделять изображение 201 на множество блоков, например блоки, подобные блоку 203, обычно на множество неперекрывающихся блоков. Блок разделения может быть выполнен с возможностью использовать один и тот же размер блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между изображениями или подмножествами, или группами изображений, и для разделения каждого изображения на соответствующие блоки.Embodiments of
В одном примере блок 260 обработки предсказания видеокодера 20 может быть выполнен с возможностью выполнять любую комбинацию способов разделения, описанных выше.In one example,
Подобно изображению 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
ВЫЧИСЛЕНИЕ ОСТАТОЧНОЙ ВЕЛИЧИНЫ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
Блок 206 обработки преобразования может быть выполнен с возможностью применять целочисленные аппроксимации DCT/DST, таких как преобразования, указанные для HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, применяются дополнительные коэффициенты масштабирования как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основании определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операции сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, блоком 212 обработки обратного преобразования в декодере 30 (и соответствующий обратному преобразованию, например, блоком 212 обработки обратного преобразования в кодере 20) и соответствующими коэффициентами масштабирования для прямого преобразования, например, блоком 206 обработки преобразования может быть определен кодер 20, соответственно.The
КВАНТОВАНИЕQUANTIZATION
Блок 208 квантования выполнен с возможностью квантовать коэффициенты 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 преобразования также могут называться квантованными остаточными коэффициентами 209. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более точного или более грубого квантования. Меньшие размеры этапов квантования соответствуют более точному квантованию, тогда как большие размеры этапов квантования соответствуют более грубому квантованию. Применимый размер этапа квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заданного набора применимых размеров этапа квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры этапов квантования) и большие параметры квантования могут соответствовать грубому квантованию (большие размеры этапов квантования) или наоборот. Квантование может включать в себя деление по размеру этапа квантования и соответствующее или обратное деквантование, например, посредством обратного квантования 210, может включать в себя умножение на размер этапа квантования. Варианты осуществления согласно некоторым стандартам, например, HEVC может быть выполнен с возможностью использовать параметр квантования для определения размера этапа квантования. Как правило, размер этапа квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении фиксированной точки уравнения для размера этапа квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, в котором потери возрастают с увеличением размеров этапов квантования.
Блок 210 обратного квантования выполнен с возможностью применять обратное квантование блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения схемы, обратной схемы квантования, применяемой блоком 208 квантования на основании или с использованием того же размера этапа квантования, как блок 208 квантования. Деквантованные коэффициенты 211 также могут называться деквантованными остаточными коэффициентами 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потерь при квантовании, коэффициентам 207 преобразования.The
Блок 212 обработки обратного преобразования выполнен с возможностью применять обратное преобразование блоком 206 обработки преобразования, например, обратное дискретное косинусное преобразование (DCT) или обратное дискретное синусоидальное преобразование (DST) для получения блока 213 обратного преобразования в области выборки. Блок 213 обратного преобразования может также называться блоком 213 деквантования обратного преобразования или остаточным блоком 213 обратного преобразования.The inverse transform processing unit 212 is configured to apply an inverse transform by the
Блок 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
Варианты осуществления кодера 20 могут быть выполнены с возможностью, например, использовать блок 216 буфера не только для хранения восстановленных блоков 215 для внутреннего предсказания 254, но также для блока 220 контурного фильтра (не показан на фиг.2) и/или, например, блок 216 буфера и блок 230 буфера декодированных изображений образуют один буфер. Дополнительные варианты осуществления могут быть выполнены с возможностью использовать отфильтрованные блоки 221 и/или блоки или выборки из буфера 230 декодированных изображений (оба не показаны на фиг.2) в качестве входных данных или для основы для внутреннего предсказания 254.Embodiments of
Блок 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
Варианты осуществления кодера 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
Буфер 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
Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, выполнен с возможностью принимать или получать блок 203 (текущий блок 203 текущего изображения 201) и данные восстановленного изображения, например, опорных выборок одного и того же (текущего) изображения из буфера 216 и/или данные 231 опорного изображения из одного или множества ранее декодированных изображений из буфера 230 декодированного изображения, и обрабатывать эти данные для предсказания, то есть, чтобы обеспечить блок 265 предсказания, который может быть блоком 245 внешнего предсказания или блоком 255 внутреннего предсказания.The
Блок 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
Варианты осуществления блока 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,
Как описано выше, кодер 20 выполнен с возможностью определять или выбирать наилучший или оптимальный режим предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.As described above,
Набор режимов внутреннего предсказания может содержать 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 и режимов предсказания, применяемых к каждому из разделов или подблоков блока.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) (не показан на фиг.2) и блок компенсации движения (MC) (не показан на фиг.2). Блок оценки движения выполнен с возможностью принимать или получать блок 203 изображения (блок 203 текущего изображения текущего изображения 201) и декодированного изображения 231 или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленные блоки одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например. видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одинаковых или различных изображений из множества других изображений и обеспечивать опорное изображение (или индекс опорного кадра, ...) и/или смещение (пространственное смещение) между позицией (X, Y координаты) опорного блока и позицией текущего блока в качестве взаимосвязанных параметров предсказания в блок оценки движения (не показан на фиг.2). Это смещение также называется вектором движения (MV).The
Блок компенсации движения выполнен с возможностью получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основании или с использованием параметра внешнего предсказания для получения блока 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
Блок 254 внутреннего предсказания выполнен с возможностью получать, например, принимать, блок 203 изображения (текущий блок изображения) и один или множество ранее восстановленных блоков, например, восстановленные соседние блоки одного и того же изображения для внутренней оценки. Кодер 20 может, например, быть выполнен с возможностью выбирать режим внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.The
Варианты осуществления кодера 20 могут быть выполнены с возможностью выбирать режим внутреннего предсказания на основании критерия оптимизации, например, минимальный остаток (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, наиболее похожий на текущий блок 203 изображения) или минимальное отношение искажение-скорость.Embodiments of the
Блок 254 внутреннего предсказания дополнительно выполнен с возможностью определять на основании параметра внутреннего предсказания, например, выбранный режим внутреннего предсказания, блок 255 внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания для блока, блок 254 внутреннего предсказания также выполнен с возможностью предоставлять параметр внутреннего предсказания, то есть, информацию, указывающую выбранный режим внутреннего предсказания для блока в блок 270 энтропийного кодирования. В одном примере блок 254 внутреннего предсказания может быть выполнен с возможностью выполнять любую комбинацию способов внутреннего предсказания, описанных ниже.The
Блок 270 энтропийного кодирования выполнен с возможностью применять алгоритм или схему энтропийного кодирования (например, схема кодирования с переменной длиной (VLC), контекстно-адаптивная схема VLC (CALVC), схема арифметического кодирования, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанное на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийное кодирование с вероятностным интервалом разделения (PIPE) или другой способ или способ энтропийного кодирования) к квантованным остаточным коэффициентам 209, параметры внешнего предсказания, параметр внутреннего предсказания и/или параметры контурного фильтра, по отдельности или вместе (или не полностью) для получения данных 21 закодированного изображения, которые могут быть выведены выходом 272, например, в форме закодированного битового потока 21. Закодированный битовый поток 21 может быть передан в видеодекодер 30 или заархивирован для последующей передачи или поиска видеодекодером 30. Блок 270 энтропийного кодирования может быть дополнительно выполнен с возможностью энтропийного кодирования других элементов синтаксиса для кодируемого текущего сегмента видео.The
Другие структурные варианты видеокодера 20 могут использоваться для кодирования потока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в один блок.Other structural variants of
Фиг.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
Блок 304 энтропийного декодирования выполнен с возможностью выполнять энтропийное декодирование кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг.3), например, (декодированный) любой или все параметры внешнего предсказания, параметр внутреннего предсказания, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования дополнительно выполнен с возможностью пересылать параметры внешнего предсказания, параметр внутреннего предсказания и/или другие элементы синтаксиса в блок 360 обработки предсказания. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне блока видео.The
Блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичным по функциям блоку 112 обработки обратного преобразования, блок 314 восстановления может быть идентичным по функциям блоку 114 восстановления, буфер 316 может быть идентичен по функциям буферу 116, контурный фильтр 320 может быть идентичен по функции контурному фильтру 120 и буфер 330 декодированного изображения может быть идентичен по функции буферу 130 декодированного изображения.
Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания и блок 354 внутреннего предсказания, в котором блок 344 внешнего предсказания может быть аналогичен по функционалу блоку 144 внешнего предсказания, блок 354 внутреннего предсказания может быть аналогичен по функционалу блоку 154 внутреннего предсказания. Блок 360 обработки предсказания обычно выполнен с возможностью выполнять предсказание блока и/или получения блока 365 предсказания из закодированных данных 21, и принимать или получать (явно или неявно) ассоциированные с предсказанием параметры и/или информацию о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.
Когда сегмент видео кодируется как внутренне кодированный (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
Блок 360 обработки предсказания выполнен с возможностью определять информацию предсказания для блока видео текущего сегмента видео путем анализа векторов движения и других элементов синтаксиса и использовать информацию предсказания для генерирования блоков предсказания для текущего декодируемого блока видео. Например, блок 360 обработки предсказания использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования блоков видео сегмента видео, типа сегмента внешнего предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информацию составления одного или более списков опорных изображений для сегмента, векторы движения для каждого внешне кодированного блока видео сегмента, статус внешнего предсказания для каждого внешне кодированного блока видео сегмента и другую информацию для декодирования блоков видео в текущем сегмента видео.The
Блок 310 обратного квантования выполнен с возможностью выполнять обратное квантование, то есть, деквантование квантованных коэффициентов преобразования, предоставленных в битовом потоке и декодированных блоком 304 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 100 для каждого блока видео в сегменте видео для определения степени квантования и, аналогично, степени обратного квантования, которое должно применяться.The
Блок 312 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования для генерирования остаточных блоков в области пикселей.The inverse
Блок 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
Декодированные блоки 321 видео в данном кадре или изображении затем сохраняются в буфере 330 декодированных изображений, в котором хранятся опорные изображения, используемые для последующей компенсации движения.The decoded video blocks 321 in a given frame or picture are then stored in the decoded
Декодер 30 выполнен с возможностью выводить декодированное изображение 311, например, через выход 312 для представления или просмотра пользователю.The decoder 30 is configured to output the decoded
Другие варианты видеодекодера 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
Фиг.4 является схемой устройства 400 кодирования видео согласно варианту осуществления настоящего раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг.1A или кодер, такой как видеокодер 20 по фиг.1А. В варианте осуществления устройство 400 кодирования видео может быть одним или более компонентами видеодекодера 30 по фиг.1A или видеокодера 20 по фиг. 1A, как описано выше.4 is a diagram of a
Устройство 400 кодирования видео содержит входные порты 410 и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и выходные порты 450 для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео может также содержать оптико-электрические (OE) компоненты и электрические-оптические (EO) компоненты, подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для вывода или ввода оптических или электрических сигналов.The
Процессор 430 реализован аппаратным и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 соединен с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные операции кодирования. Таким образом, использование модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.
Память 460 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве запоминающего устройства для переполнения данных, для хранения программ, когда такие программы выбраны для выполнения, а также для хранения инструкций и данных, которые читаются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM).
Фиг.5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства 310 источника и устройство 320 назначения по фиг.1 согласно примерному варианту осуществления. Устройство 500 может реализовывать описанные выше технологии настоящего раскрытия. Устройство 500 может быть в форме вычислительной системы, включающей в себя несколько вычислительных устройств, или в форме одного вычислительного устройства, например, мобильного телефона, планшетного компьютера, портативного компьютера, портативного компьютера, настольного компьютера и тому подобное.FIG. 5 is a simplified block diagram of a
Процессор 502 в устройстве 500 может быть центральным процессором. Альтернативно, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например, с процессором 502, с использованием более чем одного процессора могут быть достигнуты преимущества в скорости и эффективности.
Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя, по меньшей мере, одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы. Устройство 500 также может включать в себя дополнительную память в виде вторичного хранилища 514, которым может быть, например, карта памяти, используемая с мобильным вычислительным устройством. Поскольку сеансы видеосвязи могут содержать значительный объем информации, они могут быть сохранены полностью или частично во вторичном хранилище 514 и загружены в память 504 по мере необходимости для обработки.
Устройство 500 также может включать в себя одно или более устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который сочетает в себе дисплей с сенсорным элементом, способным распознавать прикосновения. Дисплей 518 может быть подключен к процессору 502 через шину 512. Другие устройства вывода, которые позволяют пользователю программировать или иным образом использовать устройство 500, могут быть предоставлены в дополнение к дисплею 518 или в качестве альтернативы ему. Когда устройство вывода работает или включает в себя дисплей, дисплей может быть реализован различными способами, в том числе с помощью жидкокристаллического дисплея (LCD), дисплея с электронно-лучевой трубкой (CRT), плазменного дисплея или дисплея на светоизлучающих диодах (LED), например, органический светодиодный дисплей (OLED).The
Устройство 500 также может включать в себя устройство 520 формирования изображений, например, камеру, или любое другое устройство 520 формирования изображений, существующее в настоящее время или разработанное в будущем, которое может воспринимать изображение, такое как изображение пользователя устройства 500. Устройство 520 формирования изображений может быть расположено так, чтобы оно было направлено на пользователя, работающего с устройством 500. В примере положение и оптическая ось устройства 520 формирования изображений могут быть сконфигурированы таким образом, что поле зрения включает в себя область, которая непосредственно примыкает к дисплею 518 и из которой виден дисплей 518.The
Устройство 500 может также включать в себя устройство 522 обнаружения звука, например, микрофон, или любое другое устройство обнаружения звука, существующее в настоящее время или разработанное в дальнейшем, которое может воспринимать звуки вблизи устройства 500. Устройство 522 обнаружения звука может быть расположено таким образом, чтобы оно было направлено на пользователя, управляющего устройством 500, и может быть выполнено с возможностью принимать звуки, например, речь или другие звуки, издаваемые пользователем, когда пользователь управляет устройством 500.The
Хотя фиг.5 изображает процессор 502 и память 504 устройства 500 как интегрированные в единый блок, можно использовать другие конфигурации. Операции процессора 502 могут быть распределены между несколькими машинами (каждая машина имеет один или более процессоров), которые могут быть соединены напрямую или через локальную область или другую сеть. Память 504 может быть распределена между несколькими машинами, такими как сетевая память или память на нескольких машинах, выполняющих операции устройства 500. Хотя здесь изображена одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или более блоков, таких как несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.Although FIG. 5 depicts
В 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-
Этап 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.
Однако при объединении 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
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
В реализации для кадра изображения каждая строка 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
Способ 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
Согласно способам с 1 по 3, обработка текущей строки CTU не требует ожидания завершения обработки предшествующей строки CTU текущей строки CTU, что позволяет повысить эффективность обработки кадра текущего изображения.According to
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
Следует отметить, что вышеупомянутые способы построения/инициализации 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
Кроме того, следует отметить, что вышеупомянутые способы, касающиеся комбинации волновых фронтов и предсказания на основании 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,
Фиг.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
Этап 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
После инициализации 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 списка.
Обработка может быть процессом внешнего предсказания, таким образом, может быть получен блок предсказания. Операция восстановления может выполняться на основании блока предсказания, чтобы получить восстановленный блок, наконец, декодированное изображение может быть получено на основании восстановленного блока. Подробности этих процессов описаны выше.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
В одной реализации обработка текущей строки 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
Блок 1110 инициализации, выполненный с возможностью инициализации HMVP списка для текущей строки CTU, когда текущий CTU является начальным CTU (первым CTU) текущей строки CTU.
Детали инициализации, выполняемой блоком 1110 инициализации, могут относиться к этапу 1010.Details of the initialization performed by the
Блок 1120 обработки, выполненный с возможностью обрабатывать текущую строку CTU на основании HMVP списка.A
Подробная информация обработки, выполняемой блоком 1120 обработки, может относиться к этапу 1020.Details of the processing performed by the
Обработка может быть процессом внешнего предсказания, таким образом, может быть получен блок предсказания. Операция восстановления может выполняться на основании блока предсказания для получения восстановленного блока, наконец, декодированное изображение может быть получено на основании восстановленного блока. Подробности этих процессов описаны выше.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
Настоящее изобретение дополнительно раскрывает кодер, который включает в себя схему обработки для выполнения способа обработки видео или способа кодирования настоящего раскрытия.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-
( 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 ) ) {
Где 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-
Входными данными процесса являются: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)
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)
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 |