RU2783337C2 - Method for video decoding and video decoder - Google Patents

Method for video decoding and video decoder Download PDF

Info

Publication number
RU2783337C2
RU2783337C2 RU2021109443A RU2021109443A RU2783337C2 RU 2783337 C2 RU2783337 C2 RU 2783337C2 RU 2021109443 A RU2021109443 A RU 2021109443A RU 2021109443 A RU2021109443 A RU 2021109443A RU 2783337 C2 RU2783337 C2 RU 2783337C2
Authority
RU
Russia
Prior art keywords
syntax element
current block
block
context
value
Prior art date
Application number
RU2021109443A
Other languages
Russian (ru)
Other versions
RU2021109443A (en
Inventor
Хуаньбан ЧЭНЬ
Хайтао ЯН
Original Assignee
Хуавэй Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавэй Текнолоджиз Ко., Лтд. filed Critical Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2021109443A publication Critical patent/RU2021109443A/en
Application granted granted Critical
Publication of RU2783337C2 publication Critical patent/RU2783337C2/en

Links

Images

Abstract

FIELD: video decoding.
SUBSTANCE: decoding method is proposed, which includes stages of: syntaxis analysis of the received bit stream for obtaining a syntaxis element to be entropically decoded in a current block, where the syntaxis element to be entropically decoded in the current block includes syntaxis element 1 and syntaxis element 2 in the current block; obtaining a context model corresponding to the syntaxis element to be entropically decoded, while the context model corresponding to syntaxis element 1 is determined from a predetermined set of context models, or the context model corresponding to syntaxis element 2 is determined from this set of context models; entropic decoding of the syntaxis element to be entropically decoded based on the context model corresponding to the syntaxis element to be entropically decoded in the current block; processing of a prediction relatively to the current block based on the syntaxis element, which is located in the current block, and which is obtained by means of entropic decoding, to obtain a prediction block of the current block; and obtaining a restored image of the current block based on the prediction block of the current block.
EFFECT: increase in the efficiency of decoding for reduction in space necessary for a decoder for storage of context.
17 cl, 15 dwg, 5 tbl

Description

[0001] По настоящей заявке испрашивает приоритет на основе китайской патентной заявки № 201811053068.0, поданной в Национальное управление интеллектуальной собственности Китая 10 сентября 2018 г. и озаглавленной "VIDEO DECODING METHOD AND VIDEO DECODER" ("СПОСОБ ДЕКОДИРОВАНИЯ ВИДЕО И ВИДЕОДЕКОДЕР"), которая полностью включена в настоящий документ посредством ссылки.[0001] This application claims priority based on Chinese Patent Application No. 201811053068.0 filed with the China National Intellectual Property Administration on September 10, 2018 and entitled "VIDEO DECODING METHOD AND VIDEO DECODER", which is fully incorporated herein by reference.

Область техникиTechnical field

[0002] Варианты осуществления настоящей заявки, в целом, относятся к области кодирования видео и, более конкретно, к способу декодирования видео и видеодекодеру.[0002] Embodiments of the present application generally relate to the field of video coding and, more specifically, to a video decoding method and a video decoder.

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

[0003] Кодирование видео (закодирование и декодирование видео) используется в широком спектре приложений цифрового видео, например, для цифрового телевещания, передачи видео через Интернет и мобильные сети, диалоговых приложений в реальном времени, таких как видеочат и видеоконференцсвязь, DVD и Blu-ray диски, а также приложения для обеспечения безопасности систем сбора и редактирования видеоконтента и видеокамер.[0003] Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as digital TV broadcasting, video transmission over the Internet and mobile networks, real-time conversational applications such as video chat and videoconferencing, DVD and Blu-ray disks, as well as applications for ensuring the security of video content collection and editing systems and video cameras.

[0004] С развитием блочного гибридного режима кодирования видео в стандарте H.261 в 1990 году были разработаны новые технологии и инструменты кодирования видео, которые заложили основу для новых стандартов кодирования видео. Другие стандарты кодирования видео включают в себя видео MPEG-1, MPEG-2 видео, 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), а также расширения таких стандартов, например, расширения в плане масштабируемости и/или 3D (трехмерные) расширения таких стандартов. Поскольку создание и использование видео становится все более распространенным, трафик видео стал самой большой нагрузкой для сетей связи и хранения данных. Следовательно, одной из целей большинства стандартов кодирования видео является снижение битрейта (расхода (скорости) битов) без ущерба для качества изображения по сравнению с предыдущими стандартами. Хотя новейшее высокоэффективное кодирование видео (high efficiency video coding, HEVC) может сжимать видео примерно в два раза больше, чем AVC, без ущерба для качества изображения, по-прежнему существует острая необходимость в новой технологии для дальнейшего сжатия видео по сравнению с HEVC.[0004] With the development of block hybrid video coding in the H.261 standard in 1990, new video coding technologies and tools were developed that laid the foundation for new video coding standards. Other 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 coding video (Advanced Video Coding, AVC) and ITU-T H.265/high-efficiency video coding (High Efficiency Video Coding, HEVC), as well as extensions of such standards, such as extensions in terms of scalability and / or 3D (three-dimensional) extensions of such standards . As the creation and use of video becomes more common, video traffic has become the biggest burden on communication and storage networks. Therefore, one of the goals of most video coding standards is to reduce the bitrate (rate (rate) of bits) without sacrificing image quality compared to previous standards. Although the latest high efficiency video coding (HEVC) can compress video about twice as much as AVC without sacrificing image quality, there is still a strong need for new technology to further compress video compared to HEVC.

Сущность изобретенияThe essence of the invention

[0005] Вариантами осуществления настоящей заявки предоставляется способ декодирования видео и видеодекодер, чтобы уменьшить пространство, необходимое кодеру или декодеру для хранения контекста.[0005] Embodiments of the present application provide a video decoding method and a video decoder to reduce the space required by the encoder or decoder to store context.

[0006] Вышеупомянутые и другие цели достигаются посредством изобретений согласно независимым пунктам формулы изобретения. Другие реализации очевидны из зависимых пунктов формулы изобретения, описания изобретения и прилагаемых чертежей.[0006] The above and other objects are achieved by the inventions according to the independent claims. Other implementations are apparent from the dependent claims, the description of the invention and the accompanying drawings.

[0007] Согласно первому аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ (парсинг) принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где энтропийное декодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное декодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием этой модели контекста; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0007] According to a first aspect, a video decoding method is provided, including the steps of: parsing (parsing) a received bit stream to obtain an entropy decoding syntax element in a current block, where the entropy decoding syntax element in the current block is includes syntax element 1 in the current block or syntax element 2 in the current block; perform entropy decoding on the syntax element to be entropy decoded in the current block, where entropy decoding on the syntax element 1 in the current block is performed using a predetermined context model, or entropy decoding on the syntax element 2 in the current block is performed using this model context performing prediction processing on the current block based on the syntax element that is in the current block and which is obtained by entropy decoding to obtain a prediction block of the current block; and obtaining a reconstructed image of the current block based on the prediction block of the current block.

[0008] Поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, декодеру не нужно подтверждать модель контекста при выполнении энтропийного декодирования, чем повышается эффективность декодирования при выполнении декодирования видео декодером. Кроме того, поскольку видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, может заниматься меньше пространства хранения в видеодекодере.[0008] Since syntax element 1 and syntax element 2 in the current block share the same context model, the decoder does not need to confirm the context model when performing entropy decoding, thereby improving decoding efficiency when decoding is performed by the video decoder. In addition, since the video decoder only needs to store one context model for syntax element 1 and syntax element 2, less storage space may be occupied in the video decoder.

[0009] Согласно второму аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0009] According to a second aspect, a video decoding method is provided, including: parsing a received bit stream to obtain an entropy decoding syntax element in a current block, where the entropy decoding syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; get a context model corresponding to the syntax element to be entropy decoded, where the context model corresponding to the syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 2 in the current block is determined from this predefined set context models; performing entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block; performing prediction processing on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block; and obtaining a reconstructed image of the current block based on the prediction block of the current block.

[0010] Поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодер должен хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, чем занимается меньше пространства хранения в видеодекодере.[0010] Because syntax element 1 and syntax element 2 in the current block share the same context model, the video decoder only needs to store one context model for syntax element 1 and syntax element 2, which takes up less storage space in the video decoder.

[0011] Со ссылкой на второй аспект, в возможной реализации количество моделей контекста в заранее заданном наборе моделей контекста равно 2 или 3.[0011] With reference to the second aspect, in a possible implementation, the number of context models in a predefined set of context models is 2 or 3.

[0012] Со ссылкой на второй аспект, в возможной реализации, то, что модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке; или [0012] With reference to the second aspect, in an exemplary implementation, that the context model corresponding to the syntax element 1 in the current block is determined from a predefined set of context models includes: determining the context index of the syntax element 1 in the current block based on syntax element 1 and syntax element 2 in the left adjacent block of the current block and syntax element 1 and syntax element 2 in the upper adjacent block of the current block, where the context index of the syntax element 1 in the current block is used to indicate the context model corresponding to the syntax element 1 in the current block ; or

то, что модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.that the context model corresponding to the syntax element 2 in the current block is determined from a predefined set of context models includes: determining the context index of the syntax element 2 in the current block based on the syntax element 1 and the syntax element 2 in the left adjacent block of the current block and syntax element 1 and syntax element 2 in the upper adjacent block of the current block, where the context index of the syntax element 2 in the current block is used to indicate the context model corresponding to the syntax element 2 in the current block.

[0013] Со ссылкой на второй аспект, в возможной реализации, если количество моделей контекста в заранее заданном наборе моделей контекста равно 3, значение индекса контекста элемента 1 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ (OR) в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или[0013] With reference to the second aspect, in an exemplary implementation, if the number of context models in the predefined set of context models is 3, the context index value of syntax element 1 in the current block is the sum of the value obtained by performing an OR operation on the element 1 syntax and syntax element 2 in the upper adjacent block, and the value obtained by performing an OR operation on the syntax element 1 and syntax element 2 in the left neighboring block; or

значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.the context index value of syntax element 2 in the current block is the sum of the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper adjacent block, and the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in left adjacent block.

[0014] Со ссылкой на второй аспект, в возможной реализации, если количество моделей контекста в заданном наборе моделей контекста равно 2, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или[0014] With reference to the second aspect, in an exemplary implementation, if the number of context models in a given context model set is 2, the context index value of syntax element 1 in the current block is the result obtained by performing the OR operation on the value obtained by performing the operation OR with respect to syntax element 1 and syntax element 2 in the upper adjacent block, and the value obtained by performing an OR operation with respect to syntax element 1 and syntax element 2 in the left neighboring block; or

значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.the context index value of syntax element 2 in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper neighboring block, and the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent box.

[0015] Со ссылкой на первый или второй аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез (слайс), в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или[0015] With reference to the first or second aspect, in an exemplary implementation, the syntax element 1 in the current block is affine_merge_flag and is used to indicate whether the merge mode based on the affine motion model is used for the current block, or the syntax element 2 in the current block is an affine_inter_flag and is used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or

элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.syntax element 1 in the current block is a subblock_merge_flag and is used to indicate whether the subblock-based merge mode is used for the current block, or syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine model-based AMVP mode is used movement for the current block when the slice in which the current block is located is a P-type slice or a B-type slice.

[0016] Согласно третьему аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0016] According to a third aspect, a video decoding method is provided, including: parsing a received bitstream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes syntax element 3 in the current block or syntax element 4 in the current block; get a context model corresponding to the syntax element to be entropy decoded, where the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set context models; performing entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block; performing prediction processing on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block; and obtaining a reconstructed image of the current block based on the prediction block of the current block.

[0017] Поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодер должен хранить только одну модель контекста для элемента синтаксиса 3 и элемента синтаксиса 4, чем занимается меньше пространства хранения в видеодекодере.[0017] Because syntax element 3 and syntax element 4 in the current block share the same context model, the video decoder only needs to store one context model for syntax element 3 and syntax element 4, which takes up less storage space in the video decoder.

[0018] Со ссылкой на третий аспект, в возможной реализации набор заранее заданных моделей контекста включает в себя пять моделей контекста.[0018] With reference to a third aspect, in an exemplary implementation, the set of predefined context models includes five context models.

[0019] Со ссылкой на третий аспект, в возможной реализации, элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx и используется для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; или [0019] With reference to a third aspect, in an exemplary implementation, the syntax element 3 in the current block is merge_idx and is used to indicate the merge candidate list index value for the current block, or the syntax element 4 in the current block is affine_merge_idx and is used to indicate affine merge candidate list index values for the current block; or

элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это subblock_merge_idx и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.syntax element 3 in the current block is merge_idx and is used to indicate the value of the merge candidate list index for the current block, or syntax element 4 in the current block is subblock_merge_idx and is used to indicate the subblock-based merge candidate list index value.

[0020] Согласно четвертому аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; определяют значения индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке на основе значений элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и значений элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе значения индекса контекста подлежащего энтропийному декодированию элемента синтаксиса в текущем блоке; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0020] According to a fourth aspect, a video decoding method is provided, including: parsing a received bit stream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; determining context index values of the syntax element to be entropy decoded in the current block based on the values of the syntax element 1 and the syntax element 2 in the left adjacent block of the current block and the values of the syntax element 1 and the syntax element 2 in the upper neighboring block of the current block; performing entropy decoding on the syntax element to be entropy decoded based on the context index value of the syntax element to be entropy decoded in the current block; performing prediction processing on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block; and obtaining a reconstructed image of the current block based on the prediction block of the current block.

[0021] Со ссылкой на четвертый аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или [0021] With reference to a fourth aspect, in an exemplary implementation, the syntax element 1 in the current block is affine_merge_flag and is used to indicate whether the affine motion model-based merge mode is used for the current block, or the syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or

элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.syntax element 1 in the current block is a subblock_merge_flag and is used to indicate whether the subblock-based merge mode is used for the current block, or syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine model-based AMVP mode is used movement for the current block when the slice in which the current block is located is a P-type slice or a B-type slice.

[0022] Со ссылкой на четвертый аспект, в возможной реализации, определение значения индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке на основе значений элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и значений элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока включает в себя:[0022] With reference to a fourth aspect, in an exemplary implementation, determining a context index value of a syntax element to be entropy decoded in the current block based on the values of syntax element 1 and syntax element 2 in the left adjacent block of the current block and the values of syntax element 1 and element 2 syntax in the top adjacent block of the current block includes:

определение значения индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:determining the context index value of the syntax element to be entropy decoded in the current block according to the following logical expression:

Индекс контекста = (condL && availableL) + (condA && availableA), гдеContext index = (condL && availableL) + (condA && availableA), where

condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение элемента 1 синтаксиса в левом соседнем блоке, а элемент 2 синтаксиса [x0-1][y0] указывает значение элемента 2 синтаксиса в левом соседнем блоке;condL = syntax element 1 [x0-1][y0] | syntax element 2 [x0-1][y0], where syntax element 1 [x0-1][y0] specifies the value of syntax element 1 in the left adjacent block, and syntax element 2 [x0-1][y0] specifies the value of element 2 syntax in the left adjacent block;

condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение элемента 1 синтаксиса в верхнем соседнем блоке, а элемент 2 синтаксиса [x0][y0-1] указывает значение элемента 2 синтаксиса в верхнем соседнем блоке; иcondA = syntax element 1 [x0][y0-1] | syntax element 2 [x0][y0-1], where syntax element 1 [x0][y0-1] indicates the value of syntax element 1 in the upper adjacent box, and syntax element 2 [x0][y0-1] indicates the value of element 2 syntax in the upper neighboring block; and

availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок.availableL indicates whether the left neighbor is available, and availableA indicates whether the top neighbor is available.

[0023] Согласно пятому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; определять значение индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке на основе значений элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и значений элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе значения индекса контекста подлежащего энтропийному декодированию элемента синтаксиса в текущем блоке; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.[0023] According to a fifth aspect, a video decoder is provided, including: an entropy decoding module configured to parse a received bitstream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes: itself the syntax element 1 in the current block or the syntax element 2 in the current block; determine a context index value of the syntax element to be entropy decoded in the current block based on the values of the syntax element 1 and the syntax element 2 in the left adjacent block of the current block and the values of the syntax element 1 and the syntax element 2 in the upper neighboring block of the current block; and perform entropy decoding on the syntax element to be entropy decoded based on the context index value of the syntax element to be entropy decoded in the current block; a prediction processing unit, configured to perform prediction processing on the current block based on the syntax element which is in the current block and which is obtained by entropy decoding to obtain a prediction block of the current block; and a reconstruction module, configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0024] Со ссылкой на пятый аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или[0024] With reference to the fifth aspect, in an exemplary implementation, the syntax element 1 in the current block is affine_merge_flag and is used to indicate whether the affine motion model based merge mode is used for the current block, or the syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or

элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.syntax element 1 in the current block is a subblock_merge_flag and is used to indicate whether the subblock-based merge mode is used for the current block, or syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine model-based AMVP mode is used movement for the current block when the slice in which the current block is located is a P-type slice or a B-type slice.

[0025] Со ссылкой на пятый аспект, в возможной реализации, блок энтропийного декодирования конкретно выполнен с возможностью:[0025] With reference to the fifth aspect, in a possible implementation, the entropy decoding unit is specifically configured to:

определять значение индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:determine the value of the context index of the syntax element to be entropy decoded in the current block according to the following logical expression:

Индекс контекста = (condL && availableL) + (condA && availableA), гдеContext index = (condL && availableL) + (condA && availableA), where

condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение элемента 1 синтаксиса в левом соседнем блоке, а элемент 2 синтаксиса [x0-1][y0] указывает значение элемента 2 синтаксиса в левом соседнем блоке;condL = syntax element 1 [x0-1][y0] | syntax element 2 [x0-1][y0], where syntax element 1 [x0-1][y0] specifies the value of syntax element 1 in the left adjacent block, and syntax element 2 [x0-1][y0] specifies the value of element 2 syntax in the left adjacent block;

condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение элемента 1 синтаксиса в верхнем соседнем блоке, а элемент 2 синтаксиса [x0][y0-1] указывает значение элемента 2 синтаксиса в верхнем соседнем блоке; иcondA = syntax element 1 [x0][y0-1] | syntax element 2 [x0][y0-1], where syntax element 1 [x0][y0-1] specifies the value of syntax element 1 in the top adjacent block, and syntax element 2 [x0][y0-1] specifies the value of element 2 syntax in the upper neighboring block; and

availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок.availableL indicates whether the left neighbor is available, and availableA indicates whether the top neighbor is available.

[0026] Согласно шестому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное декодирование в отношении подлежащего энтропийному декодированию элемента синтаксиса в текущем блоке, где энтропийное декодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное декодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.[0026] According to a sixth aspect, a video decoder is provided, including: an entropy decoding module, configured to: parse a received bitstream to obtain an entropy decoded syntax element in a current block, where the entropy decoded syntax element in the current block includes includes syntax element 1 in the current block or syntax element 2 in the current block; and perform entropy decoding on the syntax element to be entropy decoded in the current block, where entropy decoding on the syntax element 1 in the current block is performed using a predetermined context model or entropy decoding on the syntax element 2 in the current block is performed using this context model ; a prediction processing unit, configured to perform prediction processing on the current block based on the syntax element which is in the current block and which is obtained by entropy decoding to obtain a prediction block of the current block; and a reconstruction module, configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0027] Согласно седьмому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.[0027] According to a seventh aspect, a video decoder is provided, including: an entropy decoding module, configured to: parse a received bit stream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes includes syntax element 1 in the current block or syntax element 2 in the current block; obtain the context model corresponding to the syntax element to be entropy decoded, where the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set of models context and perform entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block; a prediction processing unit, configured to perform prediction processing on the current block based on the syntax element which is in the current block and which is obtained by entropy decoding to obtain a prediction block of the current block; and a reconstruction module, configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0028] Со ссылкой на седьмой аспект, в возможной реализации, количество моделей контекста в заранее заданном наборе моделей контекста равно 2 или 3.[0028] With reference to the seventh aspect, in an exemplary implementation, the number of context models in a predetermined set of context models is 2 or 3.

[0029] Со ссылкой на седьмой аспект, в возможной реализации, модуль энтропийного декодирования конкретно выполнен с возможностью: определять индекс контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке; или [0029] With reference to the seventh aspect, in an exemplary implementation, the entropy decoding module is specifically configured to: determine the context index of the syntax element 1 in the current block based on the syntax element 1 and the syntax element 2 in the left adjacent block of the current block and the syntax element 1, and a syntax element 2 in the upper adjacent block of the current block, where the context index of the syntax element 1 in the current block is used to indicate the context model corresponding to the syntax element 1 in the current block; or

определять индекс контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока, а также элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.determine the context index of the syntax element 2 in the current block, based on the syntax element 1 and the syntax element 2 in the left adjacent block of the current block, and the syntax element 1 and the syntax element 2 in the upper adjacent block of the current block, where the context index of the syntax element 2 in the current block is used to indicate the context model corresponding to syntax element 2 in the current block.

[0030] Со ссылкой на седьмой аспект, в возможной реализации, если количество моделей контекста в заданном наборе моделей контекста равно 3, значение индекса контекста элемента 1 синтаксиса в текущем блоке представляет собой сумму значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или [0030] With reference to the seventh aspect, in an exemplary implementation, if the number of context models in a given context model set is 3, the context index value of syntax element 1 in the current block is the sum of the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper adjacent block, and a value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent block; or

значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.the context index value of syntax element 2 in the current block is the sum of the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper adjacent block, and the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in left adjacent block.

[0031] Со ссылкой на седьмой аспект, в возможной реализации, если количество моделей контекста в заранее заданном наборе моделей контекста равно 2, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или[0031] With reference to the seventh aspect, in an exemplary implementation, if the number of context models in the predetermined set of context models is 2, the context index value of syntax element 1 in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper adjacent block, and a value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent block; or

значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.the context index value of syntax element 2 in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper adjacent block, and the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent box.

[0032] Со ссылкой на шестой или седьмой аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или[0032] With reference to the sixth or seventh aspect, in a possible implementation, the syntax element 1 in the current block is affine_merge_flag and is used to indicate whether the affine motion model-based merge mode is used for the current block, or the syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or

элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.syntax element 1 in the current block is a subblock_merge_flag and is used to indicate whether the subblock-based merge mode is used for the current block, or syntax element 2 in the current block is affine_inter_flag and is used to indicate whether the affine model-based AMVP mode is used movement for the current block when the slice in which the current block is located is a P-type slice or a B-type slice.

[0033] Согласно восьмому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащего энтропийному декодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.[0033] According to an eighth aspect, a video decoder is provided, including: an entropy decoding module, configured to: parse a received bit stream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes includes syntax element 3 in the current block or syntax element 4 in the current block; obtain the context model corresponding to the syntax element to be entropy decoded, where the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set context models; and perform entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block; a prediction processing unit, configured to perform prediction processing on the current block based on the syntax element which is in the current block and which is obtained by entropy decoding to obtain a prediction block of the current block; and a reconstruction module, configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0034] Со ссылкой на восьмой аспект, в возможной реализации, заранее заданный набор моделей контекста включает в себя пять моделей контекста.[0034] With reference to the eighth aspect, in an exemplary implementation, the predefined set of context models includes five context models.

[0035] Со ссылкой на восьмой аспект, в возможной реализации, элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx и используется для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; или[0035] With reference to the eighth aspect, in an exemplary implementation, the syntax element 3 in the current block is merge_idx and is used to indicate the merge candidate list index value for the current block, or the syntax element 4 in the current block is affine_merge_idx and is used to indicate affine merge candidate list index values for the current block; or

элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это subblock_merge_idx и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.syntax element 3 in the current block is merge_idx and is used to indicate the value of the merge candidate list index for the current block, or syntax element 4 in the current block is subblock_merge_idx and is used to indicate the subblock-based merge candidate list index value.

[0036] Согласно девятому аспекту предоставляется способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; выполняют энтропийное кодирование в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке, где при выполнении энтропийного кодирования в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке, энтропийное кодирование в отношении элемента 1 синтаксис в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием этой модели контекста; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.[0036] According to a ninth aspect, an encoding method is provided, including: obtaining a syntax element to be entropy encoded in a current block, where a syntax element to be entropy encoded in the current block includes a syntax element 1 in the current block, or an element 2 syntaxes in the current block; performing entropy encoding on the syntax element to be entropy encoded in the current block, where when entropy encoding is performed on the syntax element to be entropy encoded in the current block, entropy encoding is performed on the syntax element 1 in the current block using a predetermined context model or entropy encoding in relation to the syntax element 2 in the current block is performed using this context model; and outputting a bit stream including the syntax element that is in the current block and obtained by entropy encoding.

[0037] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к первому аспекту.[0037] For a specific syntax element and a specific context model, refer to the first aspect.

[0038] В соответствии с десятым аспектом предоставляется способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.[0038] According to a tenth aspect, an encoding method is provided, including the steps of: obtaining a syntax element to be entropy encoded in a current block, where a syntax element to be entropy encoded in the current block includes a syntax element 1 in the current block or syntax element 2 in the current block; obtain a context model corresponding to the syntax element to be entropy encoded, where the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set context models; performing entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and outputting a bit stream including the syntax element that is in the current block and obtained by entropy encoding.

[0039] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться ко второму аспекту.[0039] For a specific syntax element and a specific context model, refer to the second aspect.

[0040] Согласно одиннадцатому аспекту предоставляется способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.[0040] According to an eleventh aspect, an encoding method is provided, including the steps of: obtaining a syntax element to be entropy encoded in a current block, where a syntax element to be entropy encoded in the current block includes a syntax element 3 in the current block, or an element 4 syntaxes in the current block; get a context model corresponding to the syntax element to be entropy encoded, where the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set context models; performing entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and outputting a bit stream including the syntax element that is in the current block and obtained by entropy encoding.

[0041] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к третьему аспекту.[0041] For a specific syntax element and a specific context model, refer to the third aspect.

[0042] Согласно двенадцатому аспекту предоставляется видеокодер, включающий в себя: модуль энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, где при выполнении энтропийного кодирования в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке энтропийное кодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста, или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста; и выход, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.[0042] According to a twelfth aspect, a video encoder is provided, including: an entropy encoding unit configured to: obtain a syntax element to be entropy encoded in a current block, where a syntax element to be entropy encoded in the current block includes a syntax element 1 in the current block or syntax element 2 in the current block; and perform entropy encoding on the syntax element to be entropy encoded in the current block, where, when entropy encoding is performed on the syntax element to be entropy encoded in the current block, entropy encoding is performed on the syntax element 1 in the current block using a predetermined context model, or entropy encoding with respect to syntax element 2 in the current block is performed using the given context model; and an output configured to output a bit stream including a syntax element that is in the current block and obtained by entropy encoding.

[0043] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к четвертому аспекту.[0043] For a specific syntax element and a specific context model, refer to the fourth aspect.

[0044] В соответствии с тринадцатым аспектом предоставляется видеокодер, включающий в себя: модуль энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.[0044] According to a thirteenth aspect, a video encoder is provided, including: an entropy encoding module, configured to: obtain an entropy-encoded syntax element in the current block, where the entropy-encoded syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; obtain the context model corresponding to the syntax element to be entropy encoded, where the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set context models; and perform entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and an output configured to output a bitstream including a syntax element that is in the current block and obtained by entropy encoding.

[0045] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к пятому аспекту.[0045] For a specific syntax element and a specific context model, refer to the fifth aspect.

[0046] Согласно четырнадцатому аспекту предоставляется видеокодер, включающий в себя: модуль энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.[0046] According to a fourteenth aspect, a video encoder is provided, including: an entropy encoding unit configured to: obtain a syntax element to be entropy encoded in a current block, where a syntax element to be entropy encoded in the current block includes a syntax element 3 in the current block or syntax element 4 in the current block; obtain the context model corresponding to the syntax element to be entropy encoded, where the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set context models; and perform entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and an output configured to output a bit stream including a syntax element that is in the current block and obtained by entropy encoding.

[0047] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к шестому аспекту.[0047] For a specific syntax element and a specific context model, refer to the sixth aspect.

[0048] Согласно пятнадцатому аспекту настоящее изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранится инструкция, и инструкция обеспечивает выполнение процессором способа согласно первому аспекту, второму аспекту, третьему аспекту или четвертому аспекту или любой их возможной реализации.[0048] According to a fifteenth aspect, the present invention relates to an apparatus for decoding a video stream, including a processor and a memory. An instruction is stored in the memory, and the instruction causes the processor to execute the method according to the first aspect, the second aspect, the third aspect, or the fourth aspect, or any possible implementation thereof.

[0049] Согласно шестнадцатому аспекту настоящее изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранится инструкция, и эта инструкция обеспечивает выполнение процессором способа согласно седьмому аспекту, восьмому аспекту или девятому аспекту или любой их возможной реализации.[0049] According to a sixteenth aspect, the present invention relates to a device for decoding a video stream, including a processor and a memory. An instruction is stored in the memory, and the instruction causes the processor to execute the method according to the seventh aspect, the eighth aspect, or the ninth aspect, or any possible implementation thereof.

[0050] Согласно семнадцатому аспекту предложен машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкцию, и когда инструкция исполняется, обеспечивается кодирование видеоданных одним или более процессорами. Инструкция обеспечивает выполнение одним или более процессорами способа согласно первому аспекту, второму аспекту, третьему аспекту, четвертому аспекту, седьмому аспекту, восьмому аспекту или девятому аспекту или любой их возможной реализации.[0050] According to a seventeenth aspect, a computer-readable storage medium is provided. The computer-readable storage medium stores the instruction, and when the instruction is executed, the video data is encoded by one or more processors. The instruction causes one or more processors to execute a method according to the first aspect, the second aspect, the third aspect, the fourth aspect, the seventh aspect, the eighth aspect, or the ninth aspect, or any possible implementation thereof.

[0051] Согласно восемнадцатому аспекту настоящее изобретение относится к компьютерной программе, включающей в себя программный код. Когда программный код запускается на компьютере, выполняется способ согласно первому аспекту, второму аспекту, третьему аспекту, четвертому аспекту, седьмому аспекту, восьмому аспекту или девятому аспекту или любой их возможной реализации.[0051] According to an eighteenth aspect, the present invention relates to a computer program including program code. When the program code is run on the computer, the method according to the first aspect, the second aspect, the third aspect, the fourth aspect, the seventh aspect, the eighth aspect, or the ninth aspect, or any possible implementation thereof, is executed.

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

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

[0053] Чтобы более четко описать технические решения согласно вариантам осуществления настоящей заявки или согласно предшествующему уровню техники, ниже кратко описываются прилагаемые чертежи, необходимые для описания вариантов осуществления настоящей заявки или предшествующего уровня техники.[0053] In order to more clearly describe the technical solutions according to the embodiments of the present application or according to the prior art, the accompanying drawings necessary to describe the embodiments of the present application or the prior art are briefly described below.

[0054] Фиг.1 - блок-схема примера системы кодирования видео для реализации варианта осуществления настоящего изобретения;[0054] FIG. 1 is a block diagram of an example of a video coding system for implementing an embodiment of the present invention;

[0055] Фиг.2 - блок-схема, иллюстрирующая примерную структуру видеокодера для реализации варианта осуществления настоящего изобретения;[0055] FIG. 2 is a block diagram illustrating an exemplary structure of a video encoder for implementing an embodiment of the present invention;

[0056] Фиг.3 - блок-схема, иллюстрирующая примерную структуру видеодекодера для реализации варианта осуществления настоящего изобретения;[0056] FIG. 3 is a block diagram illustrating an exemplary structure of a video decoder for implementing an embodiment of the present invention;

[0057] Фиг.4 - схема, иллюстрирующая систему кодирования видео, включающую в себя кодер 20 по Фиг.2 и декодер 30 по Фиг.3;[0057] FIG. 4 is a diagram illustrating a video coding system including encoder 20 of FIG. 2 and decoder 30 of FIG. 3;

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

[0059] Фиг.6 - схематическая диаграмма, иллюстрирующая позиции потенциально подходящей информации движения в пространственной области и во временной области для текущего блока согласно варианту осуществления;[0059] FIG. 6 is a schematic diagram illustrating positions of potentially relevant motion information in the spatial domain and in the time domain for a current block according to an embodiment;

[0060] Фиг.7 - схематическая диаграмма, иллюстрирующая позиции текущего блока и позиции множества соседних блоков согласно варианту осуществления;[0060] Fig. 7 is a schematic diagram illustrating positions of a current block and positions of a plurality of neighboring blocks according to an embodiment;

[0061] Фиг.8A - блок-схема, иллюстрирующая способ предсказания вектора движения построенной контрольной точки согласно варианту осуществления;[0061] FIG. 8A is a flowchart illustrating a built checkpoint motion vector prediction method according to an embodiment;

[0062] Фиг.8B - блок-схема последовательности операций, иллюстрирующая способ предсказания вектора движения построенной контрольной точки согласно варианту осуществления;[0062] FIG. 8B is a flowchart illustrating a built checkpoint motion vector prediction method according to an embodiment;

[0063] Фиг.9A - блок-схема, иллюстрирующая способ внешнего (интер-) предсказания согласно варианту осуществления.[0063] FIG. 9A is a flowchart illustrating an inter-prediction method according to an embodiment.

[0064] Фиг.9B - блок-схема, иллюстрирующая способ предсказания вектора движения построенной контрольной точки согласно варианту осуществления;[0064] FIG. 9B is a flowchart illustrating a built checkpoint motion vector prediction method according to an embodiment;

[0065] Фиг.9C - схематическая диаграмма, иллюстрирующая позицию единицы компенсации движения на основе центральной точки единицы компенсации движения согласно варианту осуществления;[0065] FIG. 9C is a schematic diagram illustrating the position of a motion compensation unit based on a center point of a motion compensation unit according to an embodiment;

[0066] Фиг.10 - блок-схема, иллюстрирующая способ декодирования видео согласно варианту осуществления;[0066] FIG. 10 is a flowchart illustrating a video decoding method according to an embodiment;

[0067] Фиг.11 - блок-схема, иллюстрирующая способ декодирования видео согласно варианту осуществления; и[0067] FIG. 11 is a flowchart illustrating a video decoding method according to an embodiment; and

[0068] Фиг.12 - блок-схема, иллюстрирующая способ декодирования видео согласно варианту осуществления.[0068] FIG. 12 is a flowchart illustrating a video decoding method according to an embodiment.

[0069] В дальнейшем идентичные ссылочные позиции обозначают идентичные или, по меньшей мере, функционально эквивалентные признаки, если не указано иное.[0069] Hereinafter, identical reference numerals denote identical or at least functionally equivalent features, unless otherwise indicated.

Описание вариантов осуществленияDescription of Embodiments

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

[0071] Например, следует понимать, что раскрываемое содержание со ссылкой на описываемый способ также может применяться к соответствующему устройству или системе, сконфигурированной для выполнения этого способа, и наоборот. Например, если описаны один или более конкретных этапов способа, соответствующее устройство может включать в себя один или более модулей, таких как функциональные модули, для выполнения описанных одного или нескольких этапов способа (например, один модуль, выполняющий один или более этапов, либо множество модулей, каждый из которых выполняет один или более из множества этапов), даже если такие один или более модулей явно не описаны или не проиллюстрированы на прилагаемых чертежах. Кроме того, например, если конкретное устройство описывается на основе одного или более модулей, таких как функциональные модули, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или более модулей (например, один этап для выполнения функциональных возможностей одного или более модулей, либо множество этапов, каждый из которых используется для выполнения функций одного или более из множества модулей), даже если такие один или более этапов явно не описаны или не проиллюстрированы на сопроводительных чертежах. Кроме того, следует понимать, что особенности различных примерных вариантов осуществления и/или аспектов, описанных в этом описании, могут быть объединены друг с другом, если специально не указано иное.[0071] For example, it should be understood that the disclosures made with reference to the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more modules, such as functional modules, for performing the one or more method steps described (for example, one module performing one or more steps, or a plurality of modules , each of which performs one or more of a plurality of steps), even if such one or more modules are not explicitly described or illustrated in the accompanying drawings. In addition, for example, if a particular device is described in terms of one or more modules, such as functional modules, the corresponding method may include one step for performing the functionality of one or more modules (for example, one step for performing the functionality of one or more modules , or a plurality of steps, each of which is used to perform the functions of one or more of the plurality of modules), even if such one or more steps are not explicitly described or illustrated in the accompanying drawings. In addition, it should be understood that features of the various exemplary embodiments and/or aspects described in this specification may be combined with each other unless specifically noted otherwise.

[0072] Кодирование видео обычно представляет собой обработку последовательности изображений, которые образуют видео или видеопоследовательность. В области видеокодирования термины "картинка (picture)", "кадр (frame)" и "изображение (image)" могут использоваться как синонимы. Кодирование видео, используемое в настоящей заявке (или в этом раскрытии), соответствует закодированию видео или декодированию видео. Закодирование видео выполняется на стороне источника и обычно включает в себя обработку (например, посредством сжатия) исходного видеоизображения для уменьшения объема данных, требующихся для представления видеоизображения (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне пункта назначения и обычно включает в себя обратную обработку относительно кодера, чтобы восстановить видеоизображение. «Кодирование» видеоизображения (или обычно называемого изображением, что поясняется ниже) в вариантах осуществления следует понимать как «закодирование» или «декодирование», относящееся к видеопоследовательности. Комбинация закодирования и декодирования также называется кодированием (закодированием и декодированием).[0072] Video coding is typically the processing of a sequence of images that form a video or video sequence. In the field of video coding, the terms "picture", "frame" and "image" can be used interchangeably. The video coding used in this application (or in this disclosure) corresponds to video coding or video decoding. Video encoding is performed at the source side and typically involves processing (eg, by compressing) the source video to reduce the amount of data required to represent the video (for more efficient storage and/or transmission). Video decoding is performed on the destination side and typically includes inverse processing with respect to the encoder to reconstruct the video image. "Encoding" of a video image (or commonly referred to as an image, as explained below) in the embodiments should be understood as "encoding" or "decoding" referring to a video sequence. The combination of encoding and decoding is also called encoding (encoding and decoding).

[0073] В случае кодирования видео без потерь исходное видеоизображение может быть восстановлено, то есть восстановленное видеоизображение имеет то же качество, что и исходное видеоизображение (при условии, что во время хранения или передачи не происходит потери при передаче или другие потери данных). В случае кодирования видео с потерями, дополнительное сжатие выполняется посредством квантования и т.п., чтобы уменьшить объем данных, требуемых для представления видеоизображения, и видеоизображение не может быть полностью восстановлено на стороне декодера, то есть качество изображения восстановленного видеоизображения хуже, чем у исходного видеоизображения.[0073] In the case of lossless video coding, the original video image can be restored, i.e. the restored video image has the same quality as the original video image (provided that no transmission loss or other data loss occurs during storage or transmission). In the case of lossy video coding, additional compression is performed by quantization and the like to reduce the amount of data required to represent the video image, and the video image cannot be fully reconstructed at the decoder side, that is, the image quality of the reconstructed video image is worse than that of the original video images.

[0074] Некоторые стандарты кодирования видео H.261 относятся к «гибридному кодированию видео с потерями» (то есть пространственное и временное предсказание в области выборки (дискретного отсчета) комбинируется с кодированием с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение в видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. В частности, на стороне кодера видео обычно обрабатывается, то есть кодируется на уровне блока (блока видео). Например, блок предсказания генерируется посредством пространственного (внутрикадрового) предсказания и временного (межкадрового) предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается или должен быть обработан), чтобы получить остаточный блок, и остаточный блок преобразуется в области преобразования и квантуется для уменьшения количества данных, которые должны быть переданы (сжаты). На стороне декодера обработка, обратная относительно кодера, применяется к кодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что кодер и декодер генерируют одинаковое предсказание (например, внутреннее предсказание и внешнее предсказание) и/или восстановление для обработки, то есть закодирования последующего блока.[0074] Some H.261 video coding standards refer to "hybrid lossy video coding" (i.e., spatial and temporal sampling domain prediction is combined with 2D transform coding to apply transform domain quantization). Each picture in a video sequence is typically divided into a set of non-overlapping blocks, and encoding is usually done at the block level. In particular, on the encoder side, the video is usually processed, i.e. encoded at the block (video block) level. For example, a prediction block is generated by spatial (intra-frame) prediction and temporal (inter-frame) prediction, the prediction block is subtracted from the current block (a block currently being processed or to be processed) to obtain a residual block, and the residual block is transformed into transformation regions and is quantized to reduce the amount of data that must be transmitted (compressed). On the decoder side, encoder inverse processing is applied to the encoded or compressed block in order to reconstruct the current block for presentation. In addition, the encoder duplicates the processing cycle of the decoder, so that the encoder and decoder generate the same prediction (eg, intra prediction and inter prediction) and/or reconstruction for processing, i.e. encoding the subsequent block.

[0075] В данном описании термин «блок» может быть частью изображения или кадра. Для простоты описания следует обратиться к стандартам Универсального кодированию видео (VVC: Versatile Video Coding) или Высокоэффективного кодирования видео (High-Efficiency Video Coding, HEVC), разработанным Группой совместной работы по кодированию видео (Joint Collaboration Team on Video Coding, JCT-VC) Группы экспертов по кодированию видео ITU-T (Video Coding Experts Group, VCEG) и Группы экспертов ISO/IEC по движущимся изображениям (Motion Picture Experts Group, MPEG), для описания вариантов осуществления настоящего изобретения. Специалист в данной области техники понимает, что варианты осуществления настоящего изобретения не ограничиваются HEVC или VVC, и блок может быть CU, PU или TU. В HEVC, CTU разбивается на множество CU с использованием структуры квадродерева, обозначенной как дерево кодирования. Определяется, кодируется ли область изображения посредством межкадрового (временного) или внутрикадрового (пространственного) предсказания на уровне CU. Каждый CU может быть дополнительно разбит на один, два или четыре PU на основе типа разбиения PU. Один и тот же процесс предсказания применяется в пределах одного PU, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения PU, CU может быть разбит на блок преобразования (transform unit, TU) на основе другой структуры квадродерева, аналогичной дереву кодирования, используемому для CU. В последних разработках технологий сжатия видео кадр разбивается посредством квадродерева плюс двоичное дерево (Quad-tree plus binary tree, QTBT) для разбиения блока кодирования. В блочной структуре QTBT, CU может быть квадратным или прямоугольным. В VVC единица дерева кодирования (coding tree unit, CTU) сначала разбивается с использованием структуры квадродерева, и листовой узел квадродерева дополнительно разбивается с использованием структуры двоичного дерева. Листовой узел двоичного дерева называется единицей кодирования (CU), и упомянутое разбиение используется для обработки предсказания и преобразования без какого-либо другого разбиения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Кроме того, множественное разбиение используется вместе с блочной структурой QTBT, например, разбиение на основе тройного дерева.[0075] In this description, the term "block" may be part of an image or frame. For ease of description, refer to the Universal Video Coding (VVC: Versatile Video Coding) or High-Efficiency Video Coding (HEVC) standards developed by the Joint Collaboration Team on Video Coding (JCT-VC) ITU-T Video Coding Experts Group (VCEG) and ISO/IEC Motion Picture Experts Group (MPEG) to describe embodiments of the present invention. One skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC, and a unit may be a CU, PU, or TU. In HEVC, a CTU is partitioned into multiple CUs using a quadtree structure referred to as a coding tree. It is determined whether an image area is encoded by inter-frame (temporal) or intra-frame (spatial) prediction at the CU level. Each CU may be further partitioned into one, two, or four PUs based on the partition type of the PU. The same prediction process is applied within one PU, and the corresponding information is transmitted to a decoder based on the PU. After obtaining a residual block by applying a prediction process based on the partition type of the PU, the CU may be partitioned into a transform unit (TU) based on a different quadtree structure similar to the coding tree used for the CU. In recent developments in video compression technologies, a frame is split using a Quad-tree plus binary tree (QTBT) to split the coding block. In the block structure of QTBT, CU can be square or rectangular. In VVC, a coding tree unit (CTU) is first decomposed using a quadtree structure, and a leaf node of the quadtree is further decomposed using a binary tree structure. A leaf node of a binary tree is called a coding unit (CU), and said partition is used for prediction and transformation processing without any other partition. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In addition, multiple partitioning is used in conjunction with the QTBT box structure, such as triple tree partitioning.

[0076] Ниже описаны варианты осуществления кодера 20, декодера 30, системы 10 кодирования и системы 40 декодирования на основе Фиг.1 - Фиг.4 (перед более подробным описанием вариантов осуществления настоящего изобретения на основе Фиг.10).[0076] Embodiments of encoder 20, decoder 30, encoding system 10, and decoding system 40 are described below based on FIGS. 1 to 4 (before describing embodiments of the present invention in more detail based on FIG. 10).

[0077] Фиг.1 является концептуальной или схематической блок-схемой, иллюстрирующей пример системы 10 кодирования, например, системы 10 кодирования видео, которая может использовать технологию настоящей заявки (этого раскрытия). Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) в системе 10 видеокодирования представляют примеры устройств, которые могут быть сконфигурированы для реализации технологий для … (разбиения/внутреннего предсказания/…) согласно различным примерам, описанным в этой заявке. Как показано на Фиг.1, система 10 кодирования включает в себя исходное устройство 12, выполненное с возможностью предоставления закодированных данных 13, таких как закодированное изображение 13, на целевое устройство 14 для декодирования закодированных данных 13 или т.п.[0077] FIG. 1 is a conceptual or schematic block diagram illustrating an example of an encoding system 10, such as a video encoding system 10, that may use the technology of the present application (of this disclosure). Encoder 20 (eg, video encoder 20) and decoder 30 (eg, video decoder 30) in video coding system 10 represent examples of devices that can be configured to implement technologies for... (splitting/intra prediction/...) according to the various examples described in this application. . As shown in FIG. 1, the encoding system 10 includes a source device 12 configured to provide encoded data 13, such as an encoded picture 13, to a target device 14 to decode the encoded data 13 or the like.

[0078] Исходное устройство 12 включает в себя кодер 20 и, дополнительно или необязательно, может включать в себя источник 16 изображения, например, модуль 18 предварительной обработки, такой как модуль 18 предварительной обработки изображений, и интерфейс связи или модуль 22 связи.[0078] Source device 12 includes an encoder 20 and, additionally or optionally, may include an image source 16, such as a front end module 18, such as an image front end module 18, and a communication interface or communication module 22.

[0079] Источник 16 изображения может включать в себя или может быть устройством захвата изображения любого типа, выполненным с возможностью захвата реального изображения и т.п., и/или устройством любого типа для генерирования изображения или комментария (для кодирования содержимого экрана, некоторый текст на экране также рассматривается как часть картинки или изображения, которое должно быть закодировано), например, модуль обработки компьютерной графики, выполненный с возможностью генерирования изображения компьютерной анимации, или устройство любого типа, выполненное с возможностью получения и/или предоставления изображения реального мира или изображения компьютерной анимации (например, содержимого экрана или изображения виртуальной реальности (virtual reality, VR)) и/или любой их комбинации (например, изображения дополненной реальности (augmented reality, AR)).[0079] Image source 16 may include or may be any type of image capture device capable of capturing a real image, etc., and/or any type of device for generating an image or comment (to encode screen content, some text on the screen is also considered as part of a picture or image to be encoded), for example, a computer graphics processing module configured to generate a computer animation image, or any type of device configured to receive and / or provide an image of the real world or an image of a computer animations (eg, screen content or virtual reality (VR) images) and/or any combination thereof (eg, augmented reality (AR) images).

[0080] (Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями яркости. Выборка в массиве также может упоминаться как пиксель (pixel) (сокращенная форма элемента изображения (picture element)) или pel. Количество выборок в горизонтальном и вертикальном направлениях (или осям) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть изображение может быть представлено как или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение включает в себя соответствующие массивы выборок красного, зеленого и синего цветов. Однако при кодировании видео каждая выборка обычно представлена в формате яркости/цветности или цветовом пространстве, например, изображение в формате YCbCr включает в себя компонент яркости, обозначенный Y (иногда обозначаемый L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (кратко, яркость) указывает яркость или интенсивность уровня серого (например, они одинаковы на изображении в градациях серого), а два компонента цветности (для краткости цветности) Cb и Cr представляют компоненты информации о цветности или цвете. Соответственно, изображение в формате YCbCr включает в себя массив выборок яркости из значений выборок яркости (Y) и два массива выборок цветности из значений цветности (Cb и Cr). Изображение в формате RGB может быть преобразовано или преобразовано в изображение в формате YCbCr, и наоборот. Этот процесс также называется преобразованием цвета или преобразованием. Если изображение является монохромным, оно может включать в себя только массив выборок яркости.[0080] A (digital) image is, or can be viewed as, a two-dimensional array or matrix of samples with brightness values. An array sample can also be referred to as a pixel (short for picture element) or pel. The number of samples in the horizontal and vertical directions (or axes) of an array or image determines the size and/or resolution of the image. Three color components are typically used to represent a color, i.e. an image can be represented as or include three arrays of samples. In RBG format or color space, an image includes the respective arrays of red, green, and blue color samples. However, in video encoding, each sample is typically represented in a luma/chrominance format or color space, for example, a YCbCr image includes a luma component labeled Y (sometimes labeled L) and two chrominance components labeled Cb and Cr. The Y component of luminance (briefly, luminance) indicates the brightness or intensity of the gray level (for example, they are the same in a grayscale image), and the two chroma components (short for chrominance) Cb and Cr represent components of chrominance or color information. Accordingly, a YCbCr image includes an array of luminance samples of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). An RGB image can be converted or converted to a YCbCr image, and vice versa. This process is also called color conversion or conversion. If the image is monochrome, it may only include an array of brightness samples.

[0081] Источник 16 изображения (например, источник 16 видео) может быть, например, камерой, сконфигурированной для захвата изображения, например, памятью, такой как память изображений, которая включает в себя или хранит ранее захваченное или сгенерированное изображение, и/или любым типом интерфейса (внутренним или внешним) для получения или приема изображения. Камера может быть, например, локальной камерой или интегральной камерой, интегрированной в исходное устройство, а память может быть локальной памятью или интегральной памятью, интегрированной в исходное устройство. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео. Внешний источник видео представляет собой, например, внешнее устройство захвата изображения, такое как камера, внешняя память или внешнее устройство формирования изображения. Внешнее устройство формирования изображения представляет собой, например, внешний компьютерный графический процессор, компьютер или сервер. Интерфейс может быть интерфейсом любого типа в соответствии с любым частным или стандартизованным протоколом интерфейса, например, проводным или беспроводным интерфейсом или оптическим интерфейсом. Интерфейс для получения данных 17 изображения может быть таким же интерфейсом, как интерфейс 22 связи, или может быть частью интерфейса 22 связи.[0081] Image source 16 (e.g., video source 16) may be, for example, a camera configured to capture an image, for example, a memory such as an image memory that includes or stores a previously captured or generated image, and/or any type of interface (internal or external) to receive or receive an image. The camera may be, for example, a local camera or an integrated camera integrated into the source device, and the memory may be a local memory or an integrated memory integrated into the source device. The interface may be, for example, an external interface for receiving an image from an external video source. The external video source is, for example, an external image capture device such as a camera, external memory, or an external imaging device. The external imaging device is, for example, an external computer graphics processor, a computer or a server. The interface may be any type of interface according to any proprietary or standardized interface protocol, such as a wired or wireless interface or an optical interface. The interface for obtaining image data 17 may be the same interface as the communication interface 22 or may be part of the communication interface 22 .

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

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

[0084] Кодер 20 (например, видеокодер 20) выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления данных 21 закодированного изображения (подробности дополнительно описаны ниже, например, на основе Фиг.2 или Фиг.4). В одном примере кодер 20 может быть выполнен с возможностью кодирования изображения.[0084] The encoder 20 (eg, video encoder 20) is configured to receive pre-processed image data 19 and provide encoded image data 21 (details are further described below, for example, based on FIG. 2 or FIG. 4). In one example, encoder 20 may be configured to encode an image.

[0085] Интерфейс связи 22 исходного устройства 12 может быть выполнен с возможностью приема данных 21 закодированного изображения и передачи данных 21 закодированного изображения на другое устройство, например, на целевое устройство 14 или любое другое устройство, для сохранения или прямого восстановления, либо может быть выполнено с возможностью обработки закодированных данных 21 изображения перед соответствующим сохранением закодированных данных 13 и/или передачей закодированных данных 13 на другое устройство. Другое устройство - это, например, целевое устройство 14 или любое другое устройство, используемое для декодирования или хранения.[0085] Communication interface 22 of source device 12 may be configured to receive encoded image data 21 and transmit encoded image data 21 to another device, such as target device 14 or any other device, for storage or direct restoration, or may be performed with the possibility of processing the encoded image data 21 before appropriately storing the encoded data 13 and/or transmitting the encoded data 13 to another device. The other device is, for example, the target device 14 or any other device used for decoding or storage.

[0086] Целевое устройство 14 включает в себя декодер 30 (например, видеодекодер 30) и, дополнительно или необязательно, может включать в себя интерфейс связи или модуль 28 связи, модуль 32 постобработки и устройство 34 отображения.[0086] Target device 14 includes a decoder 30 (eg, video decoder 30) and, additionally or optionally, may include a communication interface or communication module 28, a post-processing module 32, and a display device 34.

[0087] Например, интерфейс 28 связи целевого устройства 14 сконфигурирован для непосредственного приема закодированных данных 21 изображения или закодированных данных 13 от исходного устройства 12 или любого другого источника. Любой другой источник представляет собой, например, запоминающее устройство, а запоминающее устройство - это, например, устройство хранения данных закодированных изображений.[0087] For example, the communication interface 28 of the target device 14 is configured to directly receive encoded image data 21 or encoded data 13 from source device 12 or any other source. Any other source is, for example, a storage device, and the storage device is, for example, an encoded image data storage device.

[0088] Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема закодированных данных 21 изображения или закодированных данных 13 по прямой линии связи между исходным устройством 12 и целевым устройством 14 или по сети любого типа. Прямая линия связи представляет собой, например, прямое проводное или беспроводное соединение, и любой тип сети представляет собой, например, проводную или беспроводную сеть или любую их комбинацию, либо любой тип частной сети или публичной сети или любую их комбинацию.[0088] Communication interface 22 and communication interface 28 may be configured to transmit or receive encoded image data 21 or encoded data 13 over a direct link between source device 12 and target device 14 or over any type of network. A direct link is, for example, a direct wired or wireless connection, and any type of network is, for example, a wired or wireless network, or any combination thereof, or any type of private network or public network, or any combination thereof.

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

[0090] Интерфейс 28 связи как соответствующая часть интерфейса 22 связи может быть выполнен с возможностью декапсуляции закодированных данных 13 для получения данных 21 закодированного изображения и т.п.[0090] The communication interface 28 as a corresponding part of the communication interface 22 can be configured to decapsulate the encoded data 13 to obtain encoded image data 21 and the like.

[0091] Как интерфейс 22 связи, так и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, например, стрелка, указывающая от исходного устройства 12 к целевому устройству 14, которые используются для данных 13 закодированных изображений на Фиг.1, или могут быть сконфигурированы как двунаправленные интерфейсы связи и могут быть, например, сконфигурированы для отправки и приема сообщения для установления соединения, а также для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, такой как передача закодированных данных изображения.[0091] Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, such as an arrow pointing from source device 12 to destination device 14, which are used for encoded picture data 13 in FIG. 1, or may be configured as bi-directional communication interfaces and may, for example, be configured to send and receive a message to establish a connection, as well as to acknowledge and exchange any other information related to the communication line and/or data transmission, such as the transmission of encoded image data.

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

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

[0094] Устройство 34 отображения из состава целевого устройства 14 выполнено с возможностью приема постобработанных данных 33 изображения для отображения изображения пользователю, зрителю или т.п. Устройство 34 отображения может быть или может включать в себя любой тип дисплея, выполненный с возможностью представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Например, дисплей может включать в себя жидкокристаллический дисплей (liquid crystal display, LCD), дисплей на основе органических светоизлучающих диодов (organic light emitting diode, OLED), плазменный дисплей, проектор, дисплей на основе микро-светодиодов, дисплей на основе жидких кристаллов на кремнии (liquid crystal on silicon, LCoS), устройство цифровой обработки света (digital light processor, DLP) или любой другой тип дисплея.[0094] The display device 34 of the target device 14 is configured to receive post-processed image data 33 for displaying the image to a user, viewer, or the like. Display device 34 may be or may include any type of display capable of presenting a reconstructed image, such as an integrated or external display or monitor. For example, the display may include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro LED display, a liquid crystal display based on silicon (liquid crystal on silicon, LCoS), digital light processor (DLP), or any other type of display.

[0095] Хотя Фиг.1 изображает исходное устройство 12 и целевое устройство 14 как отдельные устройства, варианты осуществления устройства могут также включать в себя как исходное устройство 12, так и целевое устройство 14, или как функцию исходного устройства 12, так и функцию целевого устройства 14, то есть, исходное устройство 12 или соответствующая функция и целевое устройство 14 или соответствующая функция. В таких вариантах осуществления исходное устройство 12 или соответствующая функция и целевое устройство 14 или соответствующая функция могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.[0095] Although FIG. 1 depicts source device 12 and target device 14 as separate devices, device embodiments may also include both source device 12 and target device 14, or both source device 12 function and target device function. 14, that is, source device 12 or corresponding function and target device 14 or corresponding function. In such embodiments, source device 12 or corresponding function and target device 14 or corresponding function may be implemented using the same hardware and/or software, separate hardware and/or software, or any combination thereof.

[0096] Основываясь на описаниях, специалист в данной области техники легко понимает, что существование и (точное) разделение функций различных модулей или функций/функций исходного устройства 12 и/или целевого устройства 14, показанных на Фиг.1, может отличаться в зависимости от конкретного устройства и приложения.[0096] Based on the descriptions, one skilled in the art will readily appreciate that the existence and (exact) separation of functions of the various modules or functions/functions of source device 12 and/or target device 14 shown in FIG. 1 may differ depending on specific device and application.

[0097] Каждый из кодера 20 (например, видеокодера 20) и декодера 30 (например, видеодекодера 30) может быть реализован как любая из различных надлежащих схем, например, один или несколько микропроцессоров, устройство цифровой обработки сигналов (digital signal processor, DSP), специализированная интегральная схема (application-specific integrated circuit, ASIC), программируемая пользователем вентильная матрица (field-programmable gate array, FPGA), дискретная логика, аппаратные средства или любая их комбинация. Если технология частично реализована в программном обеспечении, устройство может хранить программную инструкцию на подходящем долговременном машиночитаемом носителе данных и может исполнять инструкцию в аппаратных средствах, используя один или несколько процессоров для выполнения технологий, описанных в этом раскрытии. Любое из вышеупомянутого содержимого (включая аппаратные средства, программное обеспечение, комбинацию аппаратных средств и программного обеспечения и т.п.) может рассматриваться как один или несколько процессоров. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или несколько кодеров или декодеров, и любой из кодеров или декодеров может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. [0097] Each of encoder 20 (eg, video encoder 20) and decoder 30 (eg, video decoder 30) may be implemented as any of various appropriate circuits, for example, one or more microprocessors, a digital signal processor (DSP) , application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), discrete logic, hardware, or any combination thereof. If the technology is partially implemented in software, the device may store the program instruction on a suitable non-volatile computer-readable storage medium and may execute the instruction in hardware using one or more processors to perform the technologies described in this disclosure. Any of the above content (including hardware, software, a combination of hardware and software, and the like) may be considered one or more processors. Each of video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, and any of the encoders or decoders may be integrated as part of a combined encoder/decoder (codec) in a respective device.

[0098] Исходное устройство 12 может называться устройством кодирования видео или оборудованием кодирования видео. Целевое устройство 14 может называться устройством декодирования видео или оборудованием декодирования видео. Каждое из исходного устройства 12 и целевого устройства 14 может быть примером устройства кодирования видео или оборудования декодирования видео.[0098] Source device 12 may be referred to as a video encoding device or video encoding equipment. The target device 14 may be referred to as a video decoding device or video decoding equipment. Each of source device 12 and destination device 14 may be an example of a video encoding device or video decoding equipment.

[0099] Каждое из исходного устройства 12 и целевого устройства 14 может включать в себя любое из различных устройств, включая любой тип портативного или стационарного устройства, такого как, например, ноутбук или портативный компьютер, мобильный телефон, смартфон, планшет или планшетный компьютер, видеокамера, настольный компьютер, телевизионная приставка, телевизор, устройство отображения, цифровой медиаплеер, игровая консоль, устройство для передачи потокового видео (например, сервер службы контента или сервер распространения контента), устройство приемника вещания или устройство передатчика вещания, и может использовать или не использовать операционную систему любого типа.[0099] Each of source device 12 and target device 14 may include any of various devices, including any type of portable or stationary device such as, for example, a laptop or laptop computer, mobile phone, smartphone, tablet or tablet computer, video camera , a desktop computer, a set-top box, a TV, a display device, a digital media player, a game console, a video streaming device (such as a content service server or a content distribution server), a broadcast receiver device, or a broadcast transmitter device, and may or may not use an operating any type of system.

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

[0101] В некоторых случаях система 10 кодирования видео, показанная на Фиг.1, является просто примером, и технологии согласно настоящей заявке могут применяться к настройке кодирования видео (например, закодированию видео или декодированию видео), которые не должны включать в себя какой-либо обмен данными между устройством кодирования и устройством декодирования. В других примерах данные могут быть извлечены из локальной памяти, переданы в потоковом режиме по сети и т.п. Устройство кодирования видео может закодировать данные и сохранять данные в памяти, и/или устройство декодирования видео может извлекать данные из памяти и декодировать данные. В некоторых примерах закодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а только кодируют данные в память и/или извлекают данные из памяти и декодируют данные.[0101] In some cases, the video coding system 10 shown in FIG. 1 is merely an example, and the techniques of the present application may be applied to a video coding setting (e.g., video coding or video decoding) that should not include any or communication between the encoding device and the decoding device. In other examples, data may be retrieved from local memory, streamed over a network, or the like. The video encoding device may encode the data and store the data in memory, and/or the video decoding device may retrieve the data from the memory and decode the data. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but only encode data into memory and/or retrieve data from memory and decode data.

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

[0103] Кодер и способ кодирования[0103] Encoder and encoding method

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

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

[0106] Кодер 20 принимает изображение 201 или блок 203 изображения 201, используя вход 202 или т.п., например, изображение в последовательности изображений, которые образуют видео или видеопоследовательность. Блок 203 изображения также может называться блоком текущего изображения или блоком изображения, подлежащим кодированию, а изображение 201 может упоминаться как текущее изображение или изображение, подлежащее кодированию (особенно тогда, когда проводится различие между текущим изображением и другим изображением при кодировании видео, другими изображениями, например, в той же видеопоследовательности, также включая ранее закодированные и/или декодированные изображения в видеопоследовательности текущего изображения).[0106] The encoder 20 receives an image 201 or a block 203 of an image 201 using an input 202 or the like, such as an image in a sequence of images that form a video or video sequence. The image block 203 may also be referred to as the current image block or the image block to be encoded, and the image 201 may be referred to as the current image or the image to be encoded (especially when a distinction is made between the current image and another image in video encoding, other images, for example , in the same video sequence, also including previously encoded and/or decoded pictures in the video sequence of the current picture).

[0107] Разбиение[0107] Partitioning

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

[0109] В одном примере модуль 260 обработки предсказания из состава видеокодера 20 может быть выполнен с возможностью осуществления любой комбинации вышеупомянутых технологий разбиения.[0109] In one example, prediction processing module 260 of video encoder 20 may be configured to implement any combination of the aforementioned partitioning technologies.

[0110] Например, в изображении 201 блок 203 также рассматривается или также может рассматриваться как двумерный массив или матрица выборок со значениями яркости (значения выборок), хотя размер блока 203 меньше, чем размер изображения 201. Другими словами, блок 203 может включать в себя, например, один массив выборок (например, массив яркости в случае монохромного изображения 201), три массива выборок (например, один массив яркости и два массива цветности в случае цветного изображения) или любое другое количество и/или тип массивов на основе используемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или осям) блока 203 определяет размер блока 203.[0110] For example, in image 201, block 203 is also, or could also be considered, a two-dimensional array or matrix of samples with luminance values (sample values), although the size of block 203 is smaller than the size of image 201. In other words, block 203 may include , for example, one array of samples (eg, a luma array in the case of a monochrome image 201), three arrays of samples (eg, one array of luminance and two chrominance arrays in the case of a color image), or any other number and/or type of arrays based on the color format used . The number of samples in the horizontal and vertical directions (or axes) of block 203 determines the size of block 203.

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

[0112] Вычисление остатка [0112] Remainder Calculation

[0113] Модуль 204 вычисления остатка сконфигурирован для вычисления остаточного блока 205 на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания представлены ниже), например, для получения остаточного блока 205 в области выборки посредством вычитания значения выборки блока 265 предсказания из значения выборки блока 203 изображения, выборка за выборкой (пиксель за пикселем).[0113] Residual calculation module 204 is configured to calculate residual block 205 based on image block 203 and prediction block 265 (more details about prediction block 265 below), for example, to obtain a residual block 205 in the sample area by subtracting the sample value of prediction block 265 from the sample value of the image block 203, sample by sample (pixel by pixel).

[0114] Преобразование[0114] Transformation

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

[0116] Модуль 206 обработки преобразования может быть выполнен с возможностью применения целочисленного приближения DCT/DST, например, преобразования, указанного в HEVC/H.265. Это целочисленное приближение обычно масштабируется пропорционально коэффициентом, по сравнению с ортогональным преобразованием DCT. Для поддержания нормы остаточного блока, полученного посредством прямого преобразования и обратного преобразования, дополнительный масштабный коэффициент применяется как часть процесса преобразования. Масштабный коэффициент обычно выбирается на основе некоторых условий ограничения, например, является степенью 2, битовой глубины коэффициента преобразования или компромисса между точностью и затратами на реализацию, которые используются для операции сдвига. Например, конкретный масштабный коэффициент задается для обратного преобразования на стороне декодера 30 с использованием модуля 212 обработки обратного преобразования (и, соответственно, для обратного преобразования на стороне кодера 20 с использованием модуля 212 обработки обратного преобразования или ему подобного), и, соответственно, соответствующий масштабный коэффициент может быть задан для прямого преобразования на стороне кодера 20 с использованием модуля 206 обработки преобразования.[0116] The transform processing module 206 may be configured to apply a DCT/DST integer approximation, such as the transform specified in HEVC/H.265. This integer approximation is usually scaled proportionally by a factor compared to the DCT orthogonal transform. To maintain the rate of the residual block obtained through the forward transform and inverse transform, an additional scale factor is applied as part of the transform process. The scaling factor is usually chosen based on some constraint conditions, such as being a power of 2, the bit depth of the transform factor, or the trade-off between precision and implementation overhead that is used for the shift operation. For example, a particular scaling factor is set for inverse transformation on the decoder 30 side using the inverse transform processing unit 212 (and correspondingly for inverse transformation on the encoder 20 side using the inverse transform processing unit 212 or the like), and, accordingly, the corresponding scaling the coefficient can be set for direct conversion on the side of the encoder 20 using the conversion processing module 206 .

[0117] Квантование[0117] Quantization

[0118] Модуль 208 квантования сконфигурирован для квантования коэффициента 207 преобразования путем применения масштабного квантования, векторного квантования или т.п., чтобы получить квантованный коэффициент 209 преобразования. Квантованный коэффициент 209 преобразования также может упоминаться как квантованный остаточный коэффициент 209. Процесс квантования может уменьшить битовую глубину, относящуюся к некоторым или всем коэффициентам 207 преобразования. Например, n-битный коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулирования параметра квантования (quantization parameter, QP). Например, для масштабного квантования могут применяться разные масштабы для достижения более тонкого или более грубого квантования. Меньший шаг квантования соответствует более тонкому квантованию, а больший шаг квантования соответствует более грубому квантованию. Надлежащий шаг квантования может быть указан с помощью параметра квантования (quantization parameter, QP). Например, параметр квантования может быть индексом заранее определенного набора надлежащих шагов квантования. Например, меньший параметр квантования может соответствовать более тонкому квантованию (меньшему шагу квантования), а больший параметр квантования может соответствовать более грубому квантованию (большему шагу квантования), и наоборот. Квантование может включать в себя деление на этап квантования и соответствующее квантование или обратное квантование, выполняемое модулем 210 обратного квантования или т.п., либо может включать в себя умножение на шаг квантования. В вариантах осуществления согласно некоторым стандартам, таким как HEVC, параметр квантования может использоваться для определения шага квантования. Как правило, шаг квантования может быть вычислен на основе параметра квантования посредством аппроксимации с фиксированной точкой в отношении уравнения, включающего деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и обратного квантования, чтобы восстановить норму, которая соответствует остаточному блоку и которая может быть изменена из-за масштаба, используемого в приближении с фиксированной точкой в отношении уравнения, используемого для шага квантования и параметра квантования. В примерной реализации масштаб обратного преобразования может быть объединен с масштабом обратного квантования. В качестве альтернативы настроенная таблица квантования может использоваться и сигнализироваться от кодера декодеру, например, в потоке битов. Квантование - это операция с потерями, и больший шаг квантования указывает на большие потери.[0118] The quantization unit 208 is configured to quantize the transform coefficient 207 by applying scaling quantization, vector quantization, or the like to obtain a quantized transform coefficient 209. The quantized transform coefficient 209 may also be referred to as the quantized residual coefficient 209. The quantization process may reduce the bit depth related to some or all of the transform coefficients 207. For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, scaling may use different scales to achieve finer or coarser quantization. A smaller quantization step corresponds to a finer quantization, and a larger quantization step corresponds to a coarser quantization. The proper quantization step can be specified using the quantization parameter (QP). For example, the quantization parameter may be an index of a predetermined set of appropriate quantization steps. For example, a smaller quantization parameter may correspond to a finer quantization (smaller quantization step), and a larger quantization parameter may correspond to a coarser quantization (larger quantization step), and vice versa. The quantization may include dividing by a quantization step and the corresponding quantization or inverse quantization performed by the inverse quantization unit 210 or the like, or may include multiplying by a quantization step. In embodiments according to some standards, such as HEVC, the quantization parameter may be used to determine the quantization step. Typically, the quantization step can be calculated based on the quantization parameter by a fixed-point approximation with respect to an equation involving division. Additional scaling factors may be introduced for quantization and inverse quantization to recover a norm that corresponds to the residual block and that can be changed due to the scaling used in the fixed point approximation with respect to the equation used for the quantization step and the quantization parameter. In an exemplary implementation, the inverse transform scale may be combined with the inverse quantization scale. Alternatively, a tuned quantization table may be used and signaled from an encoder to a decoder, eg in a bit stream. Quantization is a lossy operation, and a larger quantization step indicates more loss.

[0119] Модуль 210 обратного квантования сконфигурирован для применения обратного квантования модуля 208 квантования к квантованному коэффициенту, чтобы получить обратно-квантованный коэффициент 211, например, применять, на основе или с использованием того же шага квантования, что и модуль 208 квантования, схему обратного квантования схемы квантования, применяемой модулем 208 квантования. Обратно-квантованный коэффициент 211 также может называться обратно-квантованным остаточным коэффициентом 211 и соответствовать коэффициенту 207 преобразования, хотя потери, вызванные квантованием, обычно отличаются от коэффициента преобразования.[0119] The inverse quantizer 210 is configured to apply inverse quantization of the quantizer 208 to the quantized coefficient to obtain the inverse quantization coefficient 211, for example, apply, based on or using the same quantization step as the quantizer 208, an inverse quantization scheme the quantization scheme applied by the quantization module 208 . The back-quantized coefficient 211 may also be referred to as the back-quantized residual coefficient 211 and correspond to the transform coefficient 207, although the loss caused by the quantization is usually different from the transform coefficient.

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

[0121] Модуль 214 восстановления (например, сумматор 214) сконфигурирован для добавления блока 213 обратного преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем добавления значения выборки восстановленного остаточного блока 213 и значения выборки блока 265 предсказания.[0121] Reconstruction module 214 (e.g., 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 the sample value of the reconstructed residual block 213 and the sample values of the predictor 265 .

[0122] В необязательном порядке, модуль 216 буфера (или “буфер” 216 для краткости), такой как строковый буфер 216, приспособлен для буферизации или хранения восстановленного блока 215 и соответствующего значения выборки для внутреннего предсказания и т.п. В других вариантах осуществления кодер может быть сконфигурирован для использования нефильтрованного восстановленного блока и/или соответствующего значения выборки, которые хранятся в модуле 216 буфера, для любого типа оценки и/или предсказания, такого как внутреннее предсказание.[0122] Optionally, a buffer module 216 (or "buffer" 216 for short), such as a string buffer 216, is adapted to buffer or store the reconstructed block 215 and the corresponding sample value for intra prediction, and the like. In other embodiments, the encoder may be configured to use the unfiltered reconstructed block and/or corresponding sample value stored in buffer unit 216 for any type of estimation and/or prediction, such as intra prediction.

[0123] Например, вариант осуществления кодера 20 может быть сконфигурирован так, что модуль 216 буфера не только приспособлен для хранения восстановленного блока 215 для внутреннего предсказания, но также приспособлен для хранения отфильтрованного блока 221 модуля 220 контурной фильтрации (не показано на Фиг.2), и/или модуль 216 буфера и модуль 230 буфера декодированных изображений образуют один буфер. Другие варианты осуществления могут использоваться для использования отфильтрованного блока 221 и/или блока или выборки из буфера 230 декодированных изображений (не показано на Фиг.2) в качестве входных данных или основы для внутреннего предсказания 254.[0123] For example, an embodiment of the encoder 20 may be configured such that the buffer module 216 is not only adapted to store the reconstructed block 215 for intra prediction, but is also adapted to store the filtered block 221 of the loop filter module 220 (not shown in FIG. 2) , and/or the buffer module 216 and the decoded picture buffer module 230 form one buffer. Other embodiments may be used to use the filtered block 221 and/or a block or sample from the decoded picture buffer 230 (not shown in FIG. 2) as input or basis for intra prediction 254.

[0124] Модуль 220 контурного фильтра (или, для краткости, «контурный фильтр» 220) сконфигурирован для выполнения фильтрации в отношении восстановленного блока 215 для получения отфильтрованного блока 221, чтобы плавно выполнять преобразование выборок или повышать качество видео. Модуль 220 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, например, фильтра устранения блочности, фильтра с адаптивным к выборке смещением (sample-adaptive offset, SAO) или другого фильтра, такого как двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживающий фильтр, либо совместный фильтр. Хотя модуль 220 контурного фильтра показан на Фиг.2 в качестве внутриконтурного фильтра, модуль 220 контурного фильтра может быть реализован как пост-контурный фильтр в других конфигурациях. Отфильтрованный блок 221 также может называться фильтрованным восстановленным блоком 221. Буфер 230 декодированных изображений может хранить восстановленный блок кодирования после того, как модуль 220 контурного фильтра выполнит операцию фильтрации в отношении восстановленного блока кодирования.[0124] The loop filter module 220 (or "loop filter" 220 for short) is configured to perform filtering on the reconstructed block 215 to obtain a filtered block 221 to smoothly perform sample conversion or improve video quality. The loop filter module 220 is designed to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or another filter such as a two-sided filter, an adaptive loop filter, ALF), a sharpening filter or an anti-aliasing filter, or a combined filter. Although the loop filter module 220 is shown in FIG. 2 as an in-loop filter, the loop filter module 220 may be implemented as a post-loop filter in other configurations. The filtered block 221 may also be referred to as the filtered reconstructed block 221. The decoded picture buffer 230 may store the reconstructed coding block after the loop filter module 220 performs a filtering operation on the reconstructed coding block.

[0125] Вариант осуществления кодера 20 (соответственно, модуля 220 контурного фильтра) может использоваться для вывода параметра контурного фильтра (например, информации адаптивного к выборке смещения), например, для прямого вывода параметра контурного фильтра или вывода параметра контурного фильтра после того, как модуль 270 энтропийного кодирования или любой другой модуль энтропийного кодирования выполнит энтропийное кодирование, так что декодер 30 может принимать и применять один и тот же параметр контурного фильтра для декодирования и т.п.[0125] An embodiment of encoder 20 (respectively, loop filter module 220) may be used to output a loop filter parameter (e.g., sample-adaptive bias information), such as to directly output a loop filter parameter or output a loop filter parameter after the module 270 entropy encoding or any other entropy encoding module will perform entropy encoding so that decoder 30 can receive and apply the same loop filter parameter for decoding, and the like.

[0126] Буфер 230 декодированных изображений (decoded picture buffer, DPB) может быть памятью опорных изображений, которая хранит данные опорных изображений для видеокодера 20 для кодирования видеоданных. DPB 230 может быть любым из множества запоминающих устройств, например, динамическим оперативным запоминающим устройством (dynamic random access memory, DRAM) (включая синхронное DRAM (synchronous DRAM, SDRAM), магниторезистивное ОЗУ (magnetoresistive RAM, MRAM) или резистивное ОЗУ (resistive RAM, RRAM)), либо другой тип памяти. DPB 230 и буфер 216 могут быть реализованы в виде одного и того же запоминающего устройства или отдельных запоминающих устройств. В одном примере буфер декодированного изображения (decoded picture buffer, DPB) 230 приспособлен для хранения отфильтрованного блока 221. Буфер 230 декодированных изображений может быть дополнительно приспособлен для хранения других предыдущих отфильтрованных блоков, таких как предыдущие восстановленные и отфильтрованные блоки 221 одного и того же текущего изображения или разных изображений, таких как предыдущие восстановленные изображения, и может предоставлять полное предыдущее восстановленное, то есть декодированное изображение (и соответствующий опорный блок и соответствующую выборку) и/или частично восстановленное текущее изображение (и соответствующий опорный блок и соответствующую выборку) для внешнего предсказания и т.п. В одном примере, если восстановленный блок 215 восстанавливается без внутриконтурной фильтрации, буфер 230 декодированных изображений (decoded picture buffer, DPB) конфигурируется для хранения восстановленного блока 215.[0126] The decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data for video encoder 20 to encode video data. DPB 230 may be any of a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (synchronous DRAM, SDRAM), magnetoresistive RAM (magnetoresistive RAM, MRAM) or resistive RAM (resistive RAM, RRAM)) or another type of memory. DPB 230 and buffer 216 may be implemented as the same storage device or separate storage devices. In one example, the decoded picture buffer (DPB) 230 is adapted to store the filtered block 221. The decoded picture buffer 230 may be further adapted to store other previous filtered blocks, such as previous reconstructed and filtered blocks 221 of the same current picture. or different pictures, such as previous reconstructed pictures, and may provide a complete previous reconstructed i.e. decoded picture (and corresponding reference block and corresponding sample) and/or partially reconstructed current picture (and corresponding reference block and corresponding sample) for inter prediction and etc. In one example, if the reconstructed block 215 is reconstructed without in-loop filtering, the decoded picture buffer (DPB) 230 is configured to store the reconstructed block 215.

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

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

[0129] Вариант осуществления модуля 262 выбора режима может использоваться для выбора режима предсказания (например, из режимов предсказания, поддерживаемых модулем 260 обработки предсказания). Режим предсказания обеспечивает наилучшее совпадение или минимальный остаток (минимальный остаток означает лучшее сжатие при передаче или хранении) или обеспечивает минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие при передаче или хранении), либо учитывает или уравновешивает их. Модуль 262 выбора режима может быть выполнен с возможностью определения режима предсказания на основе оптимизации по искажению-скорости (rate distortion optimization, RDO), то есть выбора режима предсказания, который обеспечивает оптимизацию в плане минимизации соотношения искажения-скорости, или выбора режима предсказания, в котором соответствующие соотношение искажения-скорости, по меньшей мере, соответствует критерию выбора режима предсказания.[0129] An embodiment of mode selection module 262 may be used to select a prediction mode (eg, from prediction modes supported by prediction processing module 260). The predictive mode either provides the best match or minimum residual (lowest residual means better transmission or storage compression), or provides the lowest signaling overhead (lowest signaling overhead means better transmission or storage compression), or accounts for or balances them. The mode selector 262 may be configured to determine a prediction mode based on rate distortion optimization (RDO), i.e., select a prediction mode that provides optimization in terms of minimizing the distortion-rate ratio, or select a prediction mode, in in which the respective distortion-rate ratio at least meets the prediction mode selection criterion.

[0130] Обработка предсказания (например, с использованием модуля 260 обработки предсказания) и выбор режима (например, с использованием модуля 262 выбора режима), выполняемые примером кодера 20, подробно описаны ниже.[0130] The prediction processing (eg, using the prediction processing unit 260) and mode selection (eg, using the mode selection unit 262) performed by the exemplary encoder 20 are described in detail below.

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

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

[0133] (Возможный) набор режимов внешнего предсказания зависит от доступного опорного изображения (например, по меньшей мере, части декодированного изображения, сохраненного в DBP 230) и других параметров внешнего предсказания, например, зависит от того, используется ли все опорного изображение или только часть опорного изображения, например, поиск в окне области поиска, окружающей область текущего блока, выполняется на предмет наилучшим образом согласующегося опорного блока, и/или зависит от того, применяется ли интерполяция выборки, такая как интерполяция на основе половины выборки и/или четверти выборки.[0133] The (possible) set of inter prediction modes depends on the available reference picture (e.g., at least a portion of the decoded picture stored in DBP 230) and other inter prediction parameters, e.g., depends on whether the entire reference picture is used or only part of the reference image, e.g., searching in the search area window surrounding the current block area, is performed for the best matching reference block, and/or depends on whether sample interpolation is applied, such as half-sample and/or quarter-sample interpolation .

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

[0135] Модуль 260 обработки предсказания может быть дополнительно выполнен с возможностью: разбивать блок 203 на более мелкие разделы или подблоки, например, путем итеративного использования разбиения на основе квадродерева (quad-tree, QT), разбиения на основе двоичного дерева (binary-tree, BT), разбиения на основе тройного дерева или тернарного дерева (triple-tree or ternary-tree, TT), либо любой их комбинации, и выполнять предсказание и т.п. в отношении каждого из разделов блоков или подблоков. Выбор режима включает в себя выбор древовидной структуры разделенного блока 203 и выбор режима предсказания, применяемого к каждому из разделов блока или подблоков.[0135] Prediction processing module 260 may be further configured to: split block 203 into smaller sections or sub-blocks, for example, by iteratively using quad-tree (QT) partitioning, binary-tree partitioning (binary-tree , BT), partitioning based on a triple-tree or ternary-tree (TT), or any combination of them, and perform prediction, etc. in relation to each of the sections of blocks or sub-blocks. Mode selection includes selecting a tree structure of the partitioned block 203 and selecting a prediction mode applied to each of the block partitions or subblocks.

[0136] Модуль 244 внешнего предсказания может включать в себя модуль оценки движения (motion estimation, ME) (не показан на Фиг.2) и модуль компенсации движения (motion compensation, MC) (не показан на Фиг.2). Модуль оценки движения выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 201) и декодированного изображения 31 или, по меньшей мере, одного или нескольких предыдущих восстановленных блоков, например, одного или нескольких других восстановленных блоки, отличных от предыдущего декодированного изображения 31, чтобы выполнить оценку движения. Например, видеопоследовательность может включать в себя текущее изображение и предыдущее декодированное изображение 31. Другими словами, текущее изображение и предыдущее декодированное изображение 31 могут быть частью последовательности изображений, которые образуют видеопоследовательность или образуют последовательность изображений.[0136] Inter prediction module 244 may include a motion estimation module (ME) (not shown in FIG. 2) and a motion compensation module (MC) (not shown in FIG. 2). The motion estimation module is configured to receive or obtain an image block 203 (the current image block 203 of the current image 201) and a decoded image 31 or at least one or more previous reconstructed blocks, for example, one or more other reconstructed blocks different from the previous one. of the decoded image 31 to perform motion estimation. For example, the video sequence may include a current picture and a previous decoded picture 31. In other words, the current picture and the previous decoded picture 31 may be part of a picture sequence that form a video sequence or form a picture sequence.

[0137] Например, кодер 20 может быть выполнен с возможностью: выбирать опорный блок из множества опорных блоков одного и того же изображения или разных изображений во множестве других изображений и подавать опорное изображение (или индекс опорного изображения) и/или смещение (пространственное смещение) между положением (координатами XY) опорного блока и положением текущего блока в качестве параметра внешнего предсказания в модуль оценки движения (не показан на Фиг.2). Это смещение также называется вектором движения (motion vector, MV).[0137] For example, encoder 20 may be configured to: select a reference block from a plurality of reference blocks of the same picture or different pictures in a plurality of other pictures, and supply a reference picture (or reference picture index) and/or an offset (spatial offset) between the position (XY coordinates) of the reference block and the position of the current block as an inter prediction parameter to a motion estimator (not shown in FIG. 2). This offset is also called the motion vector (MV).

[0138] Модуль компенсации движения выполнен с возможностью: получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основе или с использованием параметра внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая модулем компенсации движения (не показано на Фиг.2), может включать в себя извлечение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения (возможно, выполнение интерполяции с точностью до подвыборки). Во время фильтрации с интерполяцией может быть сгенерирована дополнительная выборка из известных выборок, тем самым потенциально увеличивая количество потенциально подходящих блоков предсказания (блоков предсказания - кандидатов), которые могут использоваться для кодирования блока изображения. Как только вектор движения, используемый для PU текущего блока изображения, принят, модуль 246 компенсации движения может найти блок предсказания, на который указывает вектор движения в списке опорных изображений. Модуль 246 компенсации движения может дополнительно генерировать элемент синтаксиса, связанный с блоком и срезом видео, с тем чтобы видеодекодер 30 использовал элемент синтаксиса при декодировании блока изображения среза видео.[0138] The motion compensation module is configured to: obtain, for example, receive an inter prediction parameter, and perform inter prediction based on or using the inter prediction parameter to obtain inter prediction block 245. Motion compensation performed by a motion compensation module (not shown in FIG. 2) may include extracting or generating a prediction block based on a motion vector/block determined by motion estimation (perhaps performing subsample interpolation). During interpolation filtering, an additional sample from known samples can be generated, thereby potentially increasing the number of potentially suitable prediction blocks (candidate prediction blocks) that can be used to encode an image block. Once the motion vector used for the PU of the current picture block is received, the motion compensation module 246 can find the prediction block pointed to by the motion vector in the reference picture list. Motion compensation module 246 may further generate a syntax element associated with the video block and slice so that video decoder 30 uses the syntax element when decoding the video slice image block.

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

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

[0141] Модуль 254 внутреннего предсказания дополнительно выполнен с возможностью определения блока 255 внутреннего предсказания на основе параметра внутреннего предсказания выбранного режима внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания, используемого для блока, модуль 254 внутреннего предсказания дополнительно конфигурируется для подачи параметра внутреннего предсказания в модуль 270 энтропийного кодирования, то есть предоставления информации для указания выбранного режима внутреннего предсказания, используемого для блока. В примере модуль 254 внутреннего предсказания может быть выполнен с возможностью выполнения любой комбинации следующих технологий внутреннего предсказания.[0141] The intra prediction unit 254 is further configured to determine the intra prediction block 255 based on the intra prediction parameter of the selected intra prediction mode. In any case, after selecting the intra prediction mode used for the block, the intra prediction module 254 is further configured to supply an intra prediction parameter to the entropy encoding module 270, i.e., providing information to indicate the selected intra prediction mode used for the block. In an example, intra prediction module 254 may be configured to perform any combination of the following intra prediction techniques.

[0142] Модуль 270 энтропийного кодирования сконфигурирован для применения алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (variable length coding, VLC), схемы контекстно-адаптивного VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, схемы контекстно-зависимого адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (syntax-based context-adaptive binary arithmetic coding, SBAC), схемы кодирования на основе энтропии разбиения вероятностного интервала (probability interval partitioning entropy, PIPE) или другого метода или технологии энтропийного кодирования) к одному или нескольким (или ни одному) из квантованного остаточного коэффициента 209, параметра внешнего предсказания, параметра внутреннего предсказания и/или параметра контурного фильтра, чтобы получить данные 21 закодированного изображения, которые могут быть выведены с использованием выхода 272, например, в форме закодированного потока битов. Закодированный поток битов может быть передан в видеодекодер 30 или может быть заархивирован для последующей передачи или извлечения видеодекодером 30. Модуль 270 энтропийного кодирования может быть дополнительно сконфигурирован для выполнения энтропийного кодирования другого элемента синтаксиса текущего среза видео, который кодируется.[0142] The entropy encoding module 270 is configured to apply an entropy encoding algorithm or scheme (e.g., variable length coding (VLC) scheme, context adaptive VLC (CAVLC) scheme, arithmetic coding scheme, context - dependent adaptive binary arithmetic coding (CABAC), context-adaptive binary arithmetic coding schemes based on syntax (syntax-based context-adaptive binary arithmetic coding, SBAC), coding schemes based on the entropy of splitting a probabilistic interval (probability interval partitioning entropy, PIPE) or other entropy coding method or technology) to one or more (or none) of the quantized residual coefficient 209, the inter prediction parameter, the intra prediction parameter, and/or the loop filter parameter to obtain encoded picture data 21 of the messages that can be output using the output 272, for example, in the form of an encoded bitstream. The encoded bit stream may be transmitted to video decoder 30 or may be archived for later transmission or retrieval by video decoder 30. Entropy encoding module 270 may be further configured to perform entropy encoding of another syntax element of the current video slice that is being encoded.

[0143] Другой структурный вариант видеокодера 20 может быть сконфигурирован для кодирования видеопотока. Например, кодер 20, не основывающийся на преобразовании, может напрямую квантовать остаточный сигнал без модуля 206 обработки преобразования для некоторых блоков или кадров. В еще одной реализации кодер 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, которые объединены в один модуль.[0143] Another structural variant of video encoder 20 may be configured to encode a video stream. For example, non-transform-based encoder 20 may directly quantize the residual signal without transform processing module 206 for some blocks or frames. In yet another implementation, encoder 20 may have a quantizer 208 and an inverse quantizer 210 that are combined into one module.

[0144] Фиг.3 показывает пример видеодекодера 30, сконфигурированного для реализации технологий согласно настоящей заявке. Видеодекодер 30 выполнен с возможностью приема закодированных данных 21 изображения (например, закодированного потока битов), закодированных кодером 20 или т.п., чтобы получить декодированное изображение 31. В процессе декодирования видеодекодер 30 принимает видеоданные от видеокодера 20, например, закодированный поток битов видеоданных, который указывает блок изображения закодированного среза видео и связанный с ним элемент синтаксиса.[0144] FIG. 3 shows an example of a video decoder 30 configured to implement the technologies of the present application. Video decoder 30 is configured to receive encoded image data 21 (e.g., an encoded bitstream) encoded by an encoder 20 or the like to obtain a decoded image 31. In the decoding process, video decoder 30 receives video data from video encoder 20, such as an encoded video bitstream , which specifies the image block of the encoded video slice and its associated syntax element.

[0145] В примере по Фиг.3, декодер 30 включает в себя модуль 304 энтропийного декодирования, модуль 310 обратного квантования, модуль 312 обработки обратного преобразования, модуль 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированных изображений и модуль 360 обработки предсказания. Модуль 360 обработки предсказания может включать в себя модуль 344 внешнего предсказания, модуль 354 внутреннего предсказания и модуль 362 выбора режима. В некоторых примерах видеодекодер 30 может выполнять обход декодирования, в основном обратный обходу кодирования, описанному со ссылкой на видеокодер 20 по Фиг.2.[0145] In the example of FIG. 3, the decoder 30 includes an entropy decoding module 304, an inverse quantization module 310, an inverse transform processing module 312, a reconstruction module 314 (e.g., an adder 314), a buffer 316, a loop filter 320, a buffer 330 decoded pictures and a prediction processing module 360 . The prediction processing module 360 may include an inter prediction module 344, an intra prediction module 354, and a mode selection module 362. In some examples, video decoder 30 may perform a decoding bypass, essentially the reverse of the encoding bypass described with reference to video encoder 20 of FIG.

[0146] Модуль 304 энтропийного декодирования сконфигурирован для выполнения энтропийного декодирования закодированных данных 21 изображения, чтобы получить квантованный коэффициент 309, декодированный параметр кодирования (не показан на Фиг.3) и/или т.п., например, любой один или все из параметра внешнего предсказания, параметра внутреннего предсказания, параметра контурного фильтра и/или другого элемента синтаксиса (декодированных). Модуль 304 энтропийного декодирования дополнительно выполнен с возможностью пересылки параметра внешнего предсказания, параметра внутреннего предсказания и/или другого элемента синтаксиса в модуль 360 обработки предсказания. Видеодекодер 30 может принимать элемент синтаксиса на уровне среза видео и/или элемент синтаксиса на уровне блока видео.[0146] The entropy decoding module 304 is configured to perform entropy decoding of the encoded image data 21 to obtain a quantized coefficient 309, a decoded coding parameter (not shown in FIG. 3), and/or the like, such as any one or all of the parameter inter prediction, intra prediction parameter, loop filter parameter, and/or other syntax element (decoded). The entropy decoding module 304 is further configured to forward an inter prediction parameter, an intra prediction parameter, and/or another syntax element to the prediction processing module 360 . Video decoder 30 may receive a video slice level syntax element and/or a video block level syntax element.

[0147] Модуль 310 обратного квантования может иметь ту же функцию, что и модуль 110 обратного квантования, модуль 312 обработки обратного преобразования может иметь ту же функцию, что и модуль 212 обработки обратного преобразования, модуль 314 восстановления может иметь ту же функцию, что и модуль 214 восстановления, буфер 316 может иметь ту же функцию, что и буфер 216, контурный фильтр 320 может иметь ту же функцию, что и контурный фильтр 220, и буфер 330 декодированных изображений может иметь ту же функцию, что и буфер 230 декодированных изображений.[0147] The inverse quantization unit 310 may have the same function as the inverse quantization unit 110, the inverse transform processing unit 312 may have the same function as the inverse transform processing unit 212, the reconstruction unit 314 may have the same function as recovery module 214, buffer 316 may have the same function as buffer 216, loop filter 320 may have the same function as loop filter 220, and decoded picture buffer 330 may have the same function as decoded picture buffer 230.

[0148] Модуль 360 обработки предсказания может включать в себя модуль 344 внешнего предсказания и модуль 354 внутреннего предсказания. Модуль 344 внешнего предсказания может иметь функцию, аналогичную функции модуля 244 внешнего предсказания, и модуль 354 внутреннего предсказания может иметь функцию, аналогичную функции модуля 254 внутреннего предсказания. Модуль 360 обработки предсказания обычно сконфигурирован для выполнения предсказания блока и/или получения блока 365 предсказания из закодированных данных 21, а также приема или получения (явно или неявно) параметра, относящегося к предсказанию, и/или информации о выбранном режиме предсказания, например, от модуля 304 энтропийного декодирования.[0148] The prediction processing module 360 may include an inter prediction module 344 and an intra prediction module 354 . Inter prediction module 344 may have a function similar to that of inter prediction module 244, and intra prediction module 354 may have a function similar to that of intra prediction module 254. Prediction processing unit 360 is typically configured to perform block prediction and/or obtain prediction block 365 from encoded data 21, and to receive or obtain (explicitly or implicitly) a prediction related parameter and/or selected prediction mode information, such as from module 304 entropy decoding.

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

[0150] Модуль 360 обработки предсказания выполнен с возможностью: определять информацию предсказания, используемую для блока видео текущего среза видео, путем анализа вектора движения и другого элемента синтаксиса и использовать информацию предсказания для генерирования блока предсказания, используемого для текущего блока видео, который декодируется. Например, модуль 360 обработки предсказания определяет, используя некоторые принятые элементы синтаксиса, режим предсказания (например, внутреннее или внешнее предсказание), используемый для кодирования блока видео среза видео, тип среза внешнего предсказания (например, B-срез, P-срез или GPB-срез), информацию структуры одного или нескольких изображений в списке опорных изображений, используемых для среза, вектор движения каждого интер-кодированного блока видео, используемого для среза, состояние внешнего предсказания каждого интер-кодированного блока видео, используемого для среза, и другую информацию для декодирования блока видео текущего среза видео.[0150] The prediction processing unit 360 is configured to: determine the prediction information used for the video block of the current video slice by analyzing the motion vector and another syntax element, and use the prediction information to generate a prediction block used for the current video block that is being decoded. For example, prediction processing unit 360 determines, using some received syntax elements, a prediction mode (eg, intra or inter prediction) used to encode a video block of a video slice, an inter prediction slice type (eg, B-slice, P-slice, or GPB- slice), structure information of one or more pictures in the reference picture list used for slice, motion vector of each inter-coded video block used for slice, inter-prediction state of each inter-coded video block used for slice, and other information for decoding video block of the current video slice.

[0151] Модуль 310 обратного квантования может быть сконфигурирован для выполнения обратного квантования (то есть деквантования) в отношении квантованного коэффициента преобразования, предоставленного в потоке битов и декодированного модулем 304 энтропийного декодирования. Процесс обратного квантования может включать в себя: использование параметра квантования, вычисленного видеокодером 20 для каждого блока видео в срезе видео, чтобы определить степень квантования, которая должна применяться, и определить степень обратного квантования, которая должна применяться.[0151] Inverse quantization module 310 may be configured to perform inverse quantization (ie, dequantization) on a quantized transform coefficient provided in the bitstream and decoded by entropy decoding module 304. The inverse quantization process may include: using a quantization parameter calculated by video encoder 20 for each video block in the video slice to determine the amount of quantization to be applied and to determine the amount of inverse quantization to be applied.

[0152] Модуль 312 обработки обратного преобразования сконфигурирован для применения обратного преобразования (например, обратного DCT, обратного целочисленного преобразования или концептуально аналогичного процесса обратного преобразования) к коэффициенту преобразования, чтобы сгенерировать остаточный блок в области выборки.[0152] The inverse transform processing module 312 is configured to apply an inverse transform (eg, inverse DCT, inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficient to generate a residual block in the sample area.

[0153] Модуль 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять блок 313 обратного преобразования (то есть восстановленный остаточный блок 313) к блоку 365 предсказания, чтобы получить восстановленный блок 315 в области выборки, например, путем добавления значения выборки восстановленного остаточного блока 313 к значению выборки блока 365 предсказания.[0153] Restoration module 314 (e.g., 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 a sample value of the reconstructed residual block 313 to the value of the sample block 365 prediction.

[0154] Модуль 320 контурной фильтрации (в цикле кодирования или после цикла кодирования) сконфигурирован для фильтрации восстановленного блока 315 для получения фильтрованного блока 321, чтобы плавно выполнять преобразование выборок или повышать качество видео. В одном примере модуль 320 контурного фильтра может быть сконфигурирован для выполнения любой комбинации следующих технологий фильтрации. Модуль 320 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, например, фильтра устранения блочности, фильтра с адаптивным к выборке смещением (sample-adaptive offset, SAO) или другого фильтра, такого как двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживающий фильтр, либо совместный фильтр. Хотя модуль 320 контурного фильтра показан на Фиг.3 в качестве внутриконтурного фильтра, модуль 320 контурного фильтра может быть реализован как пост-контурный фильтр в других конфигурациях.[0154] The loop filtering module 320 (in the encoding cycle or after the encoding cycle) is configured to filter the reconstructed block 315 to obtain a filtered block 321 to smoothly perform sample conversion or improve video quality. In one example, loop filter module 320 may be configured to perform any combination of the following filter technologies. The loop filter module 320 is designed to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or another filter such as a two-sided filter, an adaptive loop filter, ALF), a sharpening filter or an anti-aliasing filter, or a combined filter. Although the loop filter module 320 is shown in FIG. 3 as an in-loop filter, the loop filter module 320 may be implemented as a post-loop filter in other configurations.

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

[0156] Декодер 30 выполнен с возможностью выводить декодированное изображение 31 с использованием выхода 332 и т.п., чтобы представить декодированное изображение 31 пользователю или предоставить декодированное изображение 31 для просмотра пользователем.[0156] The decoder 30 is configured to output the decoded image 31 using the output 332 or the like to present the decoded image 31 to the user or provide the decoded image 31 for the user to view.

[0157] Другой вариант видеодекодера 30 может быть выполнен с возможностью декодировать сжатый поток битов. Например, декодер 30 может генерировать выходной видеопоток без модуля 320 контурного фильтра. Например, декодер 30, не основывающийся на преобразовании, может напрямую деквантовать остаточный сигнал без модуля 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь модуль 310 обратного квантования и модуль 312 обработки обратного преобразования, которые объединены в один модуль.[0157] Another embodiment of video decoder 30 may be configured to decode the compressed bitstream. For example, decoder 30 may generate an output video stream without loop filter module 320 . For example, non-transform based decoder 30 can directly dequantize the residual signal without inverse transform processing module 312 for some blocks or frames. In another implementation, video decoder 30 may have an inverse quantization module 310 and an inverse transform processing module 312 that are combined into one module.

[0158] На Фиг.4 приведена схема, иллюстрирующая пример системы 40 видеокодирования, включающей в себя кодер 20 по Фиг.2 и/или декодер 30 по Фиг.3 согласно примерному варианту осуществления. Система 40 может реализовывать сочетание различных технологий настоящей заявки. В проиллюстрированной реализации система 40 видеокодирования может включать в себя устройство 41 формирования изображения, видеокодер 20, видеодекодер 30 (и/или видеодекодер, реализованный логической схемой 47 модуля 46 обработки), антенну 42, один или несколько процессоров 43, одно или несколько запоминающих устройств 44 и/или устройство 45 отображения.[0158] FIG. 4 is a diagram illustrating an example of a video coding system 40 including encoder 20 of FIG. 2 and/or decoder 30 of FIG. 3 according to an exemplary embodiment. System 40 may implement a combination of various technologies of the present application. In the illustrated implementation, video encoding system 40 may include an imager 41, a video encoder 20, a video decoder 30 (and/or a video decoder implemented by logic 47 of processing unit 46), an antenna 42, one or more processors 43, one or more memory devices 44 and/or display device 45 .

[0159] Как показано на фигуре, устройство 41 формирования изображения, антенна 42, блок 46 обработки, логическая схема 47, видеокодер 20, видеодекодер 30, процессор 43, память 44 и/или устройство 45 отображения могут сообщаться друг с другом. Как описано, хотя система 40 видеокодирования проиллюстрирована как с видеокодером 20, так и с видеодекодером 30, в различных примерах система 40 видеокодирования может включать в себя только видеокодер 20 или только видеодекодер 30.[0159] As shown in the figure, the imaging device 41, antenna 42, processing unit 46, logic circuit 47, video encoder 20, video decoder 30, processor 43, memory 44, and/or display device 45 can communicate with each other. As described, although video encoding system 40 is illustrated with both video encoder 20 and video decoder 30, in various examples, video encoding system 40 may include only video encoder 20 or only video decoder 30.

[0160] В некоторых примерах, как показано на фигуре, система 40 видеокодирования может включать в себя антенну 42. Например, антенна 42 может быть приспособлена для передачи или приема закодированного потока битов видеоданных. Кроме того, в некоторых примерах система 40 видеокодирования может включать в себя устройство 45 отображения. Устройство 45 отображения может быть приспособлено для представления видеоданных. В некоторых примерах, как показано на фигуре, логическая схема 47 может быть реализована модулем 46 обработки. Модуль 46 обработки может включать в себя логику специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. Система 40 видеокодирования также может включать в себя дополнительный процессор 43. Дополнительный процессор 43 может аналогичным образом включать в себя логику специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. В некоторых примерах логическая схема 47 может быть реализована с помощью аппаратных средств, таких как специализированное оборудование для кодирования видео, а процессор 43 может быть реализован с помощью универсального программного обеспечения, операционной системы и т.п. Кроме того, память 44 может быть любым типом памяти, например энергозависимой памятью (например, статическим ОЗУ (Static Random Access Memory, SRAM) или динамическим ОЗУ (Dynamic Random Access Memory, DRAM)) или энергонезависимой памятью (например, флэш-памятью). В неограничивающем примере, память 44 может быть реализована с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к памяти 44 (например, для реализации буфера изображений). В других примерах, логическая схема 47 и/или модуль 46 обработки могут включать в себя память (например, кэш) для реализации буфера изображений и т.п.[0160] In some examples, as shown in the figure, video coding system 40 may include an antenna 42. For example, antenna 42 may be adapted to transmit or receive an encoded video bitstream. In addition, in some examples, the video coding system 40 may include a display device 45 . Display device 45 may be adapted to present video data. In some examples, as shown in the figure, the logic circuit 47 may be implemented by the module 46 processing. Processing unit 46 may include application-specific integrated circuit (ASIC) logic, a graphics processor, a general purpose processor, and the like. The video encoding system 40 may also include an additional processor 43. The additional processor 43 may likewise include application-specific integrated circuit (ASIC) logic, a graphics processor, a general purpose processor, and the like. In some examples, logic circuitry 47 may be implemented in hardware, such as dedicated video coding hardware, and processor 43 may be implemented in general software, operating system, or the like. In addition, the memory 44 can be any type of memory, such as volatile memory (eg, Static Random Access Memory (SRAM) or Dynamic RAM (Dynamic Random Access Memory, DRAM)) or non-volatile memory (eg, flash memory). In a non-limiting example, memory 44 may be implemented with a cache. In some examples, logic circuitry 47 may access memory 44 (eg, to implement an image buffer). In other examples, logic circuitry 47 and/or processing module 46 may include a memory (eg, cache) for implementing an image buffer and the like.

[0161] В некоторых примерах видеокодер 20, реализованный посредством логической схемы, может включать в себя буфер изображений (например, реализованный модулем 46 обработки или памятью 44) и модуль обработки графики (например, реализованный модулем 46 обработки). Графический процессор может быть коммуникационно связан с буфером изображений. Модуль обработки графики может включать в себя видеокодер 20, реализованный посредством логической схемы 47, для реализации различных модулей, которые описаны со ссылкой на Фиг.2 и/или любую другую систему или подсистему кодера, описанные в данном описании. Логическая схема может быть сконфигурирована для выполнения различных операций, описанных в данном описании.[0161] In some examples, video encoder 20 implemented by logic may include an image buffer (eg, implemented by processing module 46 or memory 44) and a graphics processing module (eg, implemented by processing module 46). The graphics processor may be in communication with the image buffer. The graphics processing module may include a video encoder 20 implemented by logic 47 to implement the various modules that are described with reference to FIG. 2 and/or any other encoder system or subsystem described herein. The logic circuit can be configured to perform various operations described in this description.

[0162] Видеодекодер 30 может быть аналогичным образом реализован логической схемой 47 для реализации различных модулей, которые описаны со ссылкой на декодер 30 по Фиг.3 и/или любую другую систему или подсистему декодера, описанную в этом описании. В некоторых примерах видеодекодер 30, реализованный посредством логической схемы, может включать в себя буфер изображений (реализованный модулем 46 обработки или памятью 44) и модуль обработки графики (например, реализованный модулем 46 обработки). Графический процессор может быть коммуникационно связан с буфером изображений. Модуль обработки графики может включать в себя видеодекодер 30, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на Фиг.3 и/или любую другую систему или подсистему декодера, описанную в настоящем описании.[0162] Video decoder 30 may be similarly implemented by logic 47 to implement the various modules that are described with reference to decoder 30 of FIG. 3 and/or any other decoder system or subsystem described herein. In some examples, video decoder 30 implemented by logic may include an image buffer (implemented by processing module 46 or memory 44) and a graphics processing module (eg, implemented by processing module 46). The graphics processor may be in communication with the image buffer. The graphics processing module may include a video decoder 30 implemented by logic 47 to implement the various modules that are described with reference to FIG. 3 and/or any other decoder system or subsystem described herein.

[0163] В некоторых примерах антенна 42 системы 40 видеокодирования может быть приспособлена для приема закодированного потока битов видеоданных. Как описано, закодированный поток битов может включать в себя данные, индикатор, значение индекса, данные выбора режима и т.п., которые относятся к кодированию видеокадров, описанному в настоящем описании, например, данные, относящиеся к разбиению при кодировании (например, коэффициент преобразования или квантованный коэффициент преобразования, необязательный индикатор (как описано) и/или данные, определяющие разбиение при кодировании). Система 40 видеокодирования может дополнительно включать в себя видеодекодер 30, который подключен к антенне 42 и сконфигурирован для декодирования закодированного потока битов. Устройство 45 отображения приспособлено для представления видеокадра.[0163] In some examples, antenna 42 of video coding system 40 may be adapted to receive an encoded video bitstream. As described, the encoded bitstream may include data, an indicator, an index value, mode selection data, and the like, which is related to the encoding of video frames described herein, such as data related to coding splitting (for example, coefficient transform or a quantized transform coefficient, an optional indicator (as described) and/or encoding splitting data). The video coding system 40 may further include a video decoder 30 that is connected to the antenna 42 and configured to decode the encoded bit stream. The display device 45 is adapted to present a video frame.

[0164] Фиг.5 представляет собой упрощенную блок-схему устройства 500, которое может использоваться как одно или два из исходного устройства 12 и целевого устройства 14 по Фиг.1 согласно примерному варианту осуществления. Устройство 500 может реализовывать технологии согласно настоящей заявке. Устройство 500 может использовать форму вычислительной системы, включающей в себя множество вычислительных устройств, или может использовать форму одного вычислительного устройства, такого как мобильный телефон, планшетный компьютер, портативный компьютер, портативный компьютер или настольный компьютер.[0164] FIG. 5 is a simplified block diagram of a device 500 that can be used as one or two of source device 12 and target device 14 of FIG. 1 according to an exemplary embodiment. Device 500 may implement the technologies of the present application. The device 500 may use the form of a computing system including a plurality of computing devices, or may use the form of a single computing device such as a mobile phone, tablet computer, laptop computer, laptop computer, or desktop computer.

[0165] Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть любым другим типом существующего или будущего устройства или устройств, которые могут управлять или обрабатывать информацию. Как показано на чертеже, хотя раскрытые реализации могут быть реализованы на практике с использованием одного процессора, такого как процессор 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.[0165] Processor 502 in device 500 may be a central processing unit. Alternatively, processor 502 may be any other type of existing or future device or devices that can control or process information. As shown in the drawing, while the disclosed implementations may be practiced using a single processor, such as processor 502, speed and efficiency advantages may be achieved using more than one processor.

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

[0167] Устройство 500 может дополнительно включать в себя одно или несколько устройств вывода, например дисплей 518. В одном примере дисплей 518 может быть сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, которым можно управлять для распознавания сенсорного ввода. Дисплей 518 может быть связан с процессором 502 с помощью шины 512. В дополнение к дисплею 518 может быть дополнительно предусмотрено другое устройство вывода, которое позволяет пользователю программировать устройство 500 или использовать устройство 500 другим способом, либо другое устройство вывода может быть предоставлено в качестве альтернативы дисплею 518. Когда устройство вывода является дисплеем или включает в себя дисплей, дисплей может быть реализован по-другому, например, с использованием жидкокристаллического дисплея (liquid crystal display, LCD), дисплея с электронно-лучевой трубкой (cathode-ray tube, CRT), плазменного дисплея или светодиодного дисплея, такого как дисплей на основе органических светодиодов (organic LED, OLED).[0167] The device 500 may further include one or more output devices, such as a display 518. In one example, the display 518 may be a touch display that combines the display with a touch element that can be operated to recognize touch input. Display 518 may be coupled to processor 502 via bus 512. In addition to display 518, another output device may be additionally provided that allows the user to program device 500 or use device 500 in another way, or another output device may be provided as an alternative to the display. 518. When the output device is a display or includes a display, the display may be implemented in other ways, such as using a liquid crystal display (LCD), a cathode-ray tube (CRT) display, a plasma display; or an LED display such as an organic LED (OLED) display.

[0168] Устройство 500 может дополнительно включать в себя устройство 520 считывания изображения или может быть подключено к устройству 520 считывания изображения. Устройство 520 считывания изображения представляет собой, например, камеру или любое другое существующее или будущее устройство 520 считывания изображения, которое может фиксировать изображение. Изображение представляет собой, например, изображение пользователя, который эксплуатирует устройство 500. Устройство 520 считывания изображения может быть размещено прямо перед пользователем, который эксплуатирует устройство 500. В примере положение и оптическая ось устройства 520 считывания изображения могут быть сконфигурированы так, чтобы поле зрения устройства 520 считывания изображения включало в себя область, смежную с дисплеем 518, и дисплей 518 можно было бы видеть из этой области.[0168] The device 500 may further include an image reader 520, or may be connected to an image reader 520. The image reader 520 is, for example, a camera or any other existing or future image reader 520 that can capture an image. The image is, for example, an image of the user who operates the device 500. The image reader 520 may be placed directly in front of the user who operates the device 500. In an example, the position and optical axis of the image reader 520 may be configured such that the field of view of the device 520 image reading included an area adjacent to the display 518, and the display 518 could be seen from this area.

[0169] Устройство 500 может дополнительно включать в себя устройство 522 считывания звука или может быть подключено к устройству 522 считывания звука. Устройство 522 считывания звука представляет собой, например, микрофон или любое другое существующее или будущее устройство считывания звука, которое может фиксировать звук вблизи устройства 500. Устройство 522 считывания звука может быть размещено непосредственно перед пользователем, который эксплуатирует устройство 500, и может быть сконфигурировано для приема звука, такого как голос или другой звук, который издается пользователем, когда пользователь эксплуатирует устройство 500.[0169] The device 500 may further include an audio reader 522, or may be connected to an audio reader 522. Sound pickup device 522 is, for example, a microphone or any other existing or future sound pickup device that can pick up sound in the vicinity of device 500. Sound pickup device 522 can be placed directly in front of a user who is operating device 500 and can be configured to receive sound, such as a voice or other sound that is emitted by the user when the user operates the device 500.

[0170] Хотя процессор 502 и память 504 устройства 500 объединены в один блок, как показано на Фиг.5, можно использовать другие конфигурации. Работа процессора 502 может быть распределена между множеством машин, которые могут быть напрямую связаны (каждая машина имеет один или несколько процессоров) или могут быть распределены в локальном регионе или в другой сети. Память 504 может быть распределена на множестве машин, таких как сетевая память и память на множестве машин, на которых работает устройство 500. Хотя здесь изображена одна шина, может быть множество шин 512 устройства 500. Кроме того, вторичная память 514 может быть напрямую связана с другими компонентами устройства 500 или может быть доступна через сеть и может включать в себя один интегрированный блок, такой как карта памяти, или множество блоков, таких как множество памяти. открытки. Следовательно, устройство 500 может быть реализовано во множестве конфигураций.[0170] Although the processor 502 and memory 504 of the device 500 are combined into one unit, as shown in Fig. 5, other configurations can be used. The operation of the processor 502 may be distributed among a plurality of machines, which may be directly connected (each machine has one or more processors) or may be distributed in a local region or on another network. Memory 504 may be distributed across multiple machines, such as network storage and memory across multiple machines running device 500. Although a single bus is depicted here, there may be multiple buses 512 of device 500. In addition, secondary memory 514 may be directly coupled to other components of the device 500 or may be accessible via a network and may include one integrated unit, such as a memory card, or a plurality of units, such as a plurality of memory. postcards. Therefore, device 500 may be implemented in a variety of configurations.

[0171] Ниже описаны концепции настоящей заявки.[0171] The concepts of the present application are described below.

[0172] 1. Режим внешнего предсказания[0172] 1. Inter prediction mode

[0173] В HEVC используются два режима внешнего предсказания: усовершенствованный режим предсказания векторов движения (advanced motion vector prediction, AMVP) и режим слияния (merge).[0173] HEVC uses two inter-prediction modes: advanced motion vector prediction (AMVP) mode and merge mode.

[0174] В режиме AMVP сначала проходятся соседние в пространственном или временном плане закодированные блоки (обозначаемые как соседние блоки) текущего блока, и список потенциально подходящих векторов движения (который также может называться списком потенциально подходящей информации о движении) строится на основе информации о движении соседних блоков. Затем оптимальный вектор движения определяется из списка потенциально подходящих векторов движения на основе стоимости в плане соотношения искажения-скорости, и потенциально подходящая информация о движении с минимальной стоимостью в плане соотношения искажения-скорости используется в качестве предиктора вектора движения (motion vector predictor, MVP) текущего блока. Обе позиции соседних блоков и порядок их обхода заранее определены. Стоимость в плане соотношения искажения-скорости вычисляется по формуле (1), где J указывает стоимость в плане соотношения искажения-скорости (RD-стоимость), SAD - сумма абсолютных разностей (sum of absolute differences, SAD) между исходным значением выборки и предсказанным значением выборки, полученным посредством оценки движения с использованием потенциально подходящего предиктора вектора движения, R указывает битрейт, а

Figure 00000001
указывает множитель Лагранжа. Сторона кодера передает на сторону декодера индекс выбранного предиктора вектора движения в списке потенциально подходящих векторов движения и значения индекса опорного кадра. Кроме того, поиск движения выполняется в окрестности с центром в MVP, чтобы получить фактический вектор движения текущего блока. Сторона кодера передает на сторону декодера разность (разность векторов движения) между MVP и фактическим вектором движения.[0174] In the AMVP mode, spatially or temporally adjacent encoded blocks (referred to as neighboring blocks) of the current block are first traversed, and a list of potentially suitable motion vectors (which may also be referred to as a list of potentially suitable motion information) is built based on the motion information of neighboring blocks. The optimal motion vector is then determined from a list of potentially suitable motion vectors based on the cost in terms of the distortion-velocity ratio, and the potentially suitable motion information with the minimum cost in terms of the distortion-velocity ratio is used as a motion vector predictor (MVP) of the current block. Both positions of neighboring blocks and the order in which they are traversed are predetermined. The cost in terms of distortion-rate ratio is calculated by formula (1), where J indicates the cost in terms of distortion-rate ratio (RD-cost), SAD is the sum of absolute differences (SAD) between the original sample value and the predicted value samples obtained by motion estimation using a potentially suitable motion vector predictor, R indicates the bit rate, and
Figure 00000001
specifies the Lagrange multiplier. The encoder side transmits to the decoder side the index of the selected motion vector predictor in the list of potentially suitable motion vectors and the index value of the reference frame. In addition, a motion search is performed in the neighborhood centered on the MVP to get the actual motion vector of the current block. The encoder side transmits to the decoder side a difference (motion vector difference) between the MVP and the actual motion vector.

Figure 00000002
(1)
Figure 00000002
(one)

[0175] В режиме слияния список потенциально подходящих векторов движения сначала строится на основе информации о движении соседних в пространственном или временном плане закодированных блоков текущего блока. Затем оптимальная информация о движении определяется из списка потенциально подходящих векторов движения на основе стоимости в плане соотношения искажения-скорости, чтобы служить в качестве информации о движении для текущего блока. Затем значение индекса (обозначенное в дальнейшем как индекс слияния) позиции оптимальной информации о движении в списке потенциально подходящих векторов движения передается на сторону декодера. Пространственная потенциально подходящая информация о движении и временная потенциально подходящая информация о движении текущего блока показаны на Фиг.6. Пространственная потенциально подходящая информация о движении поступает из пяти пространственно соседних блоков (A0, A1, B0, B1 и B2). Если соседний блок недоступен (соседний блок не существует, или соседний блок не закодирован, или режим предсказания, используемый для соседнего блока, не является режимом внешнего предсказания), информация о движении соседнего блока не добавляется в список потенциально подходящих векторов движения. Временная потенциально подходящая информация о движении текущего блока получается путем масштабирования вектора движения (MV) блока в соответствующей позиции в опорном кадре на основе порядковых номеров изображения (picture order count, POC) опорного кадра и текущего кадра. Сначала определяется то, является ли блок в позиции T в опорном кадре доступным. Если блок недоступен, выбирается блок в позиции C.[0175] In the merge mode, a list of potentially suitable motion vectors is first built based on the motion information of spatially or temporally adjacent encoded blocks of the current block. Then, optimal motion information is determined from a list of potentially suitable motion vectors based on cost in terms of distortion-rate to serve as motion information for the current block. Then, an index value (hereinafter referred to as the merge index) of the position of the optimal motion information in the list of potentially suitable motion vectors is transmitted to the decoder side. Spatial candidate motion information and temporal candidate motion information of the current block are shown in FIG. Spatial potentially relevant traffic information comes from five spatially neighboring blocks (A0, A1, B0, B1 and B2). If a neighbor block is not available (the neighbor block does not exist, or the neighbor block is not encoded, or the prediction mode used for the neighbor block is not an inter prediction mode), motion information of the neighbor block is not added to the list of potentially suitable motion vectors. Temporal potentially relevant motion information of the current block is obtained by scaling the motion vector (MV) of the block at the corresponding position in the reference frame based on the picture order count (POC) of the reference frame and the current frame. First, it is determined whether the block at position T in the reference frame is available. If the block is not available, the block at position C is selected.

[0176] Как и в режиме AMVP, в режиме слияния обе позиции соседних блоков и порядок их обхода также являются заранее определенными. Кроме того, позиции соседних блоков и их порядок обхода могут изменяться в зависимости от режима.[0176] As in the AMVP mode, in the merge mode, both positions of adjacent blocks and their traversal order are also predetermined. In addition, the positions of neighboring blocks and their traversal order may change depending on the mode.

[0177] Можно узнать, что список потенциально подходящих векторов движения необходимо поддерживать как в режиме AMVP, так и в режиме слияния. Каждый раз перед добавлением новой информации о движении в список кандидатов сначала проверяется, существует ли такая же информация о движении в данном списке. Если такая же информация о движении существует, информация о движении не добавляется в список. Этот процесс проверки называется обрезкой списка потенциально подходящих векторов движения. Обрезка списка предназначена для того, чтобы избежать одинаковой информации о движении в списке, тем самым избегая избыточного вычисления стоимости в плане соотношения искажения-скорости.[0177] You can learn that the list of potentially suitable motion vectors must be maintained in both AMVP mode and merge mode. Each time before adding new traffic information to the list of candidates, it is first checked whether the same traffic information exists in this list. If the same traffic information exists, the traffic information is not added to the list. This validation process is called pruning the list of potentially suitable motion vectors. List pruning is intended to avoid having the same motion information in the list, thereby avoiding overcomputing the cost in terms of the distortion-speed ratio.

[0178] При внутреннем предсказании HEVC все выборки в блоке кодирования используют одну и ту же информацию о движении, а затем на основе информации о движении выполняется компенсация движения, чтобы получить предикторы выборок из блока кодирования. Однако в блоке кодирования не все выборки имеют одинаковую характеристику движения. Использование одной и той же информации о движении может привести к неточному предсказанию компенсации движения и большей остаточной информации.[0178] In HEVC intra prediction, all samples in a coding block use the same motion information, and then based on the motion information, motion compensation is performed to obtain predictors of the samples from the coding block. However, in a coding block, not all samples have the same motion characteristic. Using the same motion information can lead to inaccurate motion compensation prediction and more residual information.

[0179] В существующих стандартах кодирования видео используется оценка движения с сопоставлением блоков на основе модели поступательного движения, и предполагается, что движение всех выборок в блоке согласованно. Однако в реальном мире существует множество движений. Многие объекты находятся в непоступательном движении, например, вращающийся объект, американские горки, вращающиеся в разных направлениях, фейерверк и некоторые трюки в фильмах, особенно движущийся объект в сценарии UGC. Для этих движущихся объектов, если для кодирования используется технология компенсации движения блока, основывающаяся на модели поступательного движения в существующих стандартах кодирования, эффективность кодирования может сильно пострадать. Поэтому для дальнейшего повышения эффективности кодирования вводится модель непоступательного движения, такая как аффинная модель движения.[0179] Existing video coding standards use motion estimation with block matching based on a translational motion model, and the motion of all samples in a block is assumed to be consistent. However, there are many movements in the real world. Many objects are in non-translational motion, such as a spinning object, multi-directional roller coasters, fireworks, and some movie stunts, especially a moving object in a UGC scenario. For these moving objects, if the block motion compensation technology based on the translational motion model in existing coding standards is used for encoding, the encoding efficiency may suffer greatly. Therefore, to further increase the coding efficiency, a non-translational motion model such as an affine motion model is introduced.

[0180] Следовательно, с точки зрения различных моделей движения, режим AMVP можно классифицировать на режим AMVP на основе поступательной модели и режим AMVP на основе непоступательной модели, а режим слияния можно классифицировать на режим слияния на основе поступательной модели и режим слияния на основе непоступательной модели.[0180] Therefore, in terms of different motion patterns, the AMVP mode can be classified into a translational model-based AMVP mode and a non-translational model-based AMVP mode, and a merge mode can be classified into a translational model-based merge mode and a non-translational model-based merge mode .

[0181] 2. Модель непоступательного движения[0181] 2. Non-translational motion model

[0182] При предсказании на основе модели непоступательного движения сторона кодека использует одну модель движения для получения информации о движении каждой дочерней единицы компенсации движения в текущем блоке и выполняет компенсацию движения на основе информации о движении дочерней единицы компенсации движения, чтобы получить блок предсказания, с тем чтобы повысить эффективность предсказания. Общепринятой моделью непоступательного движения является 4-параметрическая аффинная модель движения или 6-параметрическая аффинная модель движения.[0182] In non-translational motion model prediction, the codec side uses one motion model to obtain motion information of each child motion compensation unit in the current block, and performs motion compensation based on the motion information of the child motion compensation unit to obtain a prediction block, so to improve prediction performance. The generally accepted non-translational motion model is the 4-parameter affine motion model or the 6-parameter affine motion model.

[0183] Дочерняя единица компенсации движения в вариантах осуществления настоящей заявки может быть выборкой или блоком выборок N1 × N2, полученным посредством разбиения в соответствии с конкретным методом, где как N1, так и N2 являются положительными целыми числами, а N1 может быть равно N2 или может не быть равно N2.[0183] The child motion compensation unit in the embodiments of the present application may be a sample or block of samples N 1 × N 2 obtained by splitting in accordance with a specific method, where both N 1 and N 2 are positive integers, and N 1 may be equal to N 2 or may not be equal to N 2 .

[0184] 4-параметрическая аффинная модель движения выражается формулой (2):[0184] The 4-parameter affine motion model is expressed by formula (2):

Figure 00000003
(2)
Figure 00000003
(2)

[0185] 4-параметрическая аффинная модель движения может быть представлена векторами движения двух выборок и координатами этих двух выборок относительно верхней левой выборки текущего блока. Выборка, используемая для представления параметра модели движения, называется контрольной точкой. Если верхняя левая выборка (0, 0) и верхняя правая выборка (W, 0) используются в качестве контрольных точек, сначала определяются векторы движения

Figure 00000004
и
Figure 00000005
верхней левой контрольной точки и верхней правой контрольной точки текущего блока. Затем информация о движении каждой дочерней единицы компенсации движения в текущем блоке получается в соответствии с формулой (3), где (x, y) - координаты дочерней единицы компенсации движения относительно верхней левой выборки текущего блока, и W указывает ширину текущего блока.[0185] A 4-parameter affine motion model can be represented by the motion vectors of the two samples and the coordinates of the two samples relative to the top left sample of the current block. The sample used to represent a motion model parameter is called a control point. If the top left sample (0, 0) and the top right sample (W, 0) are used as control points, the motion vectors are determined first
Figure 00000004
and
Figure 00000005
top left breakpoint and top right breakpoint of the current block. Then, the motion information of each child motion compensation unit in the current block is obtained according to formula (3), where (x, y) are the coordinates of the child motion compensation unit relative to the upper left sample of the current block, and W indicates the width of the current block.

Figure 00000006
(3)
Figure 00000006
(3)

[0186] 6-параметрическая аффинная модель движения выражается формулой (4):[0186] The 6-parameter affine motion model is expressed by formula (4):

Figure 00000007
(4)
Figure 00000007
(four)

[0187] 6-параметрическая аффинная модель движения может быть представлена векторами движения трех выборок и координатами этих трех выборок относительно верхней левой выборки текущего блока. Если верхняя левая выборка (0, 0), верхняя правая выборка (W, 0) и нижняя левая выборка (0, H) используются в качестве контрольных точек, сначала определяются векторы движения

Figure 00000004
,
Figure 00000005
и
Figure 00000008
верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока. Затем информация дочерней единицы компенсации движения в текущем блоке получается в соответствии с формулой (5), где (x, y) - координаты дочерней единицы компенсации движения относительно верхней левой выборки текущего блока, а W и H указывают ширину и высоту текущего блока, соответственно.[0187] A 6-parameter affine motion model can be represented by motion vectors of three samples and the coordinates of these three samples relative to the top left sample of the current block. If the top left sample (0, 0), top right sample (W, 0), and bottom left sample (0, H) are used as reference points, the motion vectors are determined first
Figure 00000004
,
Figure 00000005
and
Figure 00000008
top left breakpoint, top right breakpoint, and bottom left breakpoint of the current block. Then, information of the child motion compensation unit in the current block is obtained according to the formula (5), where (x, y) are the coordinates of the child motion compensation unit relative to the upper left sample of the current block, and W and H indicate the width and height of the current block, respectively.

Figure 00000009
(5)
Figure 00000009
(5)

[0188] Блок кодирования, который предсказывается с использованием аффинной модели движения, называется блоком аффинного кодирования.[0188] A coding block that is predicted using an affine motion model is called an affine coding block.

[0189] Как правило, информация о движении контрольной точки блока аффинного кодирования может быть получена с использованием усовершенствованного режима предсказания вектора движения на основе аффинной модели движения (Advanced Motion Vector Prediction, AMVP) или режима слияния (Merge) на основе аффинной модели движения.[0189] Typically, the motion information of the affine coding block checkpoint can be obtained using an advanced motion vector prediction mode based on an affine motion model (Advanced Motion Vector Prediction, AMVP) or a merge mode (Merge) based on an affine motion model.

[0190] Информация о движении контрольной точки текущего блока кодирования может быть получена с использованием перенятого метода предсказания вектора движения контрольной точки или построенного метода предсказания вектора движения контрольной точки.[0190] Information about the movement of the breakpoint of the current coding block can be obtained using the adopted checkpoint motion vector prediction method or the built checkpoint motion vector prediction method.

[0191] 3. Перенятый метод предсказания вектора движения контрольной точки[0191] 3. Adopted checkpoint motion vector prediction method

[0192] Перенятый метод предсказания вектора движения контрольной точки использует модель движения соседнего закодированного блока аффинного кодирования для определения потенциально подходящего вектора движения контрольной точки текущего блока.[0192] The adopted checkpoint motion vector prediction method uses the motion model of a neighboring encoded affine coding block to determine a potentially suitable checkpoint motion vector of the current block.

[0193] Текущий блок, показанный на Фиг.7, используется в качестве примера. Соседние блоки вокруг текущего блока проходятся в указанном порядке, например, A1->B1->B0->A0->B2, чтобы найти блок аффинного кодирования, в котором расположен соседний блок текущего блока, и получить информацию о движении контрольной точки блока аффинного кодирования. Кроме того, вектор движения контрольной точки (для режима слияния) или предиктор вектора движения контрольной точки (для режима AMVP) текущего блока выводится с использованием модели движения, построенной с использованием информации о движении контрольной точки блока аффинного кодирования. Порядок A1->B1->B0->A0->B2 используется просто в качестве примера. Порядок с другим сочетанием также применим к настоящей заявке. Кроме того, соседние блоки не ограничиваются A1, B1, B0, A0 и B2.[0193] The current block shown in Fig. 7 is used as an example. Neighboring blocks around the current block are traversed in the specified order, for example, A1->B1->B0->A0->B2, to find the affine coding block in which the current block's neighboring block is located and obtain information about the movement of the affine coding block checkpoint . In addition, a checkpoint motion vector (for merging mode) or a checkpoint motion vector predictor (for AMVP mode) of the current block is derived using a motion model built using the checkpoint motion information of the affine coding block. The order A1->B1->B0->A0->B2 is just used as an example. The order with a different combination also applies to the present application. In addition, neighboring blocks are not limited to A1, B1, B0, A0, and B2.

[0194] Соседний блок может быть выборкой или блоком выборок заранее заданного размера, полученным на основе конкретного метода разбиения, например, может быть блоком выборок 4×4, блоком выборок 4×2 или блоком выборок другого размера. Это не ограничено.[0194] The adjacent block may be a sample or block of samples of a predetermined size obtained based on a particular partitioning method, for example, it may be a 4x4 block of samples, a 4x2 block of samples, or a block of samples of a different size. It's not limited.

[0195] Далее описывается процесс определения с использованием A1 в качестве примера, и другой случай аналогичен этому.[0195] The following describes the determination process using A1 as an example, and another case is similar.

[0196] Как показано на Фиг.7, если блок кодирования, в котором находится A1, является блоком 4-параметрического аффинного кодирования, получаются вектор движения (vx4, vy4) верхней левой выборки (x4, y4) и вектор движения (vx5, vy5) верхней правой выборки (x5, y5) блока аффинного кодирования. Вектор движения (vx0, vy0) верхней левой выборки (x0, y0) текущего блока аффинного кодирования вычисляется в соответствии с формулой (6), а вектор движения (vx1, vy1) верхней правой выборки (x1, y1) текущего блока аффинного кодирования вычисляется согласно формуле (7).[0196] As shown in Fig. 7, if the coding block in which A1 is located is a 4-parameter affine coding block, the motion vector (vx4, vy4) of the upper left sample (x4, y4) and the motion vector (vx5, vy5 ) of the upper right sample (x5, y5) of the affine coding block. The motion vector (vx0, vy0) of the top left sample (x0, y0) of the current affine coding block is calculated according to formula (6), and the motion vector (vx1, vy1) of the top right sample (x1, y1) of the current affine coding block is calculated according to formula (7).

Figure 00000010
(6)
Figure 00000010
(6)

Figure 00000011
(7)
Figure 00000011
(7)

[0197] Комбинация вектора движения (vx0, vy0) верхней левой выборки (x0, y0) и вектора движения (vx1, vy1) верхней правой выборки (x1, y1) текущего блока, которые получены на основе блока аффинного кодирования, в котором находится A1, представляет собой потенциально подходящий вектор движения контрольной точки текущего блока.[0197] The combination of the motion vector (vx0, vy0) of the upper left sample (x0, y0) and the motion vector (vx1, vy1) of the upper right sample (x1, y1) of the current block, which are obtained based on the affine coding block in which A1 is located , represents a potentially suitable motion vector of the current block's control point.

[0198] Если блок кодирования, в котором находится A1, является блоком 6-параметрического аффинного кодирования, получают вектор движения (vx4, vy4) верхней левой выборки (x4, y4), вектор движения (vx5, vy5) верхней правой выборки (x5, y5) и вектор движения (vx6, vy6) нижней левой выборки (x6, y6) блока аффинного кодирования. Вектор движения (vx0, vy0) верхней левой выборки (x0, y0) текущего блока вычисляется в соответствии с формулой (8), вектор движения (vx1, vy1) верхней правой выборки (x1, y1) текущего блока вычисляется согласно формуле (9), и вектор движения (vx2, vy2) нижней левой выборки (x2, y2) текущего блока вычисляется согласно формуле (10).[0198] If the coding block in which A1 is located is a 6-parameter affine coding block, the motion vector (vx4, vy4) of the upper left sample (x4, y4), the motion vector (vx5, vy5) of the upper right sample (x5, y5) and the motion vector (vx6, vy6) of the lower left sample (x6, y6) of the affine coding block. The motion vector (vx0, vy0) of the upper left sample (x0, y0) of the current block is calculated according to formula (8), the motion vector (vx1, vy1) of the upper right sample (x1, y1) of the current block is calculated according to formula (9), and the motion vector (vx2, vy2) of the lower left sample (x2, y2) of the current block is calculated according to formula (10).

Figure 00000012
(8)
Figure 00000012
(eight)

Figure 00000013
(9)
Figure 00000013
(9)

Figure 00000014
(10)
Figure 00000014
(ten)

[0199] Комбинация вектора движения (vx0, vy0) левой верхней выборки (x0, y0), вектора движения (vx1, vy1) верхней правой выборки (x1, y1) и вектора движения (vx2, vy2) нижней левой выборки (x2, y2) текущего блока, которые получены на основе блока аффинного кодирования, в котором находится A1, представляет собой потенциально подходящий вектор движения контрольной точки текущего блока.[0199] Combination of the motion vector (vx0, vy0) of the top left sample (x0, y0), the motion vector (vx1, vy1) of the top right sample (x1, y1), and the motion vector (vx2, vy2) of the bottom left sample (x2, y2 ) of the current block, which are derived from the affine coding block in which A1 resides, is a potentially suitable motion vector of the current block's checkpoint.

[0200] Следует отметить, что к настоящей заявке также применимы другие модели движения, потенциально подходящие позиции, а также порядки поиска и обхода. Подробности не описаны в вариантах осуществления настоящей заявки.[0200] It should be noted that other motion patterns, potentially suitable positions, and search and traversal orders are also applicable to the present application. Details are not described in the embodiments of the present application.

[0201] Следует отметить, что метод, в котором другие контрольные точки используются для представления моделей движения для соседних и текущих блоков кодирования, также применим к настоящей заявке. Подробности здесь не описываются.[0201] It should be noted that the method in which other breakpoints are used to represent motion models for adjacent and current coding blocks is also applicable to the present application. Details are not described here.

[0202] 4. Метод 1 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки)[0202] 4. Checkpoint built motion vector prediction method 1 (checkpoint built motion vectors)

[0203] Метод предсказания построенного вектора движения контрольной точки объединяет векторы движения соседних закодированных блоков вокруг контрольной точки текущего блока и использует объединенные векторы движения в качестве векторов движения контрольной точки текущего блока аффинного кодирования, без учета того, являются ли соседние закодированные блоки блоками аффинного кодирования.[0203] The checkpoint constructed motion vector prediction method combines the motion vectors of neighboring encoded blocks around the current block's checkpoint and uses the combined motion vectors as the checkpoint motion vectors of the current affine coding block, regardless of whether the neighboring encoded blocks are affine coding blocks.

[0204] Векторы движения верхней левой выборки и верхней правой выборки текущего блока определяются с использованием информации о движении соседних закодированных блоков вокруг текущего блока кодирования. Фиг.8A используется в качестве примера для описания метода предсказания построенного вектора движения контрольной точки. Следует отметить, что Фиг.8A является просто примером.[0204] The motion vectors of the top left sample and the top right sample of the current block are determined using motion information of adjacent encoded blocks around the current coding block. FIG. 8A is used as an example to describe a method for predicting a built checkpoint motion vector. It should be noted that Fig. 8A is merely an example.

[0205] Как показано на Фиг.8A, векторы движения соседних закодированных блоков A2, B2 и B3 в верхней левой выборке используются в качестве потенциально подходящих векторов движения для вектора движения верхней левой выборки текущего блока, а векторы движения соседних закодированных блоков B1 и B0 в правой верхней выборке используются в качестве потенциально подходящих векторов движения для вектора движения правой верхней выборки текущего блока. Потенциально подходящие векторы движения верхней левой выборки и верхней правой выборки объединяются, чтобы образовать множество двухэлементных кортежей. Векторы движения двух закодированных блоков, включенных в двухэлементный кортеж, могут использоваться в качестве потенциально подходящих векторов движения контрольной точки текущего блока, как показано в следующей формуле (11A):[0205] As shown in FIG. 8A, the motion vectors of neighboring encoded blocks A2, B2, and B3 in the upper left sample are used as potentially suitable motion vectors for the motion vector of the upper left sample of the current block, and the motion vectors of neighboring encoded blocks B1 and B0 in top right sample are used as potentially suitable motion vectors for the top right sample motion vector of the current block. Potentially suitable top left sample and top right sample motion vectors are combined to form a set of 2-tuples. The motion vectors of the two encoded blocks included in the two-tuple can be used as potentially suitable motion vectors of the current block reference point, as shown in the following formula (11A):

Figure 00000015
(11А)
Figure 00000015
(11A)

[0206]

Figure 00000016
указывает вектор движения A2,
Figure 00000017
указывает вектор движения B1,
Figure 00000018
указывает вектор движения B0,
Figure 00000019
указывает вектор движения B2, и
Figure 00000020
указывает вектор движения B3.[0206]
Figure 00000016
indicates the motion vector A2,
Figure 00000017
indicates motion vector B1,
Figure 00000018
indicates the motion vector B0,
Figure 00000019
indicates motion vector B2, and
Figure 00000020
indicates the motion vector B3.

[0207] Как показано на Фиг.8A, векторы движения соседних закодированных блоков A2, B2 и B3 в верхней левой выборке используются в качестве потенциально подходящих векторов движения для вектора движения верхней левой выборки текущего блока, векторы движения соседних закодированных блоков B1 и B0 в правой верхней выборке используются в качестве потенциально подходящих векторов движения для вектора движения правой верхней выборки текущего блока, и векторы движения соседних закодированных блоков A0 и A1 в нижней левой выборке используются в качестве потенциально подходящих векторов движения для вектора движения нижней левой выборки текущего блока. Потенциально подходящие векторы движения верхней левой выборки, верхней правой выборки и нижней левой выборки объединяются в трехэлементный кортеж. Векторы движения трех закодированных блоков, включенные в трехэлементный кортеж, могут использоваться в качестве потенциально подходящих векторов движения контрольной точки текущего блока, как показано в следующих формулах (11B) и (11C):[0207] As shown in FIG. 8A, the motion vectors of neighboring encoded blocks A2, B2 and B3 in the upper left sample are used as potentially suitable motion vectors for the motion vector of the upper left sample of the current block, the motion vectors of neighboring encoded blocks B1 and B0 in the right top-sample are used as potential candidate motion vectors for the motion vector of the top-right sample of the current block, and the motion vectors of neighboring encoded blocks A0 and A1 in the bottom-left sample are used as potential candidate motion vectors for the motion vector of the bottom-left sample of the current block. The potentially suitable motion vectors of the top left sample, top right sample, and bottom left sample are combined into a three-tuple. The motion vectors of the three encoded blocks included in the three-tuple can be used as potentially suitable motion vectors of the current block reference point, as shown in the following formulas (11B) and (11C):

Figure 00000021
(11B)
Figure 00000021
(11B)

Figure 00000022
(11C)
Figure 00000022
(11C)

[0208]

Figure 00000016
указывает вектор движения A2,
Figure 00000017
указывает вектор движения B1,
Figure 00000018
указывает вектор движения B0,
Figure 00000019
указывает вектор движения B2,
Figure 00000020
указывает вектор движения B3,
Figure 00000023
указывает вектор движения A0 и
Figure 00000024
указывает вектор движения A1.[0208]
Figure 00000016
indicates the motion vector A2,
Figure 00000017
indicates motion vector B1,
Figure 00000018
indicates the motion vector B0,
Figure 00000019
indicates motion vector B2,
Figure 00000020
indicates motion vector B3,
Figure 00000023
indicates the motion vector A0 and
Figure 00000024
indicates the motion vector A1.

[0209] Следует отметить, что к настоящей заявке применимы и другие методы объединения векторов движения контрольных точек. Подробности здесь не описаны.[0209] It should be noted that other methods for combining control point motion vectors are applicable to the present application. Details are not described here.

[0210] Следует отметить, что метод, в котором другие контрольные точки используются для представления моделей движения соседних и текущих блоков кодирования, также применим к настоящей заявке настоящей заявке. Подробности здесь не описаны.[0210] It should be noted that the method in which other breakpoints are used to represent motion patterns of adjacent and current coding blocks is also applicable to the present application. Details are not described here.

[0211] 5. Метод 2 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки): Для этого следует обратиться к Фиг.8B.[0211] 5. Reference point constructed motion vector prediction method 2 (constructed reference point motion vectors): Refer to FIG. 8B for this.

[0212] Этап 801: Получают информацию о движении контрольных точек текущего блока.[0212] Step 801: Get information about the movement of control points of the current block.

[0213] Например, на Фиг.8A, CPk (k=1, 2, 3 или 4) указывает k-ую контрольную точку, A0, A1, A2, B0, B1, B2 и B3 являются пространственно соседними позициями текущего блока и используются для предсказания CP1, CP2 или CP3, а T - это соседняя во временном плане позиция текущего блока, которая используется для предсказания CP4.[0213] For example, in Fig.8A, CPk (k=1, 2, 3 or 4) indicates the k-th control point, A0, A1, A2, B0, B1, B2 and B3 are spatially adjacent positions of the current block and are used to predict CP1, CP2, or CP3, and T is the time-adjacent position of the current block, which is used to predict CP4.

[0214] Предполагается, что координаты CP1, CP2, CP3 и CP4 равны (0, 0), (W, 0), (H, 0) и (W, H), соответственно, где W и H обозначают ширину и высоту текущего блока.[0214] It is assumed that the coordinates of CP1, CP2, CP3 and CP4 are (0, 0), (W, 0), (H, 0) and (W, H), respectively, where W and H denote the width and height of the current block.

[0215] Информация о движении каждой контрольной точки получается в следующем порядке:[0215] The movement information of each checkpoint is obtained in the following order:

[0216] (1) Для CP1 порядок проверки: B2->A2->B3. Если доступна B2, используется информация о движении B2. Если B2 недоступна, проверяются A2 и B3. Если информация о движении всех трех позиций недоступна, информация о движении CP1 не может быть получена.[0216] (1) For CP1, the check order is: B2->A2->B3. If B2 is available, B2 traffic information is used. If B2 is not available, A2 and B3 are checked. If the movement information of all three positions is not available, the movement information of CP1 cannot be obtained.

[0217] (2) Для CP2 порядок проверки B0->B1. Если B0 доступна, информация о движении B0 используется для CP2. Если B0 недоступна, проверяется B1. Если информация о движении обеих позиций недоступна, информация о движении CP2 не может быть получена.[0217] (2) For CP2, the check order is B0->B1. If B0 is available, B0 motion information is used for CP2. If B0 is not available, B1 is checked. If the movement information of both positions is not available, the movement information of CP2 cannot be obtained.

[0218] (3) Для CP3 порядок проверки A0->A1.[0218] (3) For CP3, the check order is A0->A1.

[0219] (4) Для CP4 используется информация о движении T.[0219] (4) For CP4, motion information T is used.

[0220] Здесь факт того, что X доступна, означает, что блок в позиции X (X есть A0, A1, A2, B0, B1, B2, B3 или T) закодирован и используется режим внешнего предсказания. В противном случае позиция X недоступна.[0220] Here, the fact that X is available means that the block at position X (X is A0, A1, A2, B0, B1, B2, B3 or T) is encoded and the inter prediction mode is used. Otherwise, position X is not available.

[0221] Следует отметить, что другие методы получения информации о движении контрольной точки также применимы к настоящей заявке. Подробности здесь не описаны.[0221] It should be noted that other methods for obtaining information about the movement of the control point are also applicable to the present application. Details are not described here.

[0222] Этап 802: Объединяют информацию о движении контрольных точек, чтобы получить построенную информацию о движении контрольных точек.[0222] Step 802: Checkpoint motion information is combined to obtain built checkpoint motion information.

[0223] Информацию о движении двух контрольных точек объединяют, чтобы образовать двухкомпонентный кортеж, чтобы построить 4-параметрическую аффинную модель движения. Способами объединения двух контрольных точек могут быть {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} или {CP3, CP4}. Например, 4-параметрическая аффинная модель движения, построенная с использованием двухкомпонентного кортежа, включающего в себя контрольные точки CP1 и CP2, может быть обозначена как Affine (CP1, CP2).[0223] The motion information of the two control points is combined to form a two-tuple to construct a 4-parameter affine motion model. The ways to merge two control points can be {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, or {CP3, CP4}. For example, a 4-parameter affine motion model built using a two-tuple including control points CP1 and CP2 can be denoted as Affine(CP1, CP2).

[0224] Информация о движении трех контрольных точек объединяется в трехкомпонентный кортеж, чтобы построить 6-параметрическую аффинную модель движения. Способ объединения трех контрольных точек может быть следующим: {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} или {CP1, CP3, CP4}. Например, 6-параметрическая аффинная модель движения, построенная с использованием трехкомпонентного кортежа, включающего в себя контрольные точки CP1, CP2 и CP3, может быть обозначена как Affine (CP1, CP2, CP3).[0224] The motion information of the three checkpoints is combined into a 3-tuple to construct a 6-parameter affine motion model. The way to combine the three control points can be: {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, or {CP1, CP3, CP4}. For example, a 6-parameter affine motion model built using a three-tuple including control points CP1, CP2, and CP3 can be denoted as Affine(CP1, CP2, CP3).

[0225] Информация о движении четырех контрольных точек объединяется в четырехкомпонентный кортеж, чтобы построить 8-параметрическую билинейную модель. 8-параметрическая билинейная модель, построенная с использованием четырехкомпонентного кортежа, включающего в себя контрольные точки CP1, CP2, CP3 и CP4, может быть обозначена как «Bilinear» (CP1, CP2, CP3, CP4).[0225] The motion information of the four control points is combined into a four-tuple to build an 8-parameter bilinear model. An 8-parameter bilinear model built using a 4-tuple including control points CP1, CP2, CP3, and CP4 can be referred to as "Bilinear" (CP1, CP2, CP3, CP4).

[0226] В этом варианте осуществления настоящей заявки, для простоты описания, комбинация информации о движении двух контрольных точек (или двух закодированных блоков) просто упоминается как двухкомпонентный кортеж, комбинация информации о движении трех контрольных точек (или трех закодированных блоков) просто упоминается как трехкомпонентный кортеж, и комбинация информации о движении четырех контрольных точек (или четырех закодированных блоков) просто упоминается как четырехкомпонентный кортеж.[0226] In this embodiment of the present application, for ease of description, the combination of motion information of two checkpoints (or two coded blocks) is simply referred to as a two-component tuple, the combination of motion information of three checkpoints (or three coded blocks) is simply referred to as a three-component tuple, and the combination of motion information of the four breakpoints (or four encoded blocks) is simply referred to as a 4-tuple.

[0227] Эти модели проходятся в заранее заданном порядке. Если информация о движении контрольной точки, соответствующей комбинированной модели, недоступна, считается, что модель недоступна. В противном случае, индекс опорного кадра модели определяется, и векторы движения контрольных точек масштабируются. Если масштабированная информация о движении всех контрольных точек согласованна, модель некорректна. Если информация о движении всех контрольных точек, управляющих моделью, доступна и модель корректна, информация о движении контрольных точек, составляющих модель, добавляется в список потенциально подходящей информации о движении.[0227] These models are run in a predetermined order. If information about the movement of the control point corresponding to the combined model is not available, the model is considered to be unavailable. Otherwise, the index of the reference frame of the model is determined and the movement vectors of the control points are scaled. If the scaled motion information of all control points is consistent, the model is invalid. If the motion information of all the control points that control the model is available and the model is correct, the motion information of the control points that make up the model is added to the list of potentially valid motion information.

[0228] Метод масштабирования вектора движения контрольной точки представлен в формуле (12):[0228] The checkpoint motion vector scaling method is represented by formula (12):

Figure 00000025
(12)
Figure 00000025
(12)

[0229]

Figure 00000026
указывает номер POC текущего кадра,
Figure 00000027
указывает номер POC опорного кадра текущего блока,
Figure 00000028
указывает номер POC опорного кадра контрольной точки,
Figure 00000029
указывает вектор движения, полученный через масштабирование, и MV указывает вектор движения контрольной точки.[0229]
Figure 00000026
indicates the POC number of the current frame,
Figure 00000027
indicates the POC number of the key frame of the current block,
Figure 00000028
indicates the POC number of the reference frame of the reference point,
Figure 00000029
indicates the motion vector obtained through scaling, and MV indicates the motion vector of the control point.

[0230] Следует отметить, что комбинация разных контрольных точек может быть преобразована в контрольные точки в одной и той же позиции.[0230] It should be noted that a combination of different checkpoints can be converted to checkpoints at the same position.

[0231] Например, 4-параметрическая аффинная модель движения, полученная с помощью комбинации {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3} или {CP3, CP4}, преобразуется в представление посредством {CP1, CP2} или {CP1, CP2, CP3}. Метод преобразования состоит в следующем: подставляют вектор движения и информацию координат контрольной точки в формулу (2), чтобы получить параметр модели, а затем подставляют информацию координат {CP1, CP2} в формулу (3), чтобы получить вектор движения.[0231] For example, a 4-parameter affine motion model obtained using a combination of {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, or {CP3, CP4} is converted to a representation by {CP1, CP2} or {CP1, CP2, CP3}. The conversion method is as follows: Substitute the motion vector and reference point coordinate information into formula (2) to obtain the model parameter, and then substitute {CP1, CP2} coordinate information into formula (3) to obtain the motion vector.

[0232] Более конкретно, преобразование может выполняться в соответствии со следующими формулами (13)-(21), где W указывает ширину текущего блока, а H указывает высоту текущего блока. В формулах (13)-(21) (vx0, vy0) указывает вектор движения CP1, (vx1, vy1) указывает вектор движения CP2, (vx2, vy2) указывает вектор движения CP3, и (vx3, vy3) указывает вектор движения CP4. [0232] More specifically, the transformation may be performed in accordance with the following formulas (13)-(21), where W indicates the width of the current block, and H indicates the height of the current block. In formulas (13)-(21), (vx 0 , vy 0 ) indicates the motion vector of CP1, (vx 1 , vy 1 ) indicates the motion vector of CP2, (vx 2 , vy 2 ) indicates the motion vector of CP3, and (vx 3 , vy 3 ) indicates the motion vector of CP4.

[0233] {CP1, CP2} можно преобразовать в {CP1, CP2, CP3} согласно следующей формуле (13). Другими словами, вектор движения CP3 в {CP1, CP2, CP3} можно определить по формуле (13):[0233] {CP1, CP2} can be converted to {CP1, CP2, CP3} according to the following formula (13). In other words, the motion vector CP3 in {CP1, CP2, CP3} can be determined by formula (13):

Figure 00000030
(13)
Figure 00000030
(13)

[0234] {CP1, CP3} можно преобразовать в {CP1, CP2} или {CP1, CP2, CP3} по следующей формуле (14):[0234] {CP1, CP3} can be converted to {CP1, CP2} or {CP1, CP2, CP3} using the following formula (14):

Figure 00000031
(14)
Figure 00000031
(fourteen)

[0235] {CP2, CP3} можно преобразовать в {CP1, CP2} или {CP1, CP2, CP3} по следующей формуле (15):[0235] {CP2, CP3} can be converted to {CP1, CP2} or {CP1, CP2, CP3} using the following formula (15):

Figure 00000032
(15)
Figure 00000032
(fifteen)

[0236] {CP1, CP4} можно преобразовать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии со следующей формулой (16) или (17):[0236] {CP1, CP4} can be converted to {CP1, CP2} or {CP1, CP2, CP3} according to the following formula (16) or (17):

Figure 00000033
(16)
Figure 00000033
(16)

Figure 00000034
(17)
Figure 00000034
(17)

[0237] {CP2, CP4} можно преобразовать в {CP1, CP2} в соответствии со следующей формулой (18), а {CP2, CP4} можно преобразовать в {CP1, CP2, CP3} в соответствии со следующими формулами (18) и (19):[0237] {CP2, CP4} can be converted to {CP1, CP2} according to the following formula (18), and {CP2, CP4} can be converted to {CP1, CP2, CP3} according to the following formulas (18) and (19):

Figure 00000035
(18)
Figure 00000035
(eighteen)

Figure 00000036
(19)
Figure 00000036
(19)

[0238] {CP3, CP4} можно преобразовать в {CP1, CP2} в соответствии со следующей формулой (20), а {CP3, CP4} можно преобразовать в {CP1, CP2, CP3} в соответствии со следующими формулами (20) и (21):[0238] {CP3, CP4} can be converted to {CP1, CP2} according to the following formula (20), and {CP3, CP4} can be converted to {CP1, CP2, CP3} according to the following formulas (20) and (21):

Figure 00000037
(20)
Figure 00000037
(twenty)

Figure 00000038
(21)
Figure 00000038
(21)

[0239] Например, 6-параметрическая аффинная модель движения, полученная через комбинацию {CP1, CP2, CP4}, {CP2, CP3, CP4} или {CP1, CP3, CP4}, преобразуется в представление посредством {CP1, CP2, CP3}. Метод преобразования: подставляют вектор движения и информацию о координатах контрольной точки в формулу (4), чтобы получить параметр модели, а затем подставляют информацию о координатах {CP1, CP2, CP3} в формулу (5), чтобы получить вектор движения.[0239] For example, a 6-parameter affine motion model obtained through a combination of {CP1, CP2, CP4}, {CP2, CP3, CP4}, or {CP1, CP3, CP4} is converted to a representation by {CP1, CP2, CP3} . Transformation method: Substitute the motion vector and control point coordinate information into formula (4) to obtain the model parameter, and then substitute {CP1, CP2, CP3} coordinate information into formula (5) to obtain the motion vector.

[0240] Более конкретно, преобразование может быть выполнено согласно следующим формулам (22)-(24), где W указывает ширину текущего блока, а H указывает высоту текущего блока. В формулах (13)-(21) (vx0, vy0) указывает вектор движения CP1, (vx1, vy1) указывает вектор движения CP2, (vx2, vy2) указывает вектор движения CP3, а (vx3, vy3) указывает вектор движения CP4. [0240] More specifically, the transformation can be performed according to the following formulas (22)-(24), where W indicates the width of the current block, and H indicates the height of the current block. In formulas (13)-(21), (vx 0 , vy 0 ) indicates the motion vector CP1, (vx 1 , vy 1 ) indicates the motion vector CP2, (vx 2 , vy 2 ) indicates the motion vector CP3, and (vx 3 , vy 3 ) indicates the motion vector of CP4.

[0241] {CP1, CP2, CP4} могут быть преобразованы в {CP1, CP2, CP3} по следующей формуле (22):[0241] {CP1, CP2, CP4} can be converted to {CP1, CP2, CP3} by the following formula (22):

Figure 00000039
(22)
Figure 00000039
(22)

[0242] {CP2, CP3, CP4} могут быть преобразованы в {CP1, CP2, CP3} по следующей формуле (23):[0242] {CP2, CP3, CP4} can be converted to {CP1, CP2, CP3} by the following formula (23):

Figure 00000040
(23)
Figure 00000040
(23)

[0243] {CP1, CP3, CP4} могут быть преобразованы в {CP1, CP2, CP3} по следующей формуле (24):[0243] {CP1, CP3, CP4} can be converted to {CP1, CP2, CP3} by the following formula (24):

Figure 00000041
(24)
Figure 00000041
(24)

[0244] 6. Усовершенствованный режим предсказания вектора движения на основе аффинной модели движения (Affine AMVP mode)[0244] 6. Advanced motion vector prediction mode based on affine motion model (Affine AMVP mode)

[0245] (1) Создание списка потенциально подходящих векторов движения[0245] (1) Creating a list of potentially suitable motion vectors

[0246] Список потенциально подходящих векторов движения для режима AMVP на основе аффинной модели движения строится с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки. В этом варианте осуществления настоящей заявки список потенциально подходящих векторов движения для режима AMVP, основывающегося на аффинной модели движения, может упоминаться как список потенциально подходящих предикторов вектора движения контрольной точки (control point motion vectors predictor candidate list). Предиктор вектора движения для каждой контрольной точки включает в себя векторы движения двух (4-параметрическая аффинная модель движения) контрольных точек или векторы движения трех (6-параметрическая аффинная модель движения) контрольных точек.[0246] A list of potentially suitable motion vectors for the affine motion model based AMVP mode is constructed using the adopted checkpoint motion vector prediction method and/or the derived checkpoint motion vector prediction method. In this embodiment of the present application, the list of potentially candidate motion vectors for the affine motion model based AMVP mode may be referred to as the list of potentially candidate motion vector predictors of the control point (control point motion vectors predictor candidate list). The motion vector predictor for each control point includes the motion vectors of two (4-parameter affine motion model) control points or the motion vectors of three (6-parameter affine motion model) control points.

[0247] В необязательном порядке, список потенциально подходящих предикторов вектора движения контрольной точки сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.[0247] Optionally, the list of potentially suitable checkpoint motion vector predictors is reduced and sorted according to a specific rule, and may be truncated or padded to a certain number.

[0248] (2) Определение оптимального предиктора вектора движения контрольной точки.[0248] (2) Determining the optimal motion vector predictor of the reference point.

[0249] На стороне кодера вектор движения каждой дочерней единицы компенсации движения в текущем блоке кодирования получается на основе каждого предиктора вектора движения контрольной точки в списке потенциально подходящих предикторов вектора движения контрольной точки с использованием формулы (3)/(5), с тем чтобы получить значение выборки в соответствующей позиции в опорном кадре, на которую указывает вектор движения каждой дочерней единицы движения компенсации, и это значение выборки используется в качестве предиктора для выполнения компенсации движения посредством использования аффинной модели движения. Вычисляют среднюю разность между исходным значением и предиктором каждой выборки в текущем блоке кодирования. Предиктор вектора движения контрольной точки, соответствующий минимальной средней разности, выбирается в качестве оптимального предиктора вектора движения контрольной точки и используется в качестве предиктора вектора движения двух/трех контрольных точек текущего блока кодирования. Номер индекса, представляющий позицию предиктора вектора движения контрольной точки в списке потенциально подходящих предикторов вектора движения контрольной точки, кодируется в поток битов и отправляется в декодер.[0249] At the encoder side, the motion vector of each child motion compensation unit in the current coding block is obtained based on each checkpoint motion vector predictor in the list of potentially suitable checkpoint motion vector predictors using formula (3)/(5), so as to obtain a sample value at a corresponding position in the reference frame pointed to by the motion vector of each child compensation motion unit, and this sample value is used as a predictor to perform motion compensation by using the affine motion model. Calculate the average difference between the original value and the predictor of each sample in the current coding block. The checkpoint motion vector predictor corresponding to the minimum average difference is selected as the optimal checkpoint motion vector predictor and used as the two/three breakpoint motion vector predictor of the current coding block. An index number representing the position of the checkpoint motion vector predictor in the list of potentially suitable checkpoint motion vector predictors is encoded into the bitstream and sent to the decoder.

[0250] На стороне декодера получают номер индекса посредством синтаксического анализа, и предиктор вектора движения контрольной точки (control point motion vector predictor, CPMVP) определяют из списка потенциально подходящих предикторов вектора движения контрольной точки на основе номера индекса.[0250] At the decoder side, an index number is obtained through parsing, and a control point motion vector predictor (CPMVP) is determined from a list of potentially suitable control point motion vector predictors based on the index number.

[0251] (3) Определение вектора движения контрольной точки[0251] (3) Determination of motion vector of reference point

[0252] На стороне кодера предиктор вектора движения контрольной точки используется в качестве начальной точки поиска для поиска движения в пределах конкретного диапазона поиска, чтобы получить вектор движения контрольной точки (control point motion vector, CPMV). Разность (control point motion vector difference, CPMVD) между вектором движения контрольной точки и предиктором вектора движения контрольной точки передается на сторону декодера.[0252] At the encoder side, the control point motion vector predictor is used as a search starting point to search for motion within a specific search range to obtain a control point motion vector (CPMV). The difference (control point motion vector difference, CPMVD) between the control point motion vector and the control point motion vector predictor is transmitted to the decoder side.

[0253] На стороне декодера получают разность векторов движения контрольной точки посредством синтаксического анализа и добавляют к предиктору вектора движения контрольной точки, чтобы получить вектор движения контрольной точки.[0253] At the decoder side, a checkpoint motion vector difference is obtained by parsing, and added to the checkpoint motion vector predictor to obtain a checkpoint motion vector.

[0254] 7. Режим аффинного слияния (Affine Merge mode)[0254] 7. Affine Merge mode

[0255] Список кандидатов на слияние для вектора движения контрольной точки (control point motion vectors merge candidate list) строится с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки.[0255] The control point motion vectors merge candidate list is constructed using the adopted control point motion vector prediction method and/or the built control point motion vector prediction method.

[0256] В необязательном порядке, список кандидатов на слияние для вектора движения контрольной точки сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.[0256] Optionally, the checkpoint's motion vector merge candidate list is reduced and sorted according to a particular rule, and may be truncated or padded to a certain number.

[0257] На стороне кодера вектор движения каждой дочерней единицы компенсации движения (выборка или блок выборок

Figure 00000042
, полученный посредством разбиения согласно конкретному методу) в текущем блоке кодирования получается на основе каждого вектора движения контрольной точки в списке кандидатов на слияние, используя формулу (3)/(5), с тем чтобы получить значение выборки в позиции в опорном кадре, на которую указывает вектор движения каждой дочерней единицы компенсации движения, и это значение выборки используется в качестве предиктора для выполнения аффинной компенсации движения. Вычисляется средняя разность между исходным значением и предиктором каждой выборки в текущем блоке кодирования. Вектор движения контрольной точки, соответствующий минимальной средней разности, выбирается в качестве векторов движения двух/трех контрольных точек текущего блока кодирования. Номер индекса, представляющий позицию вектора движения контрольной точки в списке кандидатов, кодируется в поток битов и отправляется в декодер.[0257] On the encoder side, the motion vector of each child motion compensation unit (sample or block of samples
Figure 00000042
, obtained by splitting according to a particular method) in the current coding block is obtained based on each motion vector of the reference point in the merge candidate list, using formula (3)/(5), so as to obtain a sample value at a position in the reference frame at which indicates the motion vector of each child motion compensation unit, and this sample value is used as a predictor to perform affine motion compensation. The average difference between the original value and the predictor of each sample in the current coding block is calculated. The breakpoint motion vector corresponding to the minimum average difference is selected as the motion vectors of the two/three breakpoints of the current coding block. An index number representing the motion vector position of the checkpoint in the candidate list is encoded into a bitstream and sent to the decoder.

[0258] На стороне декодера получают номер индекса посредством синтаксического анализа, и вектор движения контрольной точки (control point motion vector, CPMV) определяют из списка кандидатов на слияние для вектора движения контрольной точки на основе номера индекса.[0258] At the decoder side, an index number is obtained through parsing, and a control point motion vector (CPMV) is determined from a list of merge candidates for the control point motion vector based on the index number.

[0259] Кроме того, следует отметить, что в этой заявке «по меньшей мере один» означает один или более, а «множество» означает два или более. Термин «и/или» описывает отношения ассоциации для описания связанных объектов и указывает, что могут существовать три отношения. Например, A и/или B могут представлять следующие случаи: существует только A, существуют как A, так и B, и существует только B, причем A и B могут быть в единственном или множественном числе. Символ «/» обычно указывает связь «или» между связанными объектами. «По меньшей мере один из следующих объектов (частей)» или подобное выражение указывает любую комбинацию этих объектов, включая одиночный объект (часть) или любую комбинацию множества объектов (частей). Например, по меньшей мере один из a, b и c может обозначать: a, b, c, a и b, a и c, b и c, либо a, b и c, где a, b и c могут быть в единственном или множественном числе.[0259] In addition, it should be noted that in this application, "at least one" means one or more, and "many" means two or more. The term "and/or" describes association relationships for describing related objects and indicates that three relationships can exist. For example, A and/or B may represent the following cases: only A exists, both A and B exist, and only B exists, where A and B can be singular or plural. The "/" character usually indicates an "or" relationship between related entities. "At least one of the following objects (parts)" or a similar expression indicates any combination of these objects, including a single object (part) or any combination of multiple objects (parts). For example, at least one of a, b, and c may be: a, b, c, a and b, a and c, b and c, or a, b and c, where a, b and c can be in a single or plural.

[0260] В настоящей заявке, когда режим внешнего предсказания используется для декодирования текущего блока, элемент синтаксиса может использоваться для сигнализирования режима внешнего предсказания.[0260] In the present application, when the inter prediction mode is used to decode the current block, a syntax element may be used to signal the inter prediction mode.

[0261] Для некоторых используемых в настоящее время синтаксических структур режима внешнего предсказания, используемых для синтаксического анализа текущего блока, следует обратиться к Таблице 1. Следует отметить, что элемент синтаксиса в синтаксической структуре альтернативно может быть представлен другими идентификаторами. В данной заявке это особым образом не ограничено.[0261] For some currently used inter-prediction mode syntax structures used to parse the current block, refer to Table 1. It should be noted that a syntax element in a syntax structure may alternatively be represented by other identifiers. In this application, this is not particularly limited.

Таблица 1.Table 1.

coding_unit(x0, y0, cb Width, cb Height) {coding_unit(x0, y0, cb Width, cb Height) { Дескриптор
(Descriptor)
Descriptor
(Descriptor)
merge_flag[x0][y0] merge_flag[x0][y0] ае(v)ae(v) if (merge_flag[x0][y0]) { if (merge_flag[x0][y0]) { if (allowAffineMerge) if (allowAffineMerge) affine_merge_flag[x0][y0] affine_merge_flag[x0][y0] ае(v)ae(v) if (MaxNumMergeCand > 1 && affine_merge_flag[x0][y0] == 0) if (MaxNumMergeCand > 1 && affine_merge_flag[x0][y0] == 0) merge_idx[x0][y0] merge_idx[x0][y0] ае(v)ae(v) if (MaxNumAffineMergeCand > 1 && affine_merge_flag[x0][y0]) if (MaxNumAffineMergeCand > 1 && affine_merge_flag[x0][y0]) affine_merge_idx[x0][y0] affine_merge_idx[x0][y0] ае(v)ae(v) } else { } else { if (slice_type == B) if (slice_type == B) inter_pred_idc[x0][y0] inter_pred_idc[x0][y0] ае(v)ae(v) if (allowAffineInter) { if (allowAffineInter) { affine_inter_flag[x0][y0] affine_inter_flag[x0][y0] ае(v)ae(v) if (affine_inter_flag[x0][y0]) if (affine_inter_flag[x0][y0]) affine_type_flag[x0][y0] affine_type_flag[x0][y0] ае(v)ae(v) } } MotionModelIdc[x0][y0] = affine_inter_flag[x0][y0]
+ affine_type_flag[x0][y0]
MotionModelIdc[x0][y0] = affine_inter_flag[x0][y0]
+affine_type_flag[x0][y0]
if (inter_pred_idc[x0][y0] != PRED_L1) { if (inter_pred_idc[x0][y0] != PRED_L1) { if (num_ref_idx_l0_active_minus1>0) if (num_ref_idx_l0_active_minus1>0) ref_idx_l0[x0][y0] ref_idx_l0[x0][y0] ае(v)ae(v) mvd_coding(x0,y0,0,0) mvd_coding(x0,y0,0,0) if (MotionModelIdc[x0][y0]>0) { if (MotionModelIdc[x0][y0]>0) { mvd_coding(x0,y0,0,1) mvd_coding(x0,y0,0,1) if (MotionModelIdc[x0][y0]>1) if (MotionModelIdc[x0][y0]>1) mvd_coding (x0,y0,0,2) mvd_coding(x0,y0,0,2) } } mvp_l0_flag[x0][y0] mvp_l0_flag[x0][y0] ае(v)ae(v) } } if (inter_pred_idc [x0][y0] != PRED_L0) { if (inter_pred_idc [x0][y0] != PRED_L0) { if (num_ref_idx_l1_active_minus1 > 0) if (num_ref_idx_l1_active_minus1 > 0) ref_idx_l1 [x0][y0] ref_idx_l1[x0][y0] ае (v)ae (v) mvd_coding (x0,y0,1,0) mvd_coding(x0,y0,1,0) if (MotionModelIdc [x0][y0] > 0) { if (MotionModelIdc [x0][y0] > 0) { mvd_coding (x0,y0,1,1) mvd_coding(x0,y0,1,1) if (MotionModelIdc [x0][y0] > 1) if (MotionModelIdc [x0][y0] > 1) mvd_coding (x0,y0,1,2) mvd_coding(x0,y0,1,2) } } mvp_l1_flag[x0][y0] mvp_l1_flag[x0][y0] ае(v)ae(v) } } } } }}

[0262] Элемент синтаксиса merge_flag[x0][y0] может использоваться для указания того, используется ли режим слияния для текущего блока. Например, когда merge_flag[x0][y0] = 1, это указывает, что режим слияния используется для текущего блока, а когда merge_flag [x0][y0] = 0, это указывает, что режим слияния не используется для текущего блока, где x0 и y0 указывают координаты текущего блока в видеоизображении.[0262] The syntax element merge_flag[x0][y0] can be used to indicate whether the merge mode is used for the current block. For example, when merge_flag[x0][y0] = 1, it indicates that the merge mode is used for the current block, and when merge_flag [x0][y0] = 0, it indicates that the merge mode is not used for the current block, where x0 and y0 indicate the coordinates of the current block in the video image.

[0263] Переменная allowAffineMerge может использоваться для указания того, соответствует ли текущий блок условию для использования режима слияния на основе аффинной модели движения. Например, когда allowAffineInter=0, это указывает, что условие для использования режима слияния на основе аффинной модели движения не выполняется, а когда allowAffineInter=1, это указывает, что условие для использования режима слияния на основе аффинной модели движения выполняется. Условием использования режима слияния на основе аффинной модели движения может быть то, что и ширина, и высота текущего блока больше или равны 8, где cbWidth указывает ширину текущего блока, а cbHeight указывает высоту текущего блока. Другими словами, когда cbWidth < 8 или cbHeight < 8, allowAffineMerge = 0, а когда cbWidth ≥ 8 и cbHeight ≥ 8, allowAffineMerge = 1.[0263] The variable allowAffineMerge can be used to indicate whether the current block meets the condition for using the merge mode based on the affine motion model. For example, when allowAffineInter=0, it indicates that the condition for using the affine motion model-based merge mode is not met, and when allowAffineInter=1, it indicates that the condition for using the affine motion-based merge mode is met. A condition for using affine motion merge mode can be that both the width and height of the current box are greater than or equal to 8, where cbWidth specifies the width of the current box and cbHeight specifies the height of the current box. In other words, when cbWidth < 8 or cbHeight < 8, allowAffineMerge = 0, and when cbWidth ≥ 8 and cbHeight ≥ 8, allowAffineMerge = 1.

[0264] Переменная allowAffineInter может использоваться для указания того, соответствует ли текущий блок условию для использования режима AMVP на основе аффинной модели движения. Например, когда allowAffineInter = 0, это указывает, что условие для использования режима AMVP на основе аффинной модели движения не выполняется, а когда allowAffineInter = 1, это указывает, что условие для использования режима AMVP на основе аффинной модели движения выполняется. Условием для использования режима AMVP на основе аффинной модели движения может быть то, что ширина и высота текущего блока больше или равны 16. Другими словами, когда cbWidth < 16 или cbHeight < 16, allowAffineInter = 0, а когда cbWidth ≥ 16 и cbHeight ≥ 16, allowAffineInter = 1.[0264] The allowAffineInter variable may be used to indicate whether the current block meets the condition for using the affine motion model based AMVP mode. For example, when allowAffineInter = 0, it indicates that the condition for using the affine motion model based AMVP mode is not met, and when allowAffineInter = 1, it indicates that the condition for using the affine motion model based AMVP mode is met. A condition for using affine motion AMVP mode can be that the width and height of the current block is greater than or equal to 16. In other words, when cbWidth < 16 or cbHeight < 16, allowAffineInter = 0, and when cbWidth ≥ 16 and cbHeight ≥ 16 , allowAffineInter = 1.

[0265] Элемент синтаксиса affine_merge_flag[x0][y0] может использоваться для указания того, используется ли для текущего блока режим слияния на основе аффинной модели движения. Тип среза (slice_type), в котором находится текущий блок, является P-типом или B-типом. Например, когда affine_merge_flag[x0][y0] = 1, это указывает, что режим слияния на основе аффинной модели движения используется для текущего блока, а когда affine_merge_flag [x0][y0] = 0, это указывает, что режим слияния на основе аффинной модели движение не используется для текущего блока, но может использоваться режим слияния на основе модели поступательного движения.[0265] The affine_merge_flag[x0][y0] syntax element may be used to indicate whether the current block is in affine motion model-based merge mode. The slice type (slice_type) in which the current block resides is a P-type or a B-type. For example, when affine_merge_flag[x0][y0] = 1, this indicates that the affine motion model-based merge mode is used for the current block, and when affine_merge_flag [x0][y0] = 0, it indicates that the affine motion-based merge mode motion model is not used for the current block, but merge mode based on translational motion model can be used.

[0266] Элемент синтаксиса merge_idx[x0][y0] может использоваться для указания значения индекса списка кандидатов на слияние.[0266] The merge_idx[x0][y0] syntax element may be used to specify the index value of the merge candidate list.

[0267] Элемент синтаксиса affine_merge_idx[x0][y0] может использоваться для указания значения индекса списка кандидатов на аффинное слияние.[0267] The affine_merge_idx[x0][y0] syntax element can be used to specify an index value of an affine merge candidate list.

[0268] Элемент синтаксиса affine_inter_flag[x0][y0] может использоваться для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа. Например, когда allowAffineInter=0, это указывает, что режим AMVP на основе аффинной модели движения используется для текущего блока, а когда allowAffineInter=1, это указывает, что режим AMVP на основе аффинной модели движения не используется для текущего блока, но можно использовать режим AMVP на основе модели поступательного движения.[0268] The affine_inter_flag[x0][y0] syntax element may be used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice . For example, when allowAffineInter=0, this indicates that the affine motion model based AMVP mode is used for the current block, and when allowAffineInter=1, it indicates that the affine motion model based AMVP mode is not used for the current block, but the mode can be used AMVP based on translational motion model.

[0269] Элемент синтаксиса affine_type_flag[x0][y0] может использоваться для указания того, используется ли 6-параметрическая аффинная модель движения для выполнения компенсации движения в отношении текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа. Когда affine_type_flag[x0][y0]=0, это указывает, что 6-параметрическая аффинная модель движения не используется для выполнения компенсации движения в отношении текущего блока, но только 4-параметрическая аффинная модель движения может использоваться для выполнения компенсации движения, и когда affine_type_flag[x0][y0]=1, это указывает, что 6-параметрическая аффинная модель движения используется для выполнения компенсации движения в отношении текущего блока.[0269] The affine_type_flag[x0][y0] syntax element may be used to indicate whether a 6-parameter affine motion model is used to perform motion compensation on the current block when the slice in which the current block is located is a P-type slice or cut B-type. When affine_type_flag[x0][y0]=0, it indicates that the 6-parameter affine motion model is not used to perform motion compensation on the current block, but only the 4-parameter affine motion model can be used to perform motion compensation, and when affine_type_flag [x0][y0]=1, this indicates that the 6-parameter affine motion model is used to perform motion compensation on the current block.

[0270] Как показано в Таблице 2, когда MotionModelIdc[x0][y0]=1, это указывает, что используется 4-параметрическая аффинная модель движения, когда MotionModelIdc[x0][y0]=2, это указывает, что используется 6-параметрическая аффинная модель движения, и когда MotionModelIdc[x0][y0]=0, это указывает, что используется модель поступательного движения.[0270] As shown in Table 2, when MotionModelIdc[x0][y0]=1, this indicates that a 4-parameter affine motion model is used, when MotionModelIdc[x0][y0]=2, this indicates that a 6- a parametric affine motion model, and when MotionModelIdc[x0][y0]=0, this indicates that a translational motion model is being used.

Таблица 2.Table 2.

MotionModelIdc [x0][y0]MotionModelIdc[x0][y0] Модель движения для компенсации движения (motion model for motion compensation)Motion model for motion compensation 00 Поступательное движение (translational motion)translational motion 1one 4-параметрическая аффинная модель движения (4-parameter affine motion)4-parameter affine motion model 22 6-параметрическая аффинная модель движения (6-parameter affine motion)6-parameter affine motion model

[0271] Переменные MaxNumMergeCand и MaxAffineNumMrgCand используются для указания максимальной длины списка и указания максимальной длины построенного списка потенциально подходящих векторов движения; inter_pred_idc[x0][y0] используется для указания направления предсказания; PRED_L1 используется для указания обратного предсказания; num_ref_idx_l0_active_minus1 указывает количество опорных кадров в списке опорных кадров в прямом направлении и ref_idx_l0[х0][у0] указывает значение индекса опорного кадра в прямом направлении для текущего блока; mvd_coding(x0,y0,0,0) указывает первую разность векторов движения; mvp_l0_flag[x0][y0] указывает значение индекса списка потенциально подходящих MVP в прямом направлении; PRED_L0 указывает предсказание в прямом направлении; num_ref_idx_l1_active_minus1 указывает количество опорных кадров в списке опорных кадров в обратном направлении, а ref_idx_l1[x0][y0] указывает значение индекса опорных кадров в обратном направлении для текущего блока; и mvp_l1_flag[x0][y0] указывает значение индекса списка кандидатов MVP в обратном направлении.[0271] The variables MaxNumMergeCand and MaxAffineNumMrgCand are used to indicate the maximum length of the list and indicate the maximum length of the constructed list of potentially suitable motion vectors; inter_pred_idc[x0][y0] is used to indicate the direction of prediction; PRED_L1 is used to indicate backward prediction; num_ref_idx_l0_active_minus1 indicates the number of reference frames in the forward reference frame list, and ref_idx_l0[x0][y0] indicates the index value of the forward reference frame for the current block; mvd_coding(x0,y0,0,0) indicates the first motion vector difference; mvp_l0_flag[x0][y0] specifies the index value of the list of potentially eligible MVPs in the forward direction; PRED_L0 indicates forward prediction; num_ref_idx_l1_active_minus1 indicates the number of reference frames in the reverse reference frame list, and ref_idx_l1[x0][y0] indicates the reverse reference frame index value for the current block; and mvp_l1_flag[x0][y0] indicates the index value of the MVP candidate list backwards.

[0272] В Таблице 1 ae(v) указывает элемент синтаксиса, закодированный с помощью контекстно-зависимого адаптивного двоичного арифметического кодирования (context-based adaptive binary arithmetic coding, CABAC).[0272] In Table 1, ae(v) indicates a syntax element encoded with context-based adaptive binary arithmetic coding (CABAC).

[0273] Далее подробно описывается процесс внешнего предсказания. Для этого следует обратиться к Фиг.9А.[0273] Next, the inter prediction process will be described in detail. To do this, refer to Fig.9A.

[0274] Этап 601: Выполняют синтаксический анализ потока битов на основе синтаксической структуры, показанной в Таблице 1, чтобы определить режим внешнего предсказания для текущего блока.[0274] Step 601: Parse the bit stream based on the syntax structure shown in Table 1 to determine the inter prediction mode for the current block.

[0275] Если определено, что режимом внешнего предсказания для текущего блока является режим AMVP на основе аффинной модели движения, должен быть выполнен этап 602a.[0275] If it is determined that the inter prediction mode for the current block is the affine motion model based AMVP mode, step 602a must be performed.

[0276] Более конкретно, когда элемент синтаксиса merge_flag=0 и элемент синтаксиса affine_inter_flag=1, это указывает, что режим внешнего предсказания для текущего блока является режимом AMVP на основе аффинной модели движения.[0276] More specifically, when the syntax element merge_flag=0 and the syntax element affine_inter_flag=1, it indicates that the inter prediction mode for the current block is the affine motion model based AMVP mode.

[0277] Если определено, что режимом внешнего предсказания для текущего блока является режим слияния (merge) на основе аффинной модели движения, должен быть выполнен этап 602b.[0277] If it is determined that the inter prediction mode for the current block is the merge mode based on the affine motion model, step 602b must be performed.

[0278] Более конкретно, когда элемент синтаксиса merge_flag=1 и элемент синтаксиса affine_merge_flag=1, это указывает, что режим внешнего предсказания для текущего блока является режимом слияния на основе аффинной модели движения.[0278] More specifically, when the syntax element merge_flag=1 and the syntax element affine_merge_flag=1, it indicates that the inter prediction mode for the current block is the affine motion model-based merge mode.

[0279] Этап 602a: Строят список потенциально подходящих векторов движения, соответствующий режиму AMVP на основе аффинной модели движения, и выполняют этап 603a.[0279] Step 602a: A list of potentially suitable motion vectors corresponding to the AMVP mode based on the affine motion model is built, and step 603a is performed.

[0280] Потенциально подходящий вектор движения контрольной точки текущего блока получают с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки и добавляют в список потенциально подходящих векторов движения.[0280] A potentially suitable checkpoint motion vector of the current block is obtained using the adopted checkpoint motion vector prediction method and/or the built checkpoint motion vector prediction method and added to the list of potentially suitable motion vectors.

[0281] Список потенциально подходящих векторов движения может включать в себя список двухэлементных кортежей (4-параметрическая аффинная модель движения используется для текущего блока кодирования) или список трехэлементных кортежей. Список двухэлементных кортежей включает в себя один или более двухэлементных кортежей, используемых для построения 4-параметрической аффинной модели движения. Список трехэлементных кортежей включает в себя один или более трехэлементных кортежей, используемых для построения 6-параметрической аффинной модели движения.[0281] The list of potentially suitable motion vectors may include a list of two-tuples (a 4-parameter affine motion model is used for the current coding block) or a list of three-tuples. The list of two-tuples includes one or more two-tuples used to build a 4-parameter affine motion model. The list of 3-tuples includes one or more 3-tuples used to build a 6-parameter affine motion model.

[0282] В необязательном порядке, список из двух-/трех-элементных кортежей потенциально подходящих векторов движения сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.[0282] Optionally, the list of two-/three-element tuples of potentially suitable motion vectors is reduced and sorted according to a particular rule, and may be truncated or padded to a certain number.

[0283] A1: Описывается процесс построения списка потенциально подходящих векторов движения с использованием перенятого метода предсказания вектора движения контрольной точки.[0283] A1: A process for constructing a list of potentially suitable motion vectors using an adopted checkpoint motion vector prediction method is described.

[0284] Фиг.7 используется в качестве примера. Например, соседние блоки вокруг текущего блока проходятся в порядке A1->B1->B0->A0->B2 на Фиг.7, чтобы найти блок аффинного кодирования, в котором расположен соседний блок, и получить информацию о движении контрольной точки блока аффинного кодирования. Кроме того, потенциально подходящая информация о движении контрольной точки текущего блока получается посредством использования модели движения, построенной на основе информации о движении контрольной точки блока аффинного кодирования. На предмет дополнительных сведений следует обратиться к соответствующим описаниям перенятого метода предсказания вектора движения контрольной точки согласно подразделу 3. Подробности здесь не описываются.[0284] Figure 7 is used as an example. For example, neighboring blocks around the current block are traversed in the order A1->B1->B0->A0->B2 in Fig. 7 to find the affine block in which the neighboring block is located and obtain information about the movement of the affine block checkpoint. . In addition, potentially suitable breakpoint motion information of the current block is obtained by using a motion model built based on the checkpoint motion information of the affine coding block. For further details, refer to the respective descriptions of the adopted reference point motion vector prediction method according to clause 3. Details are not described here.

[0285] Например, когда аффинной моделью движения, используемой для текущего блока, является 4-параметрическая аффинная модель движения (то есть MotionModelIdc=1), если 4-параметрическая аффинная модель движения используется для соседнего блока аффинного декодирования, получаются векторы движения двух контрольных точек блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5). Блок аффинного декодирования - это блок аффинного кодирования, предсказанный на стадии кодирования с использованием аффинной модели движения.[0285] For example, when the affine motion model used for the current block is a 4-parameter affine motion model (that is, MotionModelIdc=1), if a 4-parameter affine motion model is used for an adjacent affine decoding block, motion vectors of two control points are obtained affine decoding block: motion vector (vx4, vy4) of the top left checkpoint (x4, y4) and motion vector (vx5, vy5) of the top right checkpoint (x5, y5). An affine decoding block is an affine encoding block predicted at the encoding stage using an affine motion model.

[0286] Векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока соответственно получаются в соответствии с формулами (6) и (7), соответствующими 4-параметрической аффинной модели движения, с использованием 4-параметрической аффинной модели движения, включающей в себя две контрольные точки соседнего блока аффинного декодирования.[0286] The motion vectors of the upper left control point and the upper right control point of the current block are respectively obtained in accordance with formulas (6) and (7) corresponding to the 4-parameter affine motion model using the 4-parameter affine motion model including two breakpoints of an adjacent affine decoding block.

[0287] Если для соседнего блока аффинного декодирования используется 6-параметрическая аффинная модель движения, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например, вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5) и вектор движения (vx6, vy6) нижней левой контрольной точки (x6, y6) на Фиг.7.[0287] If a 6-parameter affine motion model is used for an adjacent affine decoding block, the motion vectors of the three control points of the adjacent affine decoding block are obtained, for example, the motion vector (vx4, vy4) of the upper left control point (x4, y4), the motion vector ( vx5, vy5) of the upper right control point (x5, y5) and motion vector (vx6, vy6) of the lower left control point (x6, y6) in Fig.7.

[0288] Векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока соответственно получаются в соответствии с формулами (8) и (9), соответствующими 6-параметрической аффинной модели движения, посредством использования 6-параметрической аффинной модели движения, включающей в себя три контрольные точки соседнего блока аффинного декодирования.[0288] The motion vectors of the upper left control point and the upper right control point of the current block are respectively obtained in accordance with formulas (8) and (9) corresponding to the 6-parameter affine motion model by using the 6-parameter affine motion model including three checkpoints of a neighboring affine decoding block.

[0289] Например, аффинной моделью движения, используемой для текущего блока декодирования, является 6-параметрическая аффинная модель движения (то есть MotionModelIdc=2).[0289] For example, the affine motion model used for the current decoding block is a 6-parameter affine motion model (ie, MotionModelIdc=2).

[0290] Если аффинной моделью движения, используемой для соседнего блока аффинного декодирования, является 6-параметрическая аффинная модель движения, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например, вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки и вектор движения (vx6, vy6) нижней левой контрольной точки (x6, y6) на Фиг.7.[0290] If the affine motion model used for the neighboring affine decoding block is a 6-parameter affine motion model, the motion vectors of the three control points of the adjacent affine decoding block are obtained, for example, the motion vector (vx4, vy4) of the upper left control point (x4, y4), the motion vector (vx5, vy5) of the top right breakpoint, and the motion vector (vx6, vy6) of the bottom left breakpoint (x6, y6) in FIG.

[0291] Векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока соответственно получаются в соответствии с формулами (8), (9) и (10), соответствующими 6-параметрической аффинной модели движения, посредством использования 6-параметрической аффинной модели движения, включающей в себя три контрольные точки соседнего блока аффинного декодирования.[0291] The motion vectors of the upper left control point, the upper right control point, and the lower left control point of the current block are respectively obtained in accordance with formulas (8), (9) and (10) corresponding to the 6-parameter affine motion model by using 6 -parametric affine motion model, which includes three checkpoints of the adjacent block of affine decoding.

[0292] Если аффинной моделью движения, используемой для соседнего блока аффинного декодирования, является 4-параметрическая аффинная модель движения, получают векторы движения двух контрольных точек блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5).[0292] If the affine motion model used for the neighboring affine decoding block is a 4-parameter affine motion model, the motion vectors of the two control points of the affine decoding block are obtained: the motion vector (vx4, vy4) of the upper left control point (x4, y4) and the motion vector (vx5, vy5) of the upper right control point (x5, y5).

[0293] Векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока соответственно получаются согласно формулам (6) и (7), соответствующим 4-параметрической аффинной модели движения, посредством использования 4-параметрической аффинной модели движения, включающей в себя две контрольные точки соседнего блока аффинного декодирования.[0293] The motion vectors of the upper left control point, the upper right control point, and the lower left control point of the current block are respectively obtained according to formulas (6) and (7) corresponding to the 4-parameter affine motion model by using the 4-parameter affine motion model, which includes two checkpoints of a neighboring affine decoding block.

[0294] Следует отметить, что к настоящей заявке также применимы другие модели движения, потенциально подходящие позиции и порядки поиска. Подробности здесь не описываются. Следует отметить, что метод, в котором другие контрольные точки используются для представления моделей движения для соседних и текущих блоков кодирования, также применим к настоящей заявке. Подробности здесь не описываются.[0294] It should be noted that other movement patterns, potentially suitable positions and search orders are also applicable to the present application. Details are not described here. It should be noted that the method in which other breakpoints are used to represent motion models for adjacent and current coding blocks is also applicable to the present application. Details are not described here.

[0295] A2: Описан процесс построения списка потенциально подходящих векторов движения с использованием перенятого метода предсказания вектора движения контрольной точки.[0295] A2: A process for constructing a list of potentially suitable motion vectors using an adopted checkpoint motion vector prediction method is described.

[0296] Например, если аффинной моделью движения, используемой для текущего блока декодирования, является 4-параметрическая аффинная модель движения (то есть MotionModelIdc=1), векторы движения верхней левой выборки и верхней правой выборки текущего блока кодирования определяются с использованием информации о движении соседнего кодированного блока текущего блока кодирования. В частности, список потенциально подходящих векторов движения может быть построен с использованием перенятого метода 1 предсказания вектора движения контрольной точки или построенного метода 2 предсказания вектора движения контрольной точки. На предмет конкретного способа следует обратиться к описаниям согласно подразделам 4 и 5. Подробности здесь не описываются.[0296] For example, if the affine motion model used for the current decoding block is a 4-parameter affine motion model (i.e., MotionModelIdc=1), the motion vectors of the top left sample and top right sample of the current coding block are determined using motion information of the adjacent encoded block of the current encoding block. In particular, the list of potentially suitable motion vectors can be constructed using the adopted checkpoint motion vector prediction method 1 or the derived checkpoint motion vector prediction method 2. For a particular method, reference should be made to the descriptions under subsections 4 and 5. Details are not described here.

[0297] Например, если аффинной моделью движения, используемой для текущего блока декодирования, является 6-параметрическая аффинная модель движения (то есть MotionModelIdc=2), векторы движения верхней левой выборки, верхней правой выборки и нижней левой выборки текущего блока кодирования определяются с использованием информации движения соседнего закодированного блока текущего блока кодирования. В частности, список потенциально подходящих векторов движения может быть построен с использованием перенятого метода 1 предсказания вектора движения контрольной точки или построенного метода 2 предсказания вектора движения контрольной точки. На предмет конкретного способа следует обратиться к описаниям согласно подразделам 4 и 5. Подробности здесь не описываются.[0297] For example, if the affine motion model used for the current decoding block is a 6-parameter affine motion model (i.e., MotionModelIdc=2), the motion vectors of the top left sample, top right sample, and bottom left sample of the current coding block are determined using motion information of an adjacent encoded block of the current coding block. In particular, the list of potentially suitable motion vectors can be constructed using the adopted checkpoint motion vector prediction method 1 or the derived checkpoint motion vector prediction method 2. For a particular method, reference should be made to the descriptions under subsections 4 and 5. Details are not described here.

[0298] Следует отметить, что другой способ объединения информации о движении контрольной точки также применим к настоящей заявке. Подробности здесь не описаны.[0298] It should be noted that another way of combining checkpoint movement information is also applicable to the present application. Details are not described here.

[0299] Этап 603a: Выполняют синтаксический анализ потока битов для определения оптимального предиктора вектора движения контрольной точки и выполняют этап 604a.[0299] Step 603a: Parse the bitstream to determine the optimal checkpoint motion vector predictor, and perform step 604a.

[0300] B1: Если аффинной моделью движения, используемой для текущего блока декодирования, является 4-параметрическая аффинная модель движения (MotionModelIdc=1), получают номер индекса посредством синтаксического анализа, и оптимальный предиктор вектора движения в двух контрольных точках определяют из списка потенциально подходящих векторов движения на основе номера индекса.[0300] B1: If the affine motion model used for the current decoding block is a 4-parameter affine motion model (MotionModelIdc=1), an index number is obtained by parsing, and the optimal motion vector predictor at two control points is determined from a list of potentially suitable motion vectors based on index number.

[0301] Например, номером индекса является mvp_l0_flag или mvp_l1_flag.[0301] For example, the index number is mvp_l0_flag or mvp_l1_flag.

[0302] B2: Если аффинной моделью движения, используемой для текущего блока декодирования, является 6-параметрическая аффинная модель движения (MotionModelIdc=2), получают номер индекса посредством синтаксического анализа, и оптимальный предиктор вектора движения в трех контрольных точках определяют из списка потенциально подходящих векторов движения на основе номера индекса.[0302] B2: If the affine motion model used for the current decoding block is a 6-parameter affine motion model (MotionModelIdc=2), an index number is obtained by parsing, and the optimal motion vector predictor at the three control points is determined from a list of potentially suitable motion vectors based on index number.

[0303] Этап 604a: Выполнят синтаксический анализ потока битов, чтобы определить вектор движения контрольной точки.[0303] Step 604a: Parse the bitstream to determine the motion vector of the checkpoint.

[0304] C1: Если аффинной моделью движения, используемой для текущего блока декодирования, является 4-параметрическая модель аффинного движения (MotionModelIdc=1), разности векторов движения двух контрольных точек текущего блока получаются из потока битов посредством декодирования, и векторы движения контрольной точки получаются на основе разностей векторов движения и предикторов вектора движения контрольных точек. Используя прямое предсказание в качестве примера, разности векторов движения двух контрольных точек равны mvd_coding(x0,y0,0,0) и mvd_coding(x0,y0,0,1) соответственно.[0304] C1: If the affine motion model used for the current decoding block is a 4-parameter affine motion model (MotionModelIdc=1), the motion vector differences of the two checkpoints of the current block are obtained from the bitstream by decoding, and the motion vectors of the checkpoint are obtained based on motion vector differences and control point motion vector predictors. Using forward prediction as an example, the motion vector differences of two control points are mvd_coding(x0,y0,0,0) and mvd_coding(x0,y0,0,1) respectively.

[0305] Например, разности векторов движения верхней левой контрольной точки и верхней правой контрольной точки получаются из потока битов посредством декодирования и соответственно добавляются к предикторам вектора движения, чтобы получить векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока.[0305] For example, the motion vector differences of the top left breakpoint and the top right breakpoint are obtained from the bitstream by decoding and respectively added to the motion vector predictors to obtain the top left breakpoint and top right breakpoint motion vectors of the current block.

[0306] C2: Аффинная модель движения, используемая для текущего блока декодирования, представляет собой 6-параметрическую аффинную модель движения (MotionModelIdc=2).[0306] C2: The affine motion model used for the current decoding block is a 6-parameter affine motion model (MotionModelIdc=2).

[0307] Разности векторов движения трех контрольных точек текущего блока получаются из потока битов посредством декодирования, и векторы движения контрольных точек получаются на основе разностей векторов движения и предикторов вектора движения контрольных точек. Используя в качестве примера прямое предсказание, разностями векторов движения трех контрольных точек являются mvd_coding(x0,y0,0,0), mvd_coding(x0,y0,0,1) и mvd_coding(x0,y0,0,2), соответственно.[0307] The motion vector differences of the three checkpoints of the current block are obtained from the bit stream by decoding, and the motion vectors of the checkpoints are obtained based on the motion vector differences and motion vector predictors of the checkpoints. Using direct prediction as an example, the motion vector differences of the three control points are mvd_coding(x0,y0,0,0), mvd_coding(x0,y0,0,1), and mvd_coding(x0,y0,0,2), respectively.

[0308] Например, разности векторов движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки получаются из потока битов посредством декодирования и соответственно добавляются к предикторам вектора движения, чтобы получить векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока.[0308] For example, the motion vector differences of the upper left reference point, the upper right reference point, and the lower left reference point are obtained from the bitstream by decoding and respectively added to the motion vector predictors to obtain the motion vectors of the upper left reference point, upper right reference point, and the bottom left control point of the current block.

[0309] Этап 605a: Получают вектор движения каждого подблока в текущем блоке на основе информации о движении контрольной точки и аффинной модели движения, используемой для текущего блока декодирования.[0309] Step 605a: A motion vector of each sub-block in the current block is obtained based on the checkpoint motion information and the affine motion model used for the current decoding block.

[0310] Для каждого подблока в текущем блоке аффинного декодирования (один подблок может быть эквивалентен одной единице компенсации движения, а ширина и высота подблока меньше, чем ширина и высота текущего блока), информация о движении выборки в заранее заданной позиции в единице компенсации движения может использоваться для представления информации о движении всех выборок в единице компенсации движения. Предполагая, что размер единицы компенсации движения равен MxN, выборкой в упомянутой заранее заданной позиции может быть центральная выборка (M/2, N/2), верхняя левая выборка (0, 0), верхняя правая выборка (M-1, 0) или выборка в другой позиции единицы компенсации движения. Ниже в качестве примера для описания используется центральная выборка единицы компенсации движения. Обращаясь к Фиг.9C, V0 указывает вектор движения верхней левой контрольной точки, а V1 указывает вектор движения верхней правой контрольной точки. Каждый маленький квадрат указывает одну единицу компенсации движения.[0310] For each sub-block in the current affine decoding block (one sub-block may be equivalent to one motion compensation unit, and the width and height of the sub-block is less than the width and height of the current block), motion information of the sample at a predetermined position in the motion compensation unit may be used to represent the motion information of all samples in the motion compensation unit. Assuming that the size of the motion compensation unit is MxN, the sample at said predetermined position may be the center sample (M/2, N/2), the top left sample (0, 0), the top right sample (M-1, 0), or fetch at a different position of the motion compensation unit. Below, the central sample of the motion compensation unit is used as an example for description. Referring to Fig.9C, V0 indicates the motion vector of the upper left reference point, and V1 indicates the motion vector of the upper right reference point. Each small square indicates one unit of motion compensation.

[0311] Координаты центральной выборки единицы компенсации движения относительно верхней левой выборки текущего блока аффинного декодирования вычисляются с использованием формулы (25), где i указывает i-ую единицу компенсации движения (слева направо) в горизонтальном направлении, j указывает j-ую единицу компенсации движения (сверху вниз) в вертикальном направлении, а (x(i,j), y(i,j)) указывает координаты центральной выборки (i,j)-ой единицы компенсации движения относительно верхней левой выборки текущего блока аффинного декодирования. [0311] The coordinates of the center sample of the motion compensation unit relative to the upper left sample of the current affine decoding block are calculated using formula (25), where i indicates the i-th motion compensation unit (from left to right) in the horizontal direction, j indicates the j-th motion compensation unit (top to bottom) in the vertical direction, and (x(i,j), y(i,j)) indicates the coordinates of the center sample of the (i,j)th motion compensation unit relative to the top left sample of the current affine decoding block.

[0312] Если аффинная модель движения, используемая для текущего блока аффинного декодирования, представляет собой 6-параметрическую аффинную модель движения, (

Figure 00000043
,
Figure 00000044
) подставляется в формулу (26), соответствующую 6-параметрической аффинной модели движения, чтобы получить вектор движения центральной выборки каждой единицы компенсации движения, и вектор движения центральной выборки используется как вектор движения (
Figure 00000045
) всех выборок в единице компенсации движения.[0312] If the affine motion model used for the current affine decoding block is a 6-parameter affine motion model, (
Figure 00000043
,
Figure 00000044
) is substituted into formula (26) corresponding to the 6-parameter affine motion model to obtain the center sample motion vector of each motion compensation unit, and the center sample motion vector is used as the motion vector (
Figure 00000045
) of all samples in the motion compensation unit.

[0313] Если аффинной моделью движения, используемой для текущего блока аффинного декодирования, является 4-параметрическая аффинная модель движения, (

Figure 00000043
,
Figure 00000044
) подставляется в формулу (27), соответствующую 4-параметрической аффинной модели движения, чтобы получить вектор движения центральной выборки каждой единицы компенсации движения, и вектор движения центральной выборки используется как вектор движения (
Figure 00000045
) всех выборок в единице компенсации движения[0313] If the affine motion model used for the current affine decoding block is a 4-parameter affine motion model, (
Figure 00000043
,
Figure 00000044
) is substituted into formula (27) corresponding to the 4-parameter affine motion model to obtain the center sample motion vector of each motion compensation unit, and the center sample motion vector is used as the motion vector (
Figure 00000045
) of all samples in the motion compensation unit

Figure 00000046
(25)
Figure 00000046
(25)

Figure 00000009
(26)
Figure 00000009
(26)

Figure 00000006
(27)
Figure 00000006
(27)

[0314] Этап 606a: Выполняют компенсацию движения в отношении каждого подблока на основе определенного вектора движения подблока, чтобы получить предиктор выборки подблока.[0314] Step 606a: Motion compensation is performed on each subblock based on the determined subblock motion vector to obtain a subblock sampling predictor.

[0315] Этап 602b: Строят список потенциально подходящей информации о движении, соответствующий режиму слияния на основе аффинной модели движения.[0315] Step 602b: A list of potentially suitable motion information corresponding to the merge mode is built based on the affine motion model.

[0316] В частности, список потенциально подходящей информации о движении, соответствующий режиму слияния на основе аффинной модели движения, может быть построен с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки.[0316] In particular, a list of potentially relevant motion information corresponding to the affine motion model-based merge mode can be constructed using a learned checkpoint motion vector prediction method and/or a derived checkpoint motion vector prediction method.

[0317] В необязательном порядке, список потенциально подходящей информации о движении сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.[0317] Optionally, the list of potentially relevant traffic information is reduced and sorted according to a specific rule, and may be truncated or padded to a certain amount.

[0318] D1: Описывается процесс построения списка потенциально подходящих векторов движения с использованием перенятого метода предсказания вектора движения контрольной точки.[0318] D1: A process for constructing a list of potentially suitable motion vectors using an adopted reference point motion vector prediction method is described.

[0319] Потенциально подходящая информация о движении контрольной точки текущего блока получается с использованием перенятого метода предсказания вектора движения контрольной точки и добавляется в список потенциально подходящей информации о движении.[0319] Potentially suitable checkpoint motion information of the current block is obtained using the adopted checkpoint motion vector prediction method and added to the list of potentially suitable motion information.

[0320] Соседние блоки вокруг текущего блока проходятся в порядке A1->B1->B0->A0->B2 на Фиг.8A, чтобы найти блок аффинного кодирования, в котором расположена позиция, и получить информацию о движении контрольной точки блока аффинного кодирования. Кроме того, потенциально подходящая информация о движении контрольной точки текущего блока получается с использованием модели движения для блока аффинного кодирования.[0320] Adjacent blocks around the current block are traversed in the order A1->B1->B0->A0->B2 in Fig. 8A to find the affine coding block in which the position is located and obtain information about the movement of the affine coding block checkpoint . In addition, potentially relevant information about the movement of the checkpoint of the current block is obtained using the motion model for the affine coding block.

[0321] Если список потенциально подходящих векторов движения пуст, потенциально подходящая информация движения контрольной точки добавляется в список кандидатов. В противном случае информация о движении в списке потенциально подходящих векторов движения проходится последовательно, чтобы проверить, существует ли информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, в списке потенциально подходящих векторов движения. Если в списке потенциально подходящих векторов движения отсутствует информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, потенциально подходящая информация о движении контрольной точки добавляется в список потенциально подходящих векторов движения.[0321] If the list of potentially suitable motion vectors is empty, potentially suitable checkpoint motion information is added to the list of candidates. Otherwise, the motion information in the list of potential candidate motion vectors is sequentially traversed to check if there is motion information that is the same as the potential candidate motion information of the reference point in the list of potential candidate motion vectors. If there is no motion information in the list of potential candidate motion vectors that is the same as the potential candidate motion information of the reference point, the potential candidate motion information of the reference point is added to the list of potential candidate motion vectors.

[0322] Чтобы определить, являются ли две части потенциально подходящей информации о движении одинаковыми, необходимо последовательно определить, являются ли опорные кадры в прямом направлении, опорные кадры в обратном направлении, горизонтальные и вертикальные компоненты каждого вектора движения в прямом направлении, а также горизонтальные и вертикальные компоненты каждого вектора движения в обратном направлении в двух частях потенциально подходящей информации о движении одинаковыми. Две части потенциально подходящей информации о движении считаются разными, только если все вышеперечисленные элементы различны.[0322] In order to determine whether two pieces of potentially relevant motion information are the same, it is necessary to sequentially determine whether the forward reference frames, the reverse reference frames, the horizontal and vertical components of each forward motion vector, and the horizontal and the vertical components of each backward motion vector are the same in the two pieces of potentially relevant motion information. Two pieces of potentially relevant traffic information are considered different only if all of the above elements are different.

[0323] Если количество частей информации о движении в списке потенциально подходящих векторов движения достигает максимальной длины списка MaxAffineNumMrgCand (MaxAffineNumMrgCand - положительное целое число, такое как 1, 2, 3, 4 или 5, ниже приводится описание с использованием длины 5 в качестве примера, и подробности здесь не описываются), список кандидатов завершен. В противном случае проходится следующий соседний блок.[0323] If the number of motion information pieces in the list of potentially eligible motion vectors reaches the maximum list length MaxAffineNumMrgCand (MaxAffineNumMrgCand is a positive integer such as 1, 2, 3, 4, or 5, the following is a description using a length of 5 as an example, and details are not described here), the list of candidates is complete. Otherwise, the next adjacent block is traversed.

[0324] D2: Потенциально подходящая информация о движении контрольной точки текущего блока получается с использованием построенного метода предсказания вектора движения для контрольной точки и добавляется в список потенциально подходящей информации о движении. Для этого следует обратиться к Фиг.9B.[0324] D2: Potentially good motion information of the checkpoint of the current block is obtained using the built motion vector prediction method for the checkpoint and added to the list of potentially good motion information. To do this, refer to Fig.9B.

[0325] Этап 601c: Получают информацию о движении контрольных точек текущего блока. Для этого следует обратиться к этапу 801 в построенном методе 2 предсказания вектора движения контрольной точки из подраздела 5. Подробности не описываются здесь снова.[0325] Step 601c: Get information about the movement of control points of the current block. To do this, refer to step 801 in the built reference point motion vector prediction method 2 from subsection 5. Details are not described here again.

[0326] Этап 602c: Объединяют информацию о движении контрольных точек, чтобы получить построенную информацию о движении контрольных точек. Для этого следует обратиться к этапу 801 на Фиг.8B. Подробности не описываются здесь снова.[0326] Step 602c: Combine checkpoint motion information to obtain built checkpoint motion information. To do this, refer to step 801 in Fig.8B. Details are not described here again.

[0327] Этап 603c: Добавляют построенную информацию о движении контрольной точки в список потенциально подходящих векторов движения.[0327] Step 603c: The constructed checkpoint motion information is added to the list of potentially suitable motion vectors.

[0328] Если длина списка кандидатов меньше максимальной длины списка MaxAffineNumMrgCand, комбинации проходятся в заранее установленном порядке, чтобы получить корректную комбинацию в качестве потенциально подходящей информации о движении контрольной точки. В этом случае, если список потенциально подходящих векторов движения пуст, потенциально подходящая информация движения точки контрольной точки добавляется в список потенциально подходящих векторов движения. В противном случае информация о движении в списке потенциально подходящих векторов движения проходится последовательно, чтобы проверить, имеется ли информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, в списке потенциально подходящих векторов движения. Если в списке потенциально подходящих векторов движения отсутствует информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, потенциально подходящая информация о движении контрольной точки добавляется в список потенциально подходящих векторов движения.[0328] If the length of the list of candidates is less than the maximum length of the list MaxAffineNumMrgCand, the combinations are traversed in a predetermined order to obtain the correct combination as potentially suitable checkpoint movement information. In this case, if the list of potentially suitable motion vectors is empty, the potentially suitable motion information of the control point is added to the list of potentially suitable motion vectors. Otherwise, the motion information in the list of potential candidate motion vectors is sequentially traversed to check if there is motion information that is the same as the potential candidate motion information of the reference point in the list of potential candidate motion vectors. If there is no motion information in the list of potential candidate motion vectors that is the same as the potential candidate motion information of the reference point, the potential candidate motion information of the reference point is added to the list of potential candidate motion vectors.

[0329] Например, заранее заданный порядок выглядит следующим образом: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3) -> Affine (CP2, CP3) -> Affine (CP1, CP4) -> Affine (CP2, CP4) -> Affine (CP3, CP4). Всего существует 10 комбинаций.[0329] For example, the predefined order is: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3) -> Affine (CP2, CP3) -> Affine (CP1, CP4) -> Affine (CP2, CP4) -> Affine (CP3, CP4). There are 10 combinations in total.

[0330] Если информация о движении контрольной точки, соответствующая комбинации, недоступна, считается, что комбинация недоступна. Если комбинация доступна, определяется индекс опорного кадра комбинации (в случае двух контрольных точек, меньший индекс опорного кадра выбирается в качестве индекса опорного кадра комбинации; в случае более двух контрольных точек, выбирается индекс опорного кадра, который появляется наиболее часто, и количества раз, когда появляются множество индексов опорного кадра, одни и те же, минимальный индекс опорного кадра выбирается в качестве индекса опорного кадра комбинации), и векторы движения контрольных точек масштабируются. Если масштабированная информация о движении всех контрольных точек согласованна, комбинация некорректна.[0330] If the checkpoint motion information corresponding to the combination is not available, the combination is considered to be unavailable. If a combination is available, the key frame index of the combination is determined (in the case of two breakpoints, the smaller key frame index is chosen as the key frame index of the combination; in the case of more than two breakpoints, the index of the key frame that occurs most frequently and the number of times a plurality of key frame indexes appear, the same, the minimum key frame index is selected as the combination key frame index), and the motion vectors of the control points are scaled. If the scaled motion information of all control points is consistent, the combination is invalid.

[0331] В необязательном порядке, в этом варианте осуществления настоящей заявки список потенциально подходящих векторов движения может быть дополнен. Например, после вышеупомянутого процесса прохождения, если длина списка потенциально подходящих векторов движения меньше, чем максимальная длина списка MaxAffineNumMrgCand, список потенциально подходящих векторов движения может дополняться до тех пор, пока длина списка не станет равной MaxAffineNumMrgCand.[0331] Optionally, in this embodiment of the present application, the list of potentially suitable motion vectors can be supplemented. For example, after the above traversal process, if the length of the list of potential candidate motion vectors is less than the maximum length of the list MaxAffineNumMrgCand, the list of potential candidate motion vectors may be padded until the length of the list is equal to MaxAffineNumMrgCand.

[0332] Дополнение может выполняться с использованием метода дополнения нулевого вектора движения или путем объединения или взвешенного усреднения имеющейся потенциально подходящей информации о движении в имеющемся списке. Следует отметить, что к настоящей заявке также применим другой метод дополнения списка потенциально подходящих векторов движения. Подробности здесь не описываются.[0332] The padding may be performed using a null motion vector padding method or by combining or weighted averaging the available potentially relevant motion information in the available list. It should be noted that another method for adding to the list of potentially suitable motion vectors is also applicable to the present application. Details are not described here.

[0333] Этап 603b: Выполняют синтаксический анализ потока битов, чтобы определить оптимальную информацию о движении контрольной точки.[0333] Step 603b: Parsing the bitstream is performed to determine optimal checkpoint motion information.

[0334] Получают номер индекса посредством синтаксического анализа, и оптимальную информацию о движении контрольной точки определяют из списка потенциально подходящих векторов движения на основе номера индекса.[0334] An index number is obtained through parsing, and optimal checkpoint motion information is determined from a list of potentially suitable motion vectors based on the index number.

[0335] Этап 604b: Получают вектор движения каждого подблока в текущем блоке на основе оптимальной информации о движении контрольной точки и аффинной модели движения, используемой для текущего блока декодирования.[0335] Step 604b: A motion vector of each sub-block in the current block is obtained based on the optimal checkpoint motion information and the affine motion model used for the current decoding block.

[0336] Этот этап аналогичен этапу 605a.[0336] This step is similar to step 605a.

[0337] Этап 605b: Выполняют компенсацию движения в отношении каждого подблока на основе определенного вектора движения подблока, чтобы получить предиктор выборки подблока.[0337] Step 605b: Motion compensation is performed on each subblock based on the determined subblock motion vector to obtain a subblock sampling predictor.

[0338] В настоящем изобретении технологии относятся к энтропийному декодеру с контекстно-зависимым адаптивным двоичным арифметическим кодированием (CABAC) или другому энтропийному декодеру, такому как декодер на основе энтропии разбиения вероятностного интервала (PIPE) или связанный с ним декодер. Арифметическое декодирование - это форма энтропийного декодирования, используемая во многих алгоритмах сжатия с высокой эффективностью декодирования, поскольку символ может быть отображен в код нецелой длины при арифметическом декодировании. Как правило, декодирование символа данных с помощью CABAC включает в себя один или несколько из следующих этапов:[0338] In the present invention, the techniques relate to a context-dependent adaptive binary arithmetic coding (CABAC) entropy decoder or other entropy decoder such as a probability interval partitioning entropy (PIPE) decoder or an associated decoder. Arithmetic decoding is a form of entropy decoding used in many compression algorithms with high decoding efficiency because a character can be mapped to a non-integer length code in arithmetic decoding. Typically, decoding a data symbol with CABAC involves one or more of the following steps:

[0339] (1) Двоичный: Если символ, который должен быть декодирован, является недвоичным, символ отображается в «двоичную» последовательность, и каждый двоичный бит может иметь значение «0» или «1».[0339] (1) Binary: If the symbol to be decoded is non-binary, the symbol is mapped to a "binary" sequence, and each binary bit may be "0" or "1".

[0340] (2) Назначение контекста: Каждому двоичному биту назначается один контекст (в нормальном режиме). Модель контекста используется для определения метода вычисления контекста для данного двоичного бита на основе информации, доступной для двоичного бита. Информация представляет собой, например, значение предыдущего декодированного символа или двоичное число.[0340] (2) Context Assignment: Each binary bit is assigned one context (in normal mode). The context model is used to determine the context calculation method for a given binary bit based on the information available for the binary bit. The information is, for example, the value of the previous decoded symbol or a binary number.

[0341] (3) Двоичное кодирование: Арифметический кодер кодирует двоичный бит. Для кодирования двоичного бита арифметическому кодеру требуется вероятность значения двоичного бита в качестве входа, каковая вероятность - это вероятность того, что значение двоичного бита равно «0», и вероятность того, что значение двоичного бита равно «1». (Оценочная) вероятность каждого контекста представлена целочисленным значением, которое называется «состоянием контекста». У каждого контекста есть состояние, и поэтому состояние (то есть предполагаемая вероятность) одинаково для двоичного бита, которому назначен один контекст, и отличается в разных контекстах.[0341] (3) Binary encoding: An arithmetic encoder encodes a binary bit. To encode a binary bit, the arithmetic encoder needs the probability of the value of the binary bit as input, which probability is the probability that the value of the binary bit is "0" and the probability that the value of the binary bit is "1". The (estimated) probability of each context is represented by an integer value, which is called the “context state”. Each context has a state, and so the state (i.e., implied probability) is the same for a binary bit assigned to one context, and differs in different contexts.

[0342] (4) Обновление состояния: Вероятность (состояние) выбора контекста обновляется на основе фактического декодированного значения двоичного бита (например, если значение двоичного бита равно «1», вероятность «1» увеличивается).[0342] (4) State update: The context selection probability (state) is updated based on the actual decoded binary bit value (eg, if the binary bit value is "1", the probability of "1" is increased).

[0343] В предшествующем уровне техники, когда выполняется синтаксический анализ информации о параметрах аффинной модели движения через CABAC, например, affine_merge_flag, affine_merge_idx, affine_inter_flag и affine_type_flag в Таблице 1, для разных элементов синтаксиса при синтаксическом анализе CABAC необходимо использовать разные контексты. В настоящем изобретении количество контекстов, используемых в CABAC, сокращено. Следовательно, для хранения контекстов занимается меньшее пространство, требующееся для кодера и декодера, не оказывая отрицательного воздействия на эффективность кодирования.[0343] In the prior art, when affine motion model parameter information is parsed through CABAC, such as affine_merge_flag, affine_merge_idx, affine_inter_flag, and affine_type_flag in Table 1, different contexts need to be used for different syntax elements when parsing CABAC. In the present invention, the number of contexts used in CABAC is reduced. Therefore, the storage of contexts takes up less space required for the encoder and decoder without adversely affecting coding efficiency.

[0344] Для affine_merge_flag и affine_inter_flag два разных набора контекстов (каждый набор контекстов включает в себя три контекста) используются в CABAC согласно предшествующему уровню техники. Фактический индекс контекста, используемый в каждом наборе, равен сумме значения одного и того же элемента синтаксиса в левом соседнем блоке текущего блока декодирования и значения того же элемента синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 3. Здесь availableL указывает доступность левого соседнего блока текущего блока декодирования (существует ли левый соседний блок и был ли он декодирован), а availableA указывает доступность верхнего соседнего блока текущего блока декодирования (существует ли верхний соседний блок и был ли он декодирован). В предшествующем уровне техники количество контекстов affine_merge_flag и affine_inter_flag равно 6.[0344] For affine_merge_flag and affine_inter_flag, two different context sets (each context set includes three contexts) are used in CABAC according to the prior art. The actual context index used in each set is equal to the sum of the value of the same syntax element in the left adjacent block of the current decoding block and the value of the same syntax element in the top adjacent block of the current decoding block, as shown in Table 3. Here, availableL indicates the availability of the left of the current decode block's neighbor block (whether a left neighbor exists and has been decoded), and availableA indicates the availability of the top neighbor of the current decode block (whether a top neighbor exists and has been decoded). In the prior art, the number of affine_merge_flag and affine_inter_flag contexts is 6.

Таблица 3 Индексы контекста Table 3 Context Indices

Элемент синтаксисаSyntax element condLcondL condAconda Индекс контекстаContext Index affine_merge_flag[x0][y0]affine_merge_flag[x0][y0] affine_merge_flag[x0-1][y0]affine_merge_flag[x0-1][y0] affine_merge_flag[x0][y0-1]affine_merge_flag[x0][y0-1] (condL && availableL) + (condA && availableA)(condL && availableL) + (condA && availableA) affine_inter_flag[x0][y0]affine_inter_flag[x0][y0] affine_inter_flag[x0-1][y0]affine_inter_flag[x0-1][y0] affine_inter_flag[x0][y0-1]affine_inter_flag[x0][y0-1] (condL && availableL) + (condA && availableA)(condL && availableL) + (condA && availableA)

[0345] Фиг.10 описывает процедуру способа декодирования видео согласно варианту осуществления настоящего изобретения. Этот вариант осуществления может быть выполнен видеодекодером, показанным на Фиг.3. Как показано на Фиг.10, способ включает в себя следующие этапы.[0345] FIG. 10 describes a procedure of a video decoding method according to an embodiment of the present invention. This embodiment may be performed by the video decoder shown in FIG. As shown in Fig. 10, the method includes the following steps.

[0346] 1001. Выполняют синтаксический анализ принятого потока битов, чтобы получить элемент синтаксиса, подлежащий энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке.[0346] 1001. Parse the received bit stream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block .

[0347] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0347] In an implementation, syntax element 1 in the current block is affine_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0348] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0348] In an implementation, syntax element 1 in the current block is subblock_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0349] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0349] This step may specifically be performed by the entropy decoding module 304 of FIG.

[0350] Текущий блок в этом варианте осуществления настоящего изобретения может быть CU.[0350] The current block in this embodiment of the present invention may be a CU.

[0351] 1002. Выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где энтропийное декодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное декодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста.[0351] 1002. Perform entropy decoding on the syntax element to be entropy decoded in the current block, where entropy decoding on the syntax element 1 in the current block is performed using a predetermined context model or entropy decoding on the syntax element 2 in the current block carried out using this context model.

[0352] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0352] This step may specifically be performed by the entropy decoding module 304 of FIG.

[0353] 1003. Выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.[0353] 1003. Prediction processing is performed on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block.

[0354] Этот этап может, в частности, выполняться модулем 360 обработки предсказания по Фиг.3.[0354] This step may in particular be performed by the prediction processing module 360 of FIG.

[0355] 1004. Получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0355] 1004. A reconstructed image of the current block is obtained based on the prediction block of the current block.

[0356] Этот этап может быть, в частности, выполнен модулем 314 восстановления по Фиг.3.[0356] This step may in particular be performed by the recovery module 314 of FIG.

[0357] В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, декодеру не нужно подтверждать модель контекста при выполнении энтропийного декодирования, чем повышается эффективность декодирования при выполнении декодирования видео декодером. Кроме того, поскольку видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, требуется меньше пространства хранения в видеодекодере.[0357] In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the decoder does not need to confirm the context model when performing entropy decoding, thereby improving decoding efficiency when decoding is performed by the video decoder. In addition, since the video decoder only needs to store one context model for syntax element 1 and syntax element 2, less storage space is required in the video decoder.

[0358] В соответствии со способом декодирования видео, описанным на Фиг.10, вариант осуществления настоящего изобретения дополнительно предоставляет способ кодирования, включающий в себя этапы, на которых:[0358] According to the video decoding method described in FIG. 10, an embodiment of the present invention further provides an encoding method including:

получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, при этом при выполнении энтропийного кодирования в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, энтропийное кодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста, или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием этой модели контекста; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Модель контекста, используемая при выполнении энтропийного кодирования в отношении текущего блока, такая же, как модель контекста в способе декодирования видео, описанном на Фиг.10. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, кодеру не нужно подтверждать модель контекста при выполнении энтропийного кодирования, чем повышается эффективность кодирования при выполнении кодирования видео кодером. Кроме того, поскольку видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, занимается меньше пространства хранения в видеокодере.obtaining an entropy-encoding syntax element in the current block, where the entropy-encoding syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; entropy encoding is performed on the syntax element to be entropy encoded in the current block, wherein, when entropy encoding is performed on the syntax element to be entropy encoded in the current block, entropy encoding is performed on the syntax element 1 in the current block using a predetermined context model, or entropy encoding with respect to syntax element 2 in the current block is performed using this context model; and outputting a bit stream including the syntax element that is in the current block and obtained by entropy encoding. The context model used when performing entropy encoding on the current block is the same as the context model in the video decoding method described in FIG. In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the encoder does not need to confirm the context model when performing entropy encoding, thereby improving the encoding efficiency when performing encoding by the video encoder. In addition, since the video encoder only needs to store one context model for syntax element 1 and syntax element 2, less storage space is occupied in the video encoder.

[0359] Фиг.11 описывает процедуру способа декодирования видео согласно другому варианту осуществления настоящего изобретения. Этот вариант осуществления может быть выполнен видеодекодером, показанным на Фиг.3. Как показано на Фиг.11, способ включает в себя следующие этапы.[0359] FIG. 11 describes a procedure of a video decoding method according to another embodiment of the present invention. This embodiment may be performed by the video decoder shown in FIG. As shown in Fig.11, the method includes the following steps.

[0360] 1101. Выполняют синтаксический анализ принятого потока битов, чтобы получить элемент синтаксиса, подлежащий энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке.[0360] 1101. Parse the received bitstream to obtain an entropy decoded syntax element in the current block, where the entropy decoded syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block .

[0361] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0361] In an implementation, syntax element 1 in the current block is affine_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0362] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - affine_inter_flag.[0362] In an implementation, syntax element 1 in the current block is subblock_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0363] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0363] This step may be specifically performed by the entropy decoding module 304 of FIG.

[0364] 1102. Получают модель контекста, соответствующую подлежащему энтропийному декодированию элементу синтаксиса, при этом модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста.[0364] 1102. A context model corresponding to the syntax element to be entropy decoded is obtained, wherein the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set of context models.

[0365] Видеодекодер должен хранить только один набор моделей контекста для элемента 1 синтаксиса и элемента 2 синтаксиса.[0365] The video decoder needs to store only one set of context models for syntax element 1 and syntax element 2.

[0366] В некоторых реализациях заранее заданный набор моделей контекста включает в себя только две модели контекста. В некоторых других реализациях заранее заданный набор моделей контекста включает в себя только три модели контекста. Можно понять, что заранее заданный набор моделей контекста может альтернативно включать в себя четыре, пять или шесть моделей контекста. Количество моделей контекста, включенных в заранее заданный набор моделей контекста, не ограничено в этом варианте осуществления настоящего изобретения.[0366] In some implementations, the predefined set of context models includes only two context models. In some other implementations, the predefined set of context models includes only three context models. It can be understood that the predefined set of context models may alternatively include four, five, or six context models. The number of context models included in the predefined set of context models is not limited in this embodiment of the present invention.

[0367] В реализации, то, что модель контекста, соответствующая элементу синтаксиса 1 в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке.[0367] In an implementation, that the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models includes: determining the context index of syntax element 1 in the current block based on syntax element 1 and syntax element 2 in the left adjacent block of the current block and syntax element 1 and syntax element 2 in the upper adjacent block of the current block, where the context index of the syntax element 1 in the current block is used to indicate the context model corresponding to the syntax element 1 in the current block.

[0368] В другой реализации, то, что модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.[0368] In another implementation, that the context model corresponding to syntax element 2 in the current block is determined from a predefined set of context models includes: determining the context index of syntax element 2 in the current block based on syntax element 1 and element 2 syntax element 1 and syntax element 2 in the top adjacent block of the current block, where the context index of syntax element 2 in the current block is used to indicate the context model corresponding to syntax element 2 in the current block.

[0369] Например, если количество моделей контекста в заранее заданном наборе моделей контекста равно 3, значение индекса контекста элемента 1 синтаксиса в текущем блоке представляет собой сумму значения, полученного посредством выполнения операции ИЛИ в отношении элемента синтаксиса 1 и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.[0369] For example, if the number of context models in a predefined set of context models is 3, the context index value of syntax element 1 in the current block is the sum of the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper neighboring block , and the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent block; or the value of the context index of syntax element 2 in the current block is the sum of the value obtained by ORing syntax element 1 and syntax element 2 in the top adjacent block, and the value obtained by ORing syntax element 1 and syntax element 2 in the left adjacent block.

[0370] В частности, элемент 1 синтаксиса affine_merge_flag и элемент 2 синтаксиса affine_inter_flag могут совместно использовать один набор моделей контекста (каковой набор включает в себя три модели контекста). Фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством сложения значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, и значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 4. Здесь "|" указывает операцию ИЛИ.[0370] In particular, affine_merge_flag syntax element 1 and affine_inter_flag syntax element 2 can share one set of context models (which set includes three context models). The actual context index used in each set is equal to the result obtained by adding the value obtained by ORing the two syntax elements in the left adjacent block of the current decoding block and the value obtained by ORing the two syntax elements in the top adjacent block of the current decoding block, as shown in Table 4. Here "|" specifies the OR operation.

Таблица 4 Индексы контекста согласно настоящему изобретениюTable 4 Context indices according to the present invention

Элемент синтаксисаSyntax element condLcondL condAconda Индекс контекстаContext Index affine_merge_flag[x0][y0]
affine_inter_flag[x0][y0]
affine_merge_flag[x0][y0]
affine_inter_flag[x0][y0]
affine_merge_flag[x0-1][y0] | affine_inter_flag [x0-1][y0]affine_merge_flag[x0-1][y0] | affine_inter_flag [x0-1][y0] affine_merge_flag[x0][y0-1] | affine_inter_flag[x0][y0-1]affine_merge_flag[x0][y0-1] | affine_inter_flag[x0][y0-1] (condL && availableL) + (condA && availableA)(condL && availableL) + (condA && availableA)

[0371] Например, если количество моделей контекста в заранее заданном наборе моделей контекста равно 2, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента синтаксиса 2 в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.[0371] For example, if the number of context models in the predefined set of context models is 2, the context index value of syntax element 1 in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on syntax element 1, and syntax element 2 in the upper adjacent block, and a value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent block; or the value of the context index of syntax element 2 in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper neighboring block, and the value obtained by performing an OR operation in relation of syntax element 1 and syntax element 2 in the left adjacent block.

[0372] В частности, элемент 1 синтаксиса affine_merge_flag и элемент 2 синтаксиса affine_inter_flag совместно используют один набор моделей контекста (каковой набор включает в себя две модели контекста). Фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, и значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 5. Здесь "|" указывает операцию ИЛИ. В этом варианте осуществления настоящего изобретения количество контекстов для affine_merge_flag и affine_inter_flag уменьшено до 2.[0372] In particular, affine_merge_flag syntax element 1 and affine_inter_flag syntax element 2 share one set of context models (which set includes two context models). The actual context index used in each set is equal to the result obtained by performing the OR operation on the value obtained by performing the OR operation on two syntax elements in the left adjacent block of the current decoding block and the value obtained by performing the OR operation on the two syntax elements in the top adjacent block of the current decoding block, as shown in Table 5. Here "|" specifies the OR operation. In this embodiment of the present invention, the number of contexts for affine_merge_flag and affine_inter_flag is reduced to 2.

Таблица 5 Индексы контекста согласно настоящему изобретениюTable 5 Context indices according to the present invention

Элемент синтаксисаSyntax element condLcondL condAconda Индекс контекстаContext Index affine_merge_flag[x0][y0]
affine_inter_flag [x0][y0]
affine_merge_flag[x0][y0]
affine_inter_flag [x0][y0]
affine_merge_flag[x0-1][y0] | affine_inter_flag[x0-1][y0]affine_merge_flag[x0-1][y0] | affine_inter_flag[x0-1][y0] affine_merge_flag[x0][y0-1] | affine_inter_flag[x0][y0-1]affine_merge_flag[x0][y0-1] | affine_inter_flag[x0][y0-1] (condL && availableL) | (condA && availableA)(condL && availableL) | (condA && availableA)

[0373] 1103. Выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.[0373] 1103. Entropy decoding is performed on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block.

[0374] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0374] This step may be specifically performed by the entropy decoding module 304 of FIG.

[0375] 1104. Выполняют предсказание в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.[0375] 1104. Prediction is performed on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain the prediction block of the current block.

[0376] Этот этап может конкретно выполняться модулем 360 обработки предсказания по Фиг.3.[0376] This step may be specifically performed by the prediction processing module 360 of FIG.

[0377] 1105. Получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0377] 1105. A reconstructed image of the current block is obtained based on the prediction block of the current block.

[0378] Этот этап может конкретно выполняться модулем 314 восстановления по Фиг.3.[0378] This step may be specifically performed by recovery module 314 of FIG.

[0379] В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеодекодере.[0379] In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the video decoder needs to store only one context model for syntax element 1 and syntax element 2, as a result, less storage space is occupied in the video decoder .

[0380] В соответствии со способом декодирования видео, описанным на Фиг.11, вариант осуществления настоящего изобретения дополнительно обеспечивает способ кодирования, включающий в себя этапы, на которых:[0380] According to the video decoding method described in FIG. 11, an embodiment of the present invention further provides an encoding method including:

получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.11. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.obtaining an entropy-encoding syntax element in the current block, where the entropy-encoding syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; obtain a context model corresponding to the syntax element to be entropy encoded, wherein the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set a set of context models; performing entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and outputting a bit stream including the syntax element that is in the current block and obtained by entropy encoding. The set of context models used when performing entropy encoding on the current block is the same as the set of context models in the video decoding method described in FIG. In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the video encoder only needs to store one context model for syntax element 1 and syntax element 2, resulting in less storage space in the video encoder.

[0381] Фиг.12 описывает процедуру способа декодирования видео согласно варианту осуществления настоящего изобретения. Этот вариант осуществления может быть выполнен видеодекодером, показанным на Фиг.3. Как показано на Фиг.12, способ включает в себя следующие этапы.[0381] FIG. 12 describes a procedure of a video decoding method according to an embodiment of the present invention. This embodiment may be performed by the video decoder shown in FIG. As shown in Fig.12, the method includes the following steps.

[0382] 1201. Выполняют синтаксический анализ принятого потока битов, чтобы получить элемент синтаксиса, подлежащий энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке, включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке.[0382] 1201. The received bit stream is parsed to obtain the syntax element to be entropy decoded in the current block, where the syntax element to be entropy decoded in the current block includes syntax element 3 in the current block or syntax element 4 in the current block. block.

[0383] В реализации элемент 3 синтаксиса в текущем блоке - это merge_idx, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx.[0383] In an implementation, syntax element 3 in the current block is merge_idx, or syntax element 4 in the current block is affine_merge_idx.

[0384] В реализации элемент 3 синтаксиса в текущем блоке - это merge_idx, или элемент 4 синтаксиса в текущем блоке - это subblock_merge_idx.[0384] In an implementation, syntax element 3 in the current block is merge_idx, or syntax element 4 in the current block is subblock_merge_idx.

[0385] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0385] This step may specifically be performed by the entropy decoding module 304 of FIG.

[0386] 1202. Получают модель контекста, соответствующую подлежащему энтропийному декодированию элементу синтаксиса, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста.[0386] 1202. A context model corresponding to the syntax element to be entropy decoded is obtained, where the context model corresponding to the syntax element 3 in the current block is determined from a predetermined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set of context models.

[0387] В реализации количество моделей контекста, включенных в заранее заданный набор моделей контекста, равно 5. Можно понять, что количество моделей контекста, включенных в заранее заданный набор моделей контекста, альтернативно может быть другим значением, таким как 1, 2, 3 или 4. Когда количество моделей контекста, включенных в заранее заданный набор моделей контекста, равно 1, заранее заданный набор моделей контекста является одной моделью контекста. Количество моделей контекста, включенных в заранее заданный набор моделей контекста, не ограничено в этом варианте осуществления настоящего изобретения.[0387] In an implementation, the number of context models included in the predefined context model set is 5. It can be understood that the number of context models included in the predefined context model set may alternatively be another value such as 1, 2, 3, or 4. When the number of context models included in the predefined context model set is 1, the predefined context model set is one context model. The number of context models included in the predefined set of context models is not limited in this embodiment of the present invention.

[0388] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0388] This step may specifically be performed by the entropy decoding module 304 of FIG.

[0389] 1203. Выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.[0389] 1203. Entropy decoding is performed on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block.

[0390] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.[0390] This step may be specifically performed by the entropy decoding module 304 of FIG.

[0391] 1204. Выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.[0391] 1204. Prediction processing is performed on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain the prediction block of the current block.

[0392] Этот этап может конкретно выполняться модулем 360 обработки предсказания по Фиг.3.[0392] This step may be specifically performed by the prediction processing module 360 of FIG.

[0393] 1205. Получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0393] 1205. A reconstructed image of the current block is obtained based on the prediction block of the current block.

[0394] Этот этап может конкретно выполняться модулем 314 восстановления по Фиг.3.[0394] This step may specifically be performed by recovery module 314 of FIG.

[0395] В этом варианте осуществления, поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента 3 синтаксиса и элемента 4 синтаксиса, как следствие, занимается меньше пространства хранения в видеодекодере.[0395] In this embodiment, since the syntax element 3 and the syntax element 4 in the current block share the same context model, the video decoder needs to store only one context model for the syntax element 3 and the syntax element 4, as a result, less storage space is occupied in the video decoder .

[0396] В соответствии со способом декодирования видео, описанным на Фиг.12, вариант осуществления настоящего изобретения дополнительно предоставляет способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модели контекста, соответствующей элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийного кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.12. В этом варианте осуществления, поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 3 синтаксиса и элемента 4 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.[0396] According to the video decoding method described in FIG. 12, an embodiment of the present invention further provides an encoding method including: obtaining an entropy-encoding syntax element in a current block, where the entropy-encoding element the syntax in the current block includes the syntax element 3 in the current block or the syntax element 4 in the current block; obtain a context model corresponding to the syntax element to be entropy encoded, wherein the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set a set of context models; performing entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and outputting a bit stream including the syntax element that is in the current block and obtained by entropy encoding. The set of context models used when performing entropy encoding on the current block is the same as the set of context models in the video decoding method described in FIG. In this embodiment, since the syntax element 3 and the syntax element 4 in the current block share the same context model, the video encoder only needs to store one context model for the syntax element 3 and the syntax element 4, as a result, less storage space is occupied in the video encoder.

[0397] Вариант осуществления настоящего изобретения предоставляет видеодекодер 30, включающий в себя модуль 304 энтропийного декодирования, модуль 360 обработки предсказания и модуль 314 восстановления.[0397] An embodiment of the present invention provides a video decoder 30 including an entropy decoding module 304, a prediction processing module 360, and a reconstruction module 314.

[0398] Модуль 304 энтропийного декодирования выполнен с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке, включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где энтропийное декодирование в элементе 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийного декодирования в элементе 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста.[0398] The entropy decoding module 304 is configured to: parse the received bitstream to obtain a syntax element to be entropy decoded in the current block, where the syntax element to be entropy decoded in the current block includes syntax element 1 in the current block, or syntax element 2 in the current block; and perform entropy decoding on the syntax element to be entropy decoded in the current block, where entropy decoding in the syntax element 1 in the current block is performed using a predetermined context model, or entropy decoding in the syntax element 2 in the current block is performed using the given context model .

[0399] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0399] In an implementation, syntax element 1 in the current block is affine_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0400] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0400] In an implementation, syntax element 1 in the current block is subblock_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0401] Модуль 360 обработки предсказания выполнен возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.[0401] The prediction processing unit 360 is configured to perform prediction processing on the current block based on a syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block.

[0402] Блок 314 восстановления выполнен возможностью получать восстановленное изображение текущего блока на основе блока предсказания текущего блока.[0402] The reconstruction block 314 is configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0403] В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, декодеру не нужно подтверждать модель контекста при выполнении энтропийного декодирования, чем повышается эффективность декодирования при выполнении декодирования видео декодером. Кроме того, поскольку видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, требуется меньше пространства хранения в видеодекодере.[0403] In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the decoder does not need to confirm the context model when performing entropy decoding, thereby improving decoding efficiency when decoding is performed by the video decoder. In addition, since the video decoder only needs to store one context model for syntax element 1 and syntax element 2, less storage space is required in the video decoder.

[0404] Соответственно, вариант осуществления настоящего изобретения предоставляет видеокодер 20, включающий в себя: модуль 270 энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, при этом, при выполнении энтропийного кодирования в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке, энтропийное кодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста, или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста; и выход 272, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Модель контекста, используемая при выполнении энтропийного кодирования в отношении текущего блока, такая же, как модель контекста в способе, описанном на Фиг.10. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, кодеру не нужно подтверждать модель контекста при выполнении энтропийного кодирования, чем повышается эффективность кодирования при выполнении кодирования видео кодером. Кроме того, поскольку видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, занимается меньше пространства хранения в видеокодере.[0404] Accordingly, an embodiment of the present invention provides a video encoder 20, including: an entropy encoding module 270, configured to: obtain an entropy-encoded syntax element in a current block, where an entropy-encoded syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; and perform entropy encoding on the syntax element to be entropy-coded in the current block, wherein, when performing entropy encoding on the syntax element to be entropy-coded in the current block, entropy encoding on the syntax element 1 in the current block is performed using a predetermined context model, or entropy encoding in relation to syntax element 2 in the current block is performed using this context model; and an output 272 configured to output a bit stream including a syntax element that is in the current block and obtained by entropy encoding. The context model used when performing entropy encoding on the current block is the same as the context model in the method described in FIG. In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the encoder does not need to confirm the context model when performing entropy encoding, thereby improving the encoding efficiency when performing encoding by the video encoder. In addition, since the video encoder only needs to store one context model for syntax element 1 and syntax element 2, less storage space is occupied in the video encoder.

[0405] Другой вариант осуществления настоящего изобретения предоставляет видеодекодер 30, включающий в себя модуль 304 энтропийного декодирования, модуль 360 обработки предсказания и модуль 314 восстановления.[0405] Another embodiment of the present invention provides a video decoder 30 including an entropy decoding module 304, a prediction processing module 360, and a recovery module 314.

[0406] Модуль 304 энтропийного декодирования выполнен в возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.[0406] The entropy decoding module 304 is configured to: parse the received bit stream to obtain the syntax element to be entropy decoded in the current block, where the syntax element to be entropy decoded in the current block includes the syntax element 1 in the current block, or the element 2 syntaxes in the current block; obtain the context model corresponding to the syntax element to be entropy decoded, where the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set context models; and perform entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block.

[0407] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0407] In an implementation, syntax element 1 in the current block is affine_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0408] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.[0408] In an implementation, syntax element 1 in the current block is subblock_merge_flag, or syntax element 2 in the current block is affine_inter_flag.

[0409] В одной реализации модуль 304 энтропийного декодирования может быть конкретно выполнен с возможностью: определять индекс контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока, а также элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке; или[0409] In one implementation, the entropy decoding module 304 may be specifically configured to: determine the context index of syntax element 1 in the current block based on syntax element 1 and syntax element 2 in the left adjacent block of the current block, as well as syntax element 1 and element 2 syntax in the top neighboring block of the current block, where the context index of the syntax element 1 in the current block is used to indicate the context model corresponding to the syntax element 1 in the current block; or

определять индекс контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока, а также элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.determine the context index of the syntax element 2 in the current block, based on the syntax element 1 and the syntax element 2 in the left adjacent block of the current block, and the syntax element 1 and the syntax element 2 in the upper adjacent block of the current block, where the context index of the syntax element 2 in the current block is used to indicate the context model corresponding to syntax element 2 in the current block.

[0410] Например, значение индекса контекста элемента 1 синтаксиса в текущем блоке представляет собой сумму значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или[0410] For example, the value of the context index of syntax element 1 in the current block is the sum of the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper adjacent block, and the value obtained by performing an OR operation on element 1 syntax and syntax element 2 in the left adjacent block; or

значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.the value of the context index of syntax element 2 in the current block is the sum of the value obtained by ORing syntax element 1 and syntax element 2 in the top neighboring block, and the value obtained by ORing syntax element 1 and syntax element 2 in left adjacent block.

[0411] Например, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или[0411] For example, the value of the context index of syntax element 1 in the current block is the result obtained by performing the OR operation on the value obtained by performing the OR operation on syntax element 1 and syntax element 2 in the upper neighboring block, and the value obtained by performing an OR operation on the syntax element 1 and the syntax element 2 in the left adjacent block; or

значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.the context index value of syntax element 2 in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the upper neighboring block, and the value obtained by performing an OR operation on syntax element 1 and syntax element 2 in the left adjacent box.

[0412] Модуль 360 обработки предсказания выполнен с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.[0412] The prediction processing unit 360 is configured to perform prediction processing on the current block based on a syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block.

[0413] Модуль 314 восстановления выполнен с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.[0413] The reconstruction unit 314 is configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0414] В этом варианте осуществления, поскольку элемент синтаксиса 1 и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеодекодере.[0414] In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the video decoder needs to store only one context model for syntax element 1 and syntax element 2, as a result, less storage space is occupied in the video decoder .

[0415] Соответственно, вариант осуществления настоящего изобретения дополнительно предоставляет видеокодер, включающий в себя: модуль 270 энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход 272, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.11. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.[0415] Accordingly, an embodiment of the present invention further provides a video encoder, including: an entropy encoding module 270, configured to: obtain an entropy-encoded syntax element in the current block, where the entropy-encoded syntax element in the current block includes syntax element 1 in the current block or syntax element 2 in the current block; obtain a context model corresponding to the syntax element to be entropy encoded, wherein the context model corresponding to syntax element 1 in the current block is determined from a predefined set of context models, or the context model corresponding to syntax element 2 in the current block is determined from this predefined set a set of context models; and perform entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and an output 272 configured to output a bit stream including a syntax element that is in the current block and obtained by entropy encoding. The set of context models used when performing entropy encoding on the current block is the same as the set of context models in the video decoding method described in FIG. In this embodiment, since syntax element 1 and syntax element 2 in the current block share the same context model, the video encoder only needs to store one context model for syntax element 1 and syntax element 2, resulting in less storage space in the video encoder.

[0416] Другой вариант осуществления настоящего изобретения предоставляет видеодекодер 30, включающий в себя модуль 304 энтропийного декодирования, модуль 360 обработки предсказания и модуль 314 восстановления.[0416] Another embodiment of the present invention provides a video decoder 30 including an entropy decoding module 304, a prediction processing module 360, and a recovery module 314.

[0417] Модуль 304 энтропийного декодирования выполнен с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, при этом модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.[0417] The entropy decoding module 304 is configured to: parse the received bitstream to obtain the syntax element to be entropy decoded in the current block, where the syntax element to be entropy decoded in the current block includes the syntax element 3 in the current block, or the element 4 syntaxes in the current block; obtain a context model corresponding to the syntax element to be entropy decoded, wherein the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set context models; and perform entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block.

[0418] Заранее заданный набор моделей контекста включает одну, две, три, четыре или пять моделей контекста. Можно понять, что когда заранее заданный набор моделей контекста включает в себя только одну модель контекста, заранее заданный набор моделей контекста является одной контекстной моделью.[0418] The predefined set of context models includes one, two, three, four, or five context models. It can be understood that when the predefined set of context models includes only one context model, the predefined set of context models is one context model.

[0419] В реализации элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx и используется для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; или[0419] In an implementation, the syntax element 3 in the current block is merge_idx and is used to indicate the index value of the merge candidate list for the current block, or the syntax element 4 in the current block is affine_merge_idx and is used to indicate the index value of the affine merge candidate list for the current block; or

элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - subblock_merge_idx и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.the syntax element 3 in the current block is merge_idx and is used to indicate the index value of the merge candidate list for the current block, or the syntax element 4 in the current block is subblock_merge_idx and is used to indicate the index value of the merge candidate list based on subblocks.

[0420] Модуль 360 обработки предсказания выполнен с возможностью выполнения обработки предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.[0420] The prediction processing unit 360 is configured to perform prediction processing on the current block based on a syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block.

[0421] Модуль 314 восстановления выполнен с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.[0421] The reconstruction unit 314 is configured to obtain a reconstructed image of the current block based on the prediction block of the current block.

[0422] В этом варианте осуществления, поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента синтаксиса 3 и элемента синтаксиса 4, как следствие, занимается меньше пространства хранения в видеодекодере.[0422] In this embodiment, since syntax element 3 and syntax element 4 in the current block share the same context model, the video decoder needs to store only one context model for syntax element 3 and syntax element 4, as a result, less storage space is occupied in the video decoder .

[0423] Соответственно, вариант осуществления настоящего изобретения дополнительно предоставляет видеокодер, включающий в себя: модуль 270 энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход 272, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.12. В этом варианте осуществления, поскольку элемент синтаксиса 3 и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 3 синтаксиса и элемента 4 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.[0423] Accordingly, an embodiment of the present invention further provides a video encoder, including: an entropy encoding unit 270, configured to: obtain an entropy-encoded syntax element in the current block, where the entropy-encoded syntax element in the current block includes syntax element 3 in the current block or syntax element 4 in the current block; obtain the context model corresponding to the syntax element to be entropy encoded, wherein the context model corresponding to the syntax element 3 in the current block is determined from a predefined set of context models, or the context model corresponding to the syntax element 4 in the current block is determined from this predefined set context models; and perform entropy encoding on the syntax element to be entropy encoded based on the context model corresponding to the syntax element to be entropy encoded in the current block; and an output 272 configured to output a bit stream including a syntax element that is in the current block and obtained by entropy encoding. The set of context models used when performing entropy encoding on the current block is the same as the set of context models in the video decoding method described in FIG. In this embodiment, since syntax element 3 and syntax element 4 in the current block share the same context model, the video encoder only needs to store one context model for syntax element 3 and syntax element 4, resulting in less storage space in the video encoder.

[0424] Вариант 1 осуществления настоящего изобретения предлагает, что affine_merge_flag и affine_inter_flag совместно используют один набор контекста (каковой набор включает в себя три контекста), и фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством прибавления значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, к значению, полученному путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 4. Здесь "|" указывает операцию ИЛИ. В варианте 1 осуществления настоящего изобретения количество контекстов для affine_merge_flag и affine_inter_flag уменьшено до 3.[0424] Embodiment 1 of the present invention proposes that affine_merge_flag and affine_inter_flag share one context set (which set includes three contexts), and the actual context index used in each set is equal to the result obtained by adding the value obtained by executing OR operations on two syntax elements in the left adjacent block of the current decoding block, to the value obtained by performing an OR operation on two syntax elements in the upper neighboring block of the current decoding block, as shown in Table 4. Here, "|" specifies the OR operation. In Embodiment 1 of the present invention, the number of contexts for affine_merge_flag and affine_inter_flag is reduced to 3.

[0425] Вариант 2 осуществления настоящего изобретения предлагает, что affine_merge_flag и affine_inter_flag совместно используют один набор контекстов (каковой набор включает в себя два контекста), и фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, и значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 5. Здесь "|" указывает операцию ИЛИ. В варианте 2 осуществления настоящего изобретения количество контекстов для affine_merge_flag и affine_inter_flag уменьшено до 2.[0425] Embodiment 2 of the present invention proposes that affine_merge_flag and affine_inter_flag share one set of contexts (which set includes two contexts), and the actual context index used in each set is equal to the result obtained by performing an OR operation on the value , obtained by ORing two syntax elements in the left adjacent block of the current decoding block, and a value obtained by ORing two syntax elements in the upper neighboring block of the current decoding block, as shown in Table 5. Here, "|" specifies the OR operation. In Embodiment 2 of the present invention, the number of contexts for affine_merge_flag and affine_inter_flag is reduced to 2.

[0426] Вариант 3 осуществления настоящего изобретения предлагает, что affine_merge_flag и affine_inter_flag совместно используют один контекст. В третьем варианте осуществления настоящего изобретения количество контекстов affine_merge_flag и количество контекстов affine_inter_flag уменьшено до 1.[0426] Embodiment 3 of the present invention proposes that affine_merge_flag and affine_inter_flag share the same context. In the third embodiment of the present invention, the number of affine_merge_flag contexts and the number of affine_inter_flag contexts are reduced to 1.

[0427] В предшествующем уровне техники бинаризация выполняется в отношении merge_idx и affine_merge_idx с использованием усеченных унарных кодов, два разных набора контекстов (каждый набор контекстов включает в себя пять контекстов) используются в CABAC, и разные контексты используются для каждого двоичного бита после бинаризации. В предшествующем уровне техники количество контекстов для merge_idx и affine_merge_idx равно 10.[0427] In the prior art, binarization is performed on merge_idx and affine_merge_idx using truncated unary codes, two different context sets (each context set includes five contexts) are used in CABAC, and different contexts are used for each binary bit after binarization. In the prior art, the number of contexts for merge_idx and affine_merge_idx is 10.

[0428] Вариант 4 осуществления настоящего изобретения предлагает, что merge_idx и affine_merge_idx совместно используют один набор контекстов (каждый набор контекстов включает в себя пять контекстов). В варианте 4 осуществления настоящего изобретения количество контекстов для merge_idx и affine_merge_idx уменьшено до 5.[0428] Embodiment 4 of the present invention proposes that merge_idx and affine_merge_idx share one context set (each context set includes five contexts). In embodiment 4 of the present invention, the number of contexts for merge_idx and affine_merge_idx is reduced to 5.

[0429] В некоторых других технологиях элемент синтаксиса affine_merge_flag[x0][y0] в Таблице 1 может быть заменен на subblock_merge_flag[x0][y0] и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, и элемент синтаксиса affine_merge_idx[x0][y0] в Таблице 1 может быть заменен на subblock_merge_idx[x0][y0] и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.[0429] In some other technologies, the affine_merge_flag[x0][y0] syntax element in Table 1 may be replaced by subblock_merge_flag[x0][y0] and is used to indicate whether a subblock-based merge mode is used for the current block, and the syntax element affine_merge_idx[x0][y0] in Table 1 can be replaced by subblock_merge_idx[x0][y0] and is used to indicate the subblock-based merge candidate list index value.

[0430] В этом случае варианты осуществления с 1 по 4 настоящего изобретения все еще применимы, то есть subblock_merge_flag и affine_inter_flag совместно используют один набор контекстов (или контекст) и один способ получения индекса, и merge_idx и subblock_merge_idx совместно используют один набор контекстов (или контекст).[0430] In this case, embodiments 1 to 4 of the present invention are still applicable, i.e. subblock_merge_flag and affine_inter_flag share one context set (or context) and one index acquisition method, and merge_idx and subblock_merge_idx share one context set (or context ).

[0431] Вариант осуществления настоящего изобретения дополнительно предоставляет видеодекодер, включающий в себя исполнительную схему, сконфигурированную для выполнения любого из вышеупомянутых способов.[0431] An embodiment of the present invention further provides a video decoder including an execution circuit configured to perform any of the above methods.

[0432] Вариант осуществления настоящего изобретения дополнительно предоставляет видеодекодер, включающий в себя по меньшей мере один процессор и долговременный машиночитаемый носитель данных, соединенный с по меньшей мере одним процессором. Долговременный машиночитаемый носитель данных хранит компьютерную программу, которая может исполняться по меньшей мере одним процессором, и когда компьютерная программа исполняется по меньшей мере одним процессором, видеодекодер может выполнять любой из вышеупомянутых способов.[0432] An embodiment of the present invention further provides a video decoder including at least one processor and a durable computer-readable storage medium coupled to the at least one processor. The non-volatile computer-readable storage medium stores a computer program that can be executed by at least one processor, and when the computer program is executed by at least one processor, the video decoder can perform any of the above methods.

[0433] Вариант осуществления настоящего изобретения дополнительно предоставляет машиночитаемый носитель данных, приспособленный для хранения компьютерной программы, которая может исполняться процессором. Когда компьютерная программа исполняется по меньшей мере одним процессором, выполняется любой из вышеуказанных способов.[0433] An embodiment of the present invention further provides a computer-readable storage medium adapted to store a computer program that can be executed by a processor. When a computer program is executed by at least one processor, any of the above methods are performed.

[0434] Вариант осуществления настоящего изобретения дополнительно предоставляет компьютерную программу. Когда компьютерная программа исполняется, выполняется любой из вышеуказанных способов.[0434] An embodiment of the present invention further provides a computer program. When a computer program is executed, any of the above methods are performed.

[0435] В одном или нескольких вышеупомянутых примерах описанные функции могут быть реализованы с помощью аппаратных средств, программного обеспечения, встроенного программного обеспечения или любой их комбинации. Будучи реализованными в программном обеспечении, функции могут храниться или передаваться на машиночитаемом носителе и исполняться аппаратным процессором в виде одной или нескольких инструкций или кодов. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных или среде связи. Среда связи включает в себя, например, любую среду, которая обеспечивает передачу компьютерной программы из одного места в другое в соответствии с протоколом связи. Следовательно, машиночитаемый носитель в целом может соответствовать (1) долговременному материальному машиночитаемому носителю данных или (2) среде связи, например, сигналу или носителю. Носитель данных может быть любым доступным носителем, к которому могут осуществлять доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкции, кода и/или структуры данных для реализации технологий, описанных в настоящем изобретении. Компьютерный программный продукт может включать в себя машиночитаемый носитель. [0435] In one or more of the above examples, the described functions may be implemented using hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted on a computer-readable medium and executed by a hardware processor as one or more instructions or codes. The computer-readable medium may include a computer-readable storage medium that corresponds to a tangible medium, such as a storage medium or communication medium. A communication medium includes, for example, any medium that enables the transfer of a computer program from one place to another in accordance with a communication protocol. Therefore, a computer-readable medium may generally correspond to (1) a durable tangible computer-readable storage medium, or (2) a communication medium, such as a signal or a medium. A storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve an instruction, code, and/or data structure for implementing the technologies described in the present invention. The computer program product may include a computer readable medium.

[0436] В качестве примера, а не ограничения, такой машиночитаемый носитель данных может включать в себя RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другое магнитное запоминающее устройство, флэш-память или любой другой носитель, который можно использовать для хранения необходимого программного кода в форме инструкции или структуры данных и к которому может осуществлять доступ компьютер. Кроме того, любое соединение можно правильно называть машиночитаемым носителем. Например, если инструкция передается с веб-сайта, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (digital subscriber line, DSL) или беспроводных технологий, таких как как инфракрасные, радио и микроволновые, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио и микроволновые, включены в определение среды. Однако следует понимать, что машиночитаемый носитель данных и носитель данных не включают в себя соединение, носитель, сигнал или какие-либо другие временные носители, а фактически направлены на долговременный материальный носитель данных. В данном описании диск и оптический диск включают в себя компакт-диск (compact disc, CD), лазерный диск, оптический диск, универсальный цифровой диск (digital versatile disc, DVD), дискету и диск Blu-ray. Диск обычно воспроизводит данные магнитным способом, а оптический диск воспроизводит данные оптическим способом с помощью лазера. Любые комбинации вышеизложенного также должны входить в объем машиночитаемого носителя.[0436] By way of example, and not limitation, such a computer-readable storage medium may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk storage device or other magnetic storage device, flash memory or any other medium that can be used to store the necessary program code in the form of an instruction or data structure and that can be accessed by a computer. In addition, any connection can properly be called a computer-readable medium. For example, if an instruction is 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 coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the media definition. However, it should be understood that the computer-readable storage medium and the storage medium do not include a connection, a medium, a signal, or any other temporary media, but are actually directed to a durable tangible storage medium. Here, the disc and the optical disc include a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disk, and a Blu-ray disc. A disc usually reproduces data magnetically, while an optical disc reproduces data optically using a laser. Any combinations of the foregoing should also be within the scope of the computer-readable medium.

[0437] Инструкция может исполняться одним или несколькими процессорами, и один или несколько процессоров представляют собой, например, один или несколько модулей цифровой обработки сигналов (digital signal processor, DSP), один или несколько микропроцессоров общего назначения, одну или несколько специализированных интегральных схем (application specific integrated circuit, ASIC), одну или несколько программируемых пользователем вентильных матриц (field programmable logic arrays, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Следовательно, термин «процессор», используемый в настоящем описании, может представлять любую из вышеупомянутых структур или других структур, применимых к реализации технологий, описанных в настоящем описании. Кроме того, в некоторых аспектах функции, описанные в этом описании, могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для выполнения кодирования и декодирования, или могут быть включены в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.[0437] An instruction may be executed by one or more processors, and one or more processors are, for example, one or more digital signal processor (DSP) modules, one or more general purpose microprocessors, one or more application specific integrated circuits ( application specific integrated circuit (ASIC), one or more field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" as used herein may represent any of the aforementioned structures or other structures applicable to the implementation of the technologies described herein. Furthermore, in some aspects, the functions described in this specification may be provided within dedicated hardware and/or software modules configured to perform encoding and decoding, or may be included in a combined codec. In addition, technologies may be fully implemented in one or more circuits or logic elements.

[0438] Технологии согласно данному раскрытию могут быть реализованы во множестве устройств или устройств, которые включают в себя беспроводной телефон, интегральную схему (integrated circuit, IC) или набор IC (например, набор микросхем). Различные компоненты, модули или блоки описаны в этом раскрытии, чтобы подчеркнуть функции устройств, сконфигурированных для выполнения раскрытых технологий, которые не обязательно реализуются различными аппаратными блоками. Фактически, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека вместе с надлежащим программным обеспечением и/или встроенным программным обеспечением, либо могут быть предоставлены посредством набора взаимодействующих аппаратных блоков. Аппаратные блоки включают в себя один или несколько процессоров, описанных выше.[0438] The technologies of this disclosure may be implemented in a variety of devices or devices that include a wireless telephone, an integrated circuit (IC), or an IC stack (eg, a chipset). Various components, modules, or blocks are described in this disclosure to highlight the functions of devices configured to perform the disclosed technologies, which are not necessarily implemented by different hardware blocks. In fact, as described above, the various blocks may be combined into a codec hardware block along with appropriate software and/or firmware, or may be provided through a set of cooperating hardware blocks. The hardware blocks include one or more of the processors described above.

Claims (53)

1. Способ декодирования видео, содержащий этапы, на которых:1. A video decoding method, comprising the steps of: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, при этом подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке содержит первый элемент синтаксиса в текущем блоке или второй элемент синтаксиса в текущем блоке;parsing the received bitstream to obtain an entropy decoded syntax element in the current block, wherein the entropy decoded syntax element in the current block comprises a first syntax element in the current block or a second syntax element in the current block; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, при этом модель контекста, соответствующая первому элементу синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая второму элементу синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста, при этом определение модели контекста, соответствующей первому элементу синтаксиса в текущем блоке, из заранее заданного набора моделей контекста содержит этап, на котором определяют индекс контекста первого элемента синтаксиса в текущем блоке на основе первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке текущего блока, а также первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке текущего блока, при этом индекс контекста первого элемента синтаксиса в текущем блоке используется для указания модели контекста, соответствующей первому элементу синтаксиса в текущем блоке; или определение модели контекста, соответствующей второму элементу синтаксиса в текущем блоке, из заранее заданного набора моделей контекста содержит этап, на котором определяют индекс контекста второго элемента синтаксиса в текущем блоке на основе первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке текущего блока, а также первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке текущего блока, при этом индекс контекста второго элемента синтаксиса в текущем блоке используется для указания модели контекста, соответствующей второму элементу синтаксиса в текущем блоке;obtain a context model corresponding to the syntax element to be entropy decoded, wherein the context model corresponding to the first syntax element in the current block is determined from a predefined set of context models, or the context model corresponding to the second syntax element in the current block is determined from this predefined set a set of context models, wherein determining the context model corresponding to the first syntax element in the current block from the predetermined set of context models comprises the step of determining the context index of the first syntax element in the current block based on the first syntax element and the second syntax element in the left adjacent block of the current block, as well as the first syntax element and the second syntax element in the upper neighboring block of the current block, while the context index of the first syntax element in the current block is used to indicate the context model corresponding to the first element mentu syntax in the current block; or determining the context model corresponding to the second syntax element in the current block from a predetermined set of context models comprises determining the context index of the second syntax element in the current block based on the first syntax element and the second syntax element in the left adjacent block of the current block, and also the first syntax element and the second syntax element in the top adjacent block of the current block, wherein the context index of the second syntax element in the current block is used to indicate the context model corresponding to the second syntax element in the current block; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке;performing entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; иperforming prediction processing on the current block based on the syntax element that is in the current block and that is obtained by entropy decoding to obtain a prediction block of the current block; and получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.obtaining a reconstructed image of the current block based on the prediction block of the current block. 2. Способ по п.1, в котором количество моделей контекста в упомянутом заранее заданном наборе моделей контекста равно 2, или 3, или 5.2. The method of claim 1, wherein the number of context models in said predefined set of context models is 2, or 3, or 5. 3. Способ по п.1 или 2, в котором, если количество моделей контекста в упомянутом заранее заданном наборе моделей контекста равно 3, значение индекса контекста первого элемента синтаксиса в текущем блоке представляет собой сумму значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке; или3. The method according to claim 1 or 2, wherein if the number of context models in said predetermined set of context models is 3, the value of the context index of the first syntax element in the current block is the sum of the value obtained by performing an OR operation on the first element syntax and the second syntax element in the upper adjacent block, and the value obtained by performing an OR operation on the first syntax element and the second syntax element in the left neighboring block; or значение индекса контекста второго элемента синтаксиса в текущем блоке представляет собой сумму значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке.the value of the context index of the second syntax element in the current block is the sum of the value obtained by ORing the first syntax element and the second syntax element in the top adjacent block, and the value obtained by ORing the first syntax element and the second syntax element in the left adjacent block. 4. Способ по п.1 или 2, в котором, если количество моделей контекста в упомянутом заранее заданном наборе моделей контекста равно 2, значение индекса контекста первого элемента синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке; или4. The method according to claim 1 or 2, wherein if the number of context models in said predetermined set of context models is 2, the value of the context index of the first syntax element in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on the first syntax element and the second syntax element in the upper adjacent block, and a value obtained by performing an OR operation on the first syntax element and the second syntax element in the left adjacent block; or значение индекса контекста второго элемента синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке.the context index value of the second syntax element in the current block is the result obtained by performing the OR operation on the value obtained by performing the OR operation on the first syntax element and the second syntax element in the upper adjacent block, and the value obtained by performing the OR operation on the first syntax element and the second syntax element in the left adjacent box. 5. Способ по любому одному из пп.1-4, в котором первый элемент синтаксиса в текущем блоке - это флаг, используемый для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или второй элемент синтаксиса в текущем блоке – это флаг, используемый для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или5. The method according to any one of claims 1-4, wherein the first syntax element in the current block is a flag used to indicate whether the affine motion model-based merge mode is used for the current block, or the second syntax element in the current block is a flag used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or первый элемент синтаксиса в текущем блоке – это флаг, используемый для указания того, используется ли режим слияния на основе подблоков для текущего блока, или второй элемент синтаксиса в текущем блоке – это флаг, используемый для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; илиthe first syntax element in the current block is a flag used to indicate whether the subblock-based merge mode is used for the current block, or the second syntax element in the current block is a flag used to indicate whether the affine model-based AMVP mode is used movements for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or первый элемент синтаксиса в текущем блоке - это флаг, используемый для указания значения индекса списка кандидатов на слияние для текущего блока, или второй элемент синтаксиса в текущем блоке - это флаг, используемый для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; илиthe first syntax element in the current block is a flag used to indicate the index value of the merge candidate list for the current block, or the second syntax element in the current block is a flag used to indicate the index value of the affine merge candidate list for the current block; or первый элемент синтаксиса в текущем блоке - это флаг, используемый для указания значения индекса списка кандидатов на слияние для текущего блока, или второй элемент синтаксиса в текущем блоке – это флаг, используемый для указания значения индекса списка кандидатов на слияние на основе подблоков.the first syntax element in the current block is a flag used to indicate the index value of the merge candidate list for the current block, or the second syntax element in the current block is a flag used to indicate the index value of the sub-block-based merge candidate list. 6. Способ по п.1 или 2, в котором значение индекса контекста первого элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке получают следующим образом: определяют значение индекса контекста первого элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:6. The method according to claim 1 or 2, wherein the context index value of the first syntax element to be entropy decoded in the current block is obtained as follows: the context index value of the first syntax element to be entropy decoded in the current block is determined in accordance with the following logical expression: индекс контекста = (condL && availableL) + (condA && availableA), при этомcontext index = (condL && availableL) + (condA && availableA), while condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение первого элемента синтаксиса в левом соседнем блоке и элемент 2 синтаксиса [x0-1][y0] указывает значение второго элемента синтаксиса в левом соседнем блоке;condL = syntax element 1 [x0-1][y0] | syntax element 2 [x0-1][y0], where syntax element 1 [x0-1][y0] specifies the value of the first syntax element in the left adjacent box and syntax element 2 [x0-1][y0] specifies the value of the second syntax element in the left adjacent block; condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение первого элемента синтаксиса в верхнем соседнем блоке и элемент 2 синтаксиса [x0][y0-1] указывает значение второго элемента синтаксиса в верхнем соседнем блоке; иcondA = syntax element 1 [x0][y0-1] | syntax element 2 [x0][y0-1], where syntax element 1 [x0][y0-1] indicates the value of the first syntax element in the upper adjacent box and syntax element 2 [x0][y0-1] indicates the value of the second syntax element in the upper neighboring block; and availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок.availableL indicates whether the left neighbor is available, and availableA indicates whether the top neighbor is available. 7. Способ по п.1 или 2, в котором значение индекса контекста второго элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке получают следующим образом: определяют значение индекса контекста второго элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:7. The method according to claim 1 or 2, wherein the value of the context index of the second syntax element to be entropy decoded in the current block is obtained as follows: the value of the context index of the second syntax element to be entropy decoded in the current block is determined in accordance with the following logical expression: индекс контекста = (condL && availableL) + (condA && availableA), при этомcontext index = (condL && availableL) + (condA && availableA), while condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение первого элемента синтаксиса в левом соседнем блоке и элемент 2 синтаксиса [x0-1][y0] указывает значение второго элемента синтаксиса в левом соседнем блоке;condL = syntax element 1 [x0-1][y0] | syntax element 2 [x0-1][y0], where syntax element 1 [x0-1][y0] specifies the value of the first syntax element in the left adjacent box and syntax element 2 [x0-1][y0] specifies the value of the second syntax element in the left adjacent block; condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение первого элемента синтаксиса в верхнем соседнем блоке и элемент 2 синтаксиса [x0][y0-1] указывает значение второго элемента синтаксиса в верхнем соседнем блоке; иcondA = syntax element 1 [x0][y0-1] | syntax element 2 [x0][y0-1], where syntax element 1 [x0][y0-1] indicates the value of the first syntax element in the upper adjacent box and syntax element 2 [x0][y0-1] indicates the value of the second syntax element in the upper neighboring block; and availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок. availableL indicates whether the left neighbor is available, and availableA indicates whether the top neighbor is available. 8. Видеодекодер, содержащий:8. Video decoder, containing: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, при этом подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке содержит первый элемент синтаксиса в текущем блоке или второй элемент синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, при этом модель контекста, соответствующая первому элементу синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая второму элементу синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке, при этом модуль энтропийного декодирования дополнительно выполнен с возможностью: определять индекс контекста первого элемента синтаксиса в текущем блоке на основе первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке текущего блока, а также первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке текущего блока, при этом индекс контекста первого элемента синтаксиса в текущем блоке используется для указания модели контекста, соответствующей первому элементу синтаксиса в текущем блоке; или определять индекс контекста второго элемента синтаксиса в текущем блоке на основе первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке текущего блока, а также первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке текущего блока, при этом индекс контекста второго элемента синтаксиса в текущем блоке используется для указания модели контекста, соответствующей второму элементу синтаксиса в текущем блоке;an entropy decoding module configured to: parse the received bitstream to obtain an entropy decoded syntax element in the current block, wherein the entropy decoded syntax element in the current block contains a first syntax element in the current block or a second syntax element in the current block; obtain a context model corresponding to the syntax element to be entropy decoded, wherein the context model corresponding to the first syntax element in the current block is determined from a predefined set of context models, or the context model corresponding to the second syntax element in the current block is determined from this predefined set a set of context models; and perform entropy decoding on the syntax element to be entropy decoded based on the context model corresponding to the syntax element to be entropy decoded in the current block, wherein the entropy decoding module is further configured to: determine the context index of the first syntax element in the current block based on the first a syntax element and a second syntax element in the left adjacent block of the current block, as well as a first syntax element and a second syntax element in the top adjacent block of the current block, whereby the context index of the first syntax element in the current block is used to indicate the context model corresponding to the first syntax element in the current block; or determine the context index of the second syntax element in the current block based on the first syntax element and the second syntax element in the left adjacent block of the current block, as well as the first syntax element and the second syntax element in the upper neighboring block of the current block, while the context index of the second syntax element in the current block is used to indicate the context model corresponding to the second syntax element in the current block; модуль обработки предсказания, выполненный с возможностью выполнения обработки предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; иa prediction processing unit, configured to perform prediction processing on the current block based on the syntax element which is in the current block and which is obtained by entropy decoding to obtain a prediction block of the current block; and модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.a reconstruction module, configured to obtain a reconstructed image of the current block based on the prediction block of the current block. 9. Видеодекодер по п.8, при этом количество моделей контекста в упомянутом заранее заданном наборе моделей контекста равно 2, или 3, или 5.9. The video decoder of claim 8, wherein the number of context models in said predetermined set of context models is 2, or 3, or 5. 10. Видеодекодер по п.8 или 9, при этом, если количество моделей контекста в упомянутом заранее заданном наборе моделей контекста равно 3, значение индекса контекста первого элемента синтаксиса в текущем блоке представляет собой сумму значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке; или10. The video decoder according to claim 8 or 9, wherein if the number of context models in said predetermined set of context models is 3, the value of the context index of the first syntax element in the current block is the sum of the value obtained by performing the OR operation on the first element syntax and the second syntax element in the upper adjacent block, and the value obtained by performing an OR operation on the first syntax element and the second syntax element in the left neighboring block; or значение индекса контекста второго элемента синтаксиса в текущем блоке является суммой значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке.the value of the context index of the second syntax element in the current block is the sum of the value obtained by ORing the first syntax element and the second syntax element in the top neighboring block, and the value obtained by ORing the first syntax element and the second syntax element in left adjacent block. 11. Видеодекодер по п.8 или 9, при этом, если количество моделей контекста в упомянутом заранее заданном наборе моделей контекста равно 2, значение индекса контекста первого элемента синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке; или11. The video decoder according to claim 8 or 9, wherein if the number of context models in said predetermined set of context models is 2, the value of the context index of the first syntax element in the current block is the result obtained by performing an OR operation on the value obtained by performing an OR operation on the first syntax element and the second syntax element in the upper adjacent block, and a value obtained by performing an OR operation on the first syntax element and the second syntax element in the left adjacent block; or значение индекса контекста второго элемента синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении первого элемента синтаксиса и второго элемента синтаксиса в левом соседнем блоке.the context index value of the second syntax element in the current block is the result obtained by performing the OR operation on the value obtained by performing the OR operation on the first syntax element and the second syntax element in the upper adjacent block, and the value obtained by performing the OR operation on the first syntax element and the second syntax element in the left adjacent box. 12. Видеодекодер по любому одному из пп.8-11, при этом первый элемент синтаксиса в текущем блоке - это флаг, используемый для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или второй элемент синтаксиса в текущем блоке – это флаг, используемый для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или12. The video decoder according to any one of claims 8 to 11, wherein the first syntax element in the current block is a flag used to indicate whether the affine motion model-based merge mode is used for the current block, or the second syntax element in the current block is a flag used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or первый элемент синтаксиса в текущем блоке – это флаг, используемый для указания того, используется ли режим слияния на основе подблоков для текущего блока, или второй элемент синтаксиса в текущем блоке – это флаг, используемый для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; илиthe first syntax element in the current block is a flag used to indicate whether the subblock-based merge mode is used for the current block, or the second syntax element in the current block is a flag used to indicate whether the affine model-based AMVP mode is used movements for the current block when the slice in which the current block is located is a P-type slice or a B-type slice; or первый элемент синтаксиса в текущем блоке - это флаг, используемый для указания значения индекса списка кандидатов на слияние для текущего блока, или второй элемент синтаксиса в текущем блоке - это флаг, используемый для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; илиthe first syntax element in the current block is a flag used to indicate the index value of the merge candidate list for the current block, or the second syntax element in the current block is a flag used to indicate the index value of the affine merge candidate list for the current block; or первый элемент синтаксиса в текущем блоке - это флаг, используемый для указания значения индекса списка кандидатов на слияние для текущего блока, или второй элемент синтаксиса в текущем блоке – это флаг, используемый для указания значения индекса списка кандидатов на слияние на основе подблоков.the first syntax element in the current block is a flag used to indicate the index value of the merge candidate list for the current block, or the second syntax element in the current block is a flag used to indicate the index value of the sub-block-based merge candidate list. 13. Видеодекодер по п.8 или 9, при этом значение индекса контекста первого элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке получается следующим образом: определяется значение индекса контекста первого элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:13. The video decoder according to claim 8 or 9, wherein the context index value of the first syntax element to be entropy decoded in the current block is obtained as follows: the context index value of the first syntax element to be entropy decoded in the current block is determined in accordance with the following logical expression: индекс контекста = (condL && availableL) + (condA && availableA), при этомcontext index = (condL && availableL) + (condA && availableA), while condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение первого элемента синтаксиса в левом соседнем блоке и элемент 2 синтаксиса [x0-1][y0] указывает значение второго элемента синтаксиса в левом соседнем блоке;condL = syntax element 1 [x0-1][y0] | syntax element 2 [x0-1][y0], where syntax element 1 [x0-1][y0] specifies the value of the first syntax element in the left adjacent box and syntax element 2 [x0-1][y0] specifies the value of the second syntax element in the left adjacent block; condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение первого элемента синтаксиса в верхнем соседнем блоке и элемент 2 синтаксиса [x0][y0-1] указывает значение второго элемента синтаксиса в верхнем соседнем блоке; иcondA = syntax element 1 [x0][y0-1] | syntax element 2 [x0][y0-1], where syntax element 1 [x0][y0-1] indicates the value of the first syntax element in the upper adjacent box and syntax element 2 [x0][y0-1] indicates the value of the second syntax element in the upper neighboring block; and availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок.availableL indicates whether the left neighbor is available, and availableA indicates whether the top neighbor is available. 14. Видеодекодер по п.8 или 9, при этом значение индекса контекста второго элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке получается следующим образом: определяется значение индекса контекста второго элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:14. The video decoder according to claim 8 or 9, wherein the value of the context index of the second syntax element to be entropy decoded in the current block is obtained as follows: the value of the context index of the second syntax element to be entropy decoded in the current block is determined in accordance with the following logical expression: индекс контекста = (condL && availableL) + (condA && availableA), при этомcontext index = (condL && availableL) + (condA && availableA), while condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение первого элемента синтаксиса в левом соседнем блоке и элемент 2 синтаксиса [x0-1][y0] указывает значение второго элемента синтаксиса в левом соседнем блоке;condL = syntax element 1 [x0-1][y0] | syntax element 2 [x0-1][y0], where syntax element 1 [x0-1][y0] specifies the value of the first syntax element in the left adjacent box and syntax element 2 [x0-1][y0] specifies the value of the second syntax element in the left adjacent block; condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение первого элемента синтаксиса в верхнем соседнем блоке и элемент 2 синтаксиса [x0][y0-1] указывает значение второго элемента синтаксиса в верхнем соседнем блоке; иcondA = syntax element 1 [x0][y0-1] | syntax element 2 [x0][y0-1], where syntax element 1 [x0][y0-1] indicates the value of the first syntax element in the upper adjacent box and syntax element 2 [x0][y0-1] indicates the value of the second syntax element in the upper neighboring block; and availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок. availableL indicates whether the left neighbor is available, and availableA indicates whether the top neighbor is available. 15. Видеодекодер, содержащий исполнительную схему, сконфигурированную для выполнения способа по любому одному из пп.1-7.15. A video decoder comprising an execution circuit configured to perform the method according to any one of claims 1-7. 16. Видеодекодер, содержащий:16. Video decoder, containing: по меньшей мере один процессор иat least one processor and долговременный машиночитаемый носитель данных, связанный с по меньшей мере одним процессором, при этом долговременный машиночитаемый носитель данных хранит компьютерную программу, которая может исполняться по меньшей мере одним процессором, и когда компьютерная программа исполняется по меньшей мере одним процессором, обеспечивается выполнение видеодекодером способа по любому одному из пп.1-7.a durable computer-readable storage medium associated with at least one processor, wherein the durable computer-readable storage medium stores a computer program that can be executed by at least one processor, and when the computer program is executed by at least one processor, the video decoder executes the method according to any one from paragraphs 1-7. 17. Машиночитаемый носитель данных, приспособленный для хранения компьютерной программы, которая может исполняться по меньшей мере одним процессором, причем, когда компьютерная программа исполняется по меньшей мере одним процессором, выполняется способ по любому одному из пп.1-7.17. A computer-readable storage medium adapted to store a computer program that can be executed by at least one processor, wherein when the computer program is executed by at least one processor, the method of any one of claims 1-7 is executed.
RU2021109443A 2018-09-10 2019-09-10 Method for video decoding and video decoder RU2783337C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811053068.0 2018-09-10

Publications (2)

Publication Number Publication Date
RU2021109443A RU2021109443A (en) 2022-10-12
RU2783337C2 true RU2783337C2 (en) 2022-11-11

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2603531C2 (en) * 2012-04-13 2016-11-27 ДжиИ Видео Компрешн, ЭлЭлСи Low delay picture coding
EP3139616A1 (en) * 2012-05-29 2017-03-08 HFI Innovation Inc. Method and apparatus for coding of sample adaptive offset information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2603531C2 (en) * 2012-04-13 2016-11-27 ДжиИ Видео Компрешн, ЭлЭлСи Low delay picture coding
EP3139616A1 (en) * 2012-05-29 2017-03-08 HFI Innovation Inc. Method and apparatus for coding of sample adaptive offset information

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YANG H. et al. Draft text for affine motion compensation, THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16, JVET-K0565, 11. JVET MEETING, LJUBLJANA, 2018.07.11 - 2018.07.18. BROSS B. et al. WD4: Working Draft 4 of High-Efficiency Video Coding, JOINT COLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16, JCTVC-F803, 6. JCT-VC MEETING, TORINO, 2011.07.14 - 2011.07.22. *

Similar Documents

Publication Publication Date Title
CN112005551B (en) Video image prediction method and device
JP7279154B2 (en) Motion vector prediction method and apparatus based on affine motion model
JP7164710B2 (en) Video decoding method and video decoder
WO2020042630A1 (en) Video image prediction method and apparatus
AU2020261145B2 (en) Picture prediction method and apparatus, and computer-readable storage medium
CN115243049A (en) Video image decoding and encoding method and device
AU2024201357A1 (en) Picture prediction method and apparatus, and computer-readable storage medium
CN110944184B (en) Video decoding method and video decoder
WO2023092256A1 (en) Video encoding method and related apparatus therefor
CN110958452B (en) Video decoding method and video decoder
RU2783337C2 (en) Method for video decoding and video decoder
RU2787812C2 (en) Method and equipment for video image prediction
RU2778993C2 (en) Method and equipment for predicting video images
JP7507827B2 (en) Video decoding method and video decoder
CN111355961A (en) Method and device for inter-frame prediction