[go: up one dir, main page]

RU2783333C2 - Transmission of a motion vector predictor in service signals based on prediction subunits - Google Patents

Transmission of a motion vector predictor in service signals based on prediction subunits Download PDF

Info

Publication number
RU2783333C2
RU2783333C2 RU2020141568A RU2020141568A RU2783333C2 RU 2783333 C2 RU2783333 C2 RU 2783333C2 RU 2020141568 A RU2020141568 A RU 2020141568A RU 2020141568 A RU2020141568 A RU 2020141568A RU 2783333 C2 RU2783333 C2 RU 2783333C2
Authority
RU
Russia
Prior art keywords
prediction
motion
motion vector
level
list
Prior art date
Application number
RU2020141568A
Other languages
Russian (ru)
Other versions
RU2020141568A (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 RU2020141568A publication Critical patent/RU2020141568A/en
Application granted granted Critical
Publication of RU2783333C2 publication Critical patent/RU2783333C2/en

Links

Images

Abstract

FIELD: video data processing.
SUBSTANCE: group of inventions relates to technology for encoding/decoding video data. Proposed is a method for decoding video data. The method includes a stage of receiving encoded video data. The motion flag is then syntactically analysed based on prediction subunits from the encoded video data. In response to determining that the motion flag based on prediction subunits is active, a list of motion prediction candidates at the level of prediction subunits is extracted. In response to determining the motion flag based on prediction subunits is not active, a list of motion prediction candidates at the level of prediction units is extracted. The list of motion prediction candidates at the level of prediction subunits or the list of motion prediction candidates at the level of prediction units is therein at least partially ordered based on motion prediction occurrences in the adjacent blocks. The encoded video data are also decoded using the selected motion vector predictor.
EFFECT: increase in the efficiency of decoding video data.
26 cl, 13 dwg, 4 tbl

Description

[0001] Данная заявка испрашивает приоритет непредварительной заявки на патент США №: 16/443113, поданной 17 июня 2019 года, которая испрашивает приоритет предварительной заявки на патент США № 62/687052, поданной 19 июня 2018 года, содержимое которой полностью содержится по ссылке в данном документе.[0001] This application claims priority of U.S. Non-Provisional Application No: 16/443113, filed June 17, 2019, which claims priority of U.S. Provisional Application No. 62/687,052, filed June 19, 2018, the contents of which are referenced in their entirety in this document.

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

[0002] Данное раскрытие сущности относится к кодированию видео и декодированию видео.[0002] This disclosure relates to video coding and video decoding.

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

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

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

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

[0005] В общем, данное раскрытие сущности относится к предсказанию векторов движения в видеокодеках. Например, предиктор вектора движения выбирается адаптивно из двух списков кандидатов предсказания векторов движения, которые извлекаются.

Figure 00000001
Первый список включает в себя кандидатов предсказания векторов движения на уровне PU, второй список включает в себя кандидатов предсказания векторов движения на уровне суб-PU.[0005] In general, this disclosure relates to motion vector prediction in video codecs. For example, a motion vector predictor is selected adaptively from two lists of motion vector prediction candidates that are extracted.
Figure 00000001
The first list includes motion vector prediction candidates at the PU level, the second list includes motion vector prediction candidates at the sub-PU level.

[0006] В одном примерном варианте осуществления, обсуждается способ декодирования видеоданных. Способ включает в себя прием кодированных видеоданных, синтаксический анализ флага движения на основе субъединиц предсказания из кодированных видеоданных, в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлечение списка кандидатов предсказания движения на уровне субъединиц предсказания, в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлечение списка кандидатов предсказания движения на уровне единиц предсказания, выбор предиктора вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания и декодирование кодированных видеоданных с использованием выбранного предиктора вектора движения. Кодированные видеоданные включают в себя текущий блок, и при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока. Соседние блоки представляют собой пространственных соседей упомянутого текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке. Список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках. Пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения. Список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты. Список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD). Способ включает в себя извлечение индекса кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.[0006] In one exemplary embodiment, a method for decoding video data is discussed. The method includes receiving encoded video data, parsing a motion flag based on prediction subunits from the encoded video data, in response to determining that the motion flag based on prediction subunits is active, extracting a list of motion prediction candidates at the level of prediction subunits, in response to determining, that the prediction sub-unit-level motion flag is not active, extract the prediction unit-level motion prediction candidate list, select the motion vector predictor from either the prediction sub-unit level motion prediction candidate list or the prediction unit-level motion prediction candidate list, and decode the encoded video data using the selected motion vector predictor. The encoded video data includes the current block, and wherein the motion prediction candidate list at the prediction subunit level and the motion prediction candidate list at the prediction unit level are derived from adjacent blocks of the current block. Neighbor blocks are spatial neighbors of said current block in the current picture, or temporal neighbors of the current block in a previously encoded picture. The motion prediction candidate list at the prediction subunit level or the motion prediction candidate list at the prediction unit level is at least partially ordered based on motion prediction occurrences in neighboring blocks. The pixels in the prediction unit share the first motion vector information and the pixels in the prediction subunit share the second motion vector information, the first motion vector information or the second vector information being determined from the selected motion vector predictor. The motion vector candidate list at the prediction unit level includes at least one of the following: spatial neighbor candidates and temporal neighbor candidates. The list of motion prediction candidates at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP), planar motion vector prediction, and motion vector extraction based on pattern matching (PMVD). The method includes deriving a merge candidate index in response to determining that a motion flag based on prediction subunits is active, wherein the merge candidate index indicates a motion vector predictor to be selected.

[0007] В другом примерном варианте осуществления, поясняется оборудование для декодирования видеоданных. Оборудование включает в себя запоминающее устройство для сохранения принимаемых кодированных видеоданных и процессор. Процессор выполнен с возможностью синтаксически анализировать флаг движения на основе субъединиц предсказания из кодированных видеоданных, в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлекать список кандидатов предсказания движения на уровне субъединиц предсказания, в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлекать список кандидатов предсказания движения на уровне единиц предсказания, выбирать предиктор вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания и декодировать кодированные видеоданные с использованием выбранного предиктора вектора движения. Кодированные видеоданные включают в себя текущий блок, при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока. Соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке. Список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках. Пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения. Список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты. Список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD). Процессор дополнительно выполнен с возможностью извлекать индекс кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.[0007] In another exemplary embodiment, equipment for decoding video data is explained. The equipment includes a storage device for storing received encoded video data and a processor. The processor is configured to parse the motion flag based on the prediction subunits from the encoded video data, responsive to determining that the motion flag based on the prediction subunits is active, extract the list of motion prediction candidates at the prediction subunit level, responsive to determining that the motion flag is on is not active, extract a list of motion prediction candidates at the prediction unit level, select a motion vector predictor from either the list of motion prediction candidates at the prediction subunit level or from the list of motion prediction candidates at the prediction unit level, and decode the encoded video data using the selected predictor. motion vector. The encoded video data includes the current block, wherein the motion prediction candidate list at the prediction subunit level and the motion prediction candidate list at the prediction unit level are derived from neighboring blocks of the current block. Neighbor blocks are spatial neighbors of the current block in the current picture, or temporal neighbors of the current block in a previously encoded picture. The motion prediction candidate list at the prediction subunit level or the motion prediction candidate list at the prediction unit level is at least partially ordered based on motion prediction occurrences in neighboring blocks. The pixels in the prediction unit share the first motion vector information and the pixels in the prediction subunit share the second motion vector information, the first motion vector information or the second vector information being determined from the selected motion vector predictor. The motion vector candidate list at the prediction unit level includes at least one of the following: spatial neighbor candidates and temporal neighbor candidates. The list of motion prediction candidates at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP), planar motion vector prediction, and motion vector extraction based on pattern matching (PMVD). The processor is further configured to extract a merge candidate index in response to determining that a motion flag based on prediction subunits is active, wherein the merge candidate index indicates a motion vector predictor to be selected.

[0008] В другом примерном варианте осуществления, поясняется оборудование для декодирования видеоданных. Оборудование включает в себя средство запоминающего устройства для сохранения принимаемых кодированных видеоданных и средство процессора. Средство процессора выполнено с возможностью синтаксически анализировать флаг движения на основе субъединиц предсказания из кодированных видеоданных, в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлекать список кандидатов предсказания движения на уровне субъединиц предсказания, в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлекать список кандидатов предсказания движения на уровне единиц предсказания, выбирать предиктор вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания и декодировать кодированные видеоданные с использованием выбранного предиктора вектора движения. Кодированные видеоданные включают в себя текущий блок, при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока. Соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке. Список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках. Пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения. Список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты. Список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD). Средство процессора дополнительно выполнено с возможностью извлекать индекс кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.[0008] In another exemplary embodiment, equipment for decoding video data is explained. The equipment includes a memory means for storing received encoded video data and a processor means. The processor means is configured to parse a motion flag based on the prediction subunits from the encoded video data, in response to determining that the motion flag based on the prediction subunits is active, extract a list of motion prediction candidates at the level of the prediction subunits, in response to determining that the motion flag is is not active, extract a list of motion prediction candidates at the prediction unit level, select a motion vector predictor from either the list of motion prediction candidates at the prediction subunit level or from the list of motion prediction candidates at the prediction unit level, and decode the encoded video data using the selected motion vector predictor. The encoded video data includes the current block, wherein the motion prediction candidate list at the prediction subunit level and the motion prediction candidate list at the prediction unit level are derived from neighboring blocks of the current block. Neighbor blocks are spatial neighbors of the current block in the current picture, or temporal neighbors of the current block in a previously encoded picture. The motion prediction candidate list at the prediction subunit level or the motion prediction candidate list at the prediction unit level is at least partially ordered based on motion prediction occurrences in neighboring blocks. The pixels in the prediction unit share the first motion vector information and the pixels in the prediction subunit share the second motion vector information, the first motion vector information or the second vector information being determined from the selected motion vector predictor. The motion vector candidate list at the prediction unit level includes at least one of the following: spatial neighbor candidates and temporal neighbor candidates. The list of motion prediction candidates at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP), planar motion vector prediction, and motion vector extraction based on pattern matching (PMVD). The processor means is further configured to extract the merge candidate index in response to determining that the motion flag based on the prediction subunits is active, wherein the merge candidate index indicates the motion vector predictor to be selected.

[0009] В другом примерном варианте осуществления, энергонезависимый машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют одному или более процессоров осуществлять способ. Способ включает в себя прием кодированных видеоданных, синтаксический анализ флага движения на основе субъединиц предсказания из кодированных видеоданных, в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлечение списка кандидатов предсказания движения на уровне субъединиц предсказания, в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлечение списка кандидатов предсказания движения на уровне единиц предсказания, выбор предиктора вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания и декодирование кодированных видеоданных с использованием выбранного предиктора вектора движения. Кодированные видеоданные включают в себя текущий блок, при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока. Соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке. Список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках. Пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения. Список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты. Список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD). Способ включает в себя извлечение индекса кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.[0009] In another exemplary embodiment, a non-volatile computer-readable storage medium having stored instructions that, when executed, instructs one or more processors to perform a method. The method includes receiving encoded video data, parsing a motion flag based on prediction subunits from the encoded video data, in response to determining that the motion flag based on prediction subunits is active, extracting a list of motion prediction candidates at the level of prediction subunits, in response to determining, that the prediction sub-unit-level motion flag is not active, extract the prediction unit-level motion prediction candidate list, select the motion vector predictor from either the prediction sub-unit level motion prediction candidate list or the prediction unit-level motion prediction candidate list, and decode the encoded video data using the selected motion vector predictor. The encoded video data includes the current block, wherein the motion prediction candidate list at the prediction subunit level and the motion prediction candidate list at the prediction unit level are derived from neighboring blocks of the current block. Neighbor blocks are spatial neighbors of the current block in the current picture, or temporal neighbors of the current block in a previously encoded picture. The motion prediction candidate list at the prediction subunit level or the motion prediction candidate list at the prediction unit level is at least partially ordered based on motion prediction occurrences in neighboring blocks. The pixels in the prediction unit share the first motion vector information and the pixels in the prediction subunit share the second motion vector information, the first motion vector information or the second vector information being determined from the selected motion vector predictor. The motion vector candidate list at the prediction unit level includes at least one of the following: spatial neighbor candidates and temporal neighbor candidates. The list of motion prediction candidates at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP), planar motion vector prediction, and motion vector extraction based on pattern matching (PMVD). The method includes deriving a merge candidate index in response to determining that a motion flag based on prediction subunits is active, wherein the merge candidate index indicates a motion vector predictor to be selected.

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

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

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

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

[0013] Фиг. 3 является блок-схемой последовательности операций способа, иллюстрирующей извлечение предикторов векторов движения.[0013] FIG. 3 is a flowchart illustrating the extraction of motion vector predictors.

[0014] Фиг. 4 является концептуальной схемой, иллюстрирующей пространственные соседние кандидаты векторов движения для режима слияния.[0014] FIG. 4 is a conceptual diagram illustrating spatial neighbor motion vector candidates for the merge mode.

[0015] Фиг. 5 является концептуальной схемой, иллюстрирующей временные кандидаты векторов движения.[0015] FIG. 5 is a conceptual diagram illustrating temporal motion vector candidates.

[0016] Фиг. 6 иллюстрирует технологии выбора блоков кандидатов векторов движения.[0016] FIG. 6 illustrates motion vector candidate block selection techniques.

[0017] Фиг. 7 является концептуальной схемой, иллюстрирующей пространственно-временное предсказание векторов движения (STMVP).[0017] FIG. 7 is a conceptual diagram illustrating Space Time Motion Vector Prediction (STMVP).

[0018] Фиг. 8 является концептуальной схемой, иллюстрирующей технологии билатерального сопоставления.[0018] FIG. 8 is a conceptual diagram illustrating bilateral matching technologies.

[0019] Фиг. 9 является концептуальной схемой, иллюстрирующей технологии сопоставления с эталоном.[0019] FIG. 9 is a conceptual diagram illustrating pattern matching technologies.

[0020] Фиг. 10 является концептуальной схемой, иллюстрирующей планарное предсказание векторов движения.[0020] FIG. 10 is a conceptual diagram illustrating planar motion vector prediction.

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

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

Подробное описание изобретенияDetailed description of the invention

[0023] Это раскрытие сущности относится к извлечению векторов движения на стороне декодера (DMVD). Технологии извлечения векторов движения на стороне декодера, описанные в этом раскрытии сущности, могут использоваться в сочетании с любым из существующих видеокодеков, таких как HEVC (стандарт высокоэффективного кодирования видео), либо могут использоваться в качестве технологий кодирования для любых будущих стандартов кодирования видео, таких как универсальное кодирование видео (VVC) H.266 и фундаментальное кодирование видео (EVC).[0023] This disclosure relates to decoder-side motion vector extraction (DMVD). The decoder side motion vector extraction techniques described in this disclosure may be used in conjunction with any of the existing video codecs such as HEVC (High Efficiency Video Coding Standard) or may be used as coding techniques for any future video coding standards such as H.266 Universal Video Coding (VVC) and Fundamental Video Coding (EVC).

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

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

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

[0027] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для извлечения векторов движения на стороне декодера. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие сущности упоминает устройство "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, устройства 102, 116 могут работать практически симметрично, так что каждое из устройств 102, 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 102, 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.[0027] System 100, as shown in FIG. 1 is just one example. In general, any digital video encoding and/or decoding device may perform techniques for extracting motion vectors on the decoder side. Source device 102 and destination device 116 are merely examples of such encoders, in which source device 102 generates encoded video data for transmission to destination device 116. This disclosure refers to an "encoder" as the device that performs the encoding (encoding and/or decoding) data. Thus, video encoder 200 and video decoder 300 represent examples of encoding devices, specifically a video encoder and a video decoder, respectively. In some examples, devices 102, 116 may operate substantially symmetrically such that each of devices 102, 116 includes video encoding and decoding components. Therefore, system 100 can support one-way and two-way video transmission between video devices 102, 116, such as for video streaming, video playback, video broadcast, or video telephony.

[0028] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию картинок (также называемых кадрами) видеоданных в видеокодер 200, который кодирует данные для картинок. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или машиногенерируемые видеоданные. Видеокодер 200 может перекомпоновывать картинки из принимаемого порядка (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на машиночитаемый носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.[0028] In general, video source 104 represents a source of video data (ie, raw, uncoded video data) and provides a sequential series of pictures (also referred to as frames) of video data to video encoder 200, which encodes the data for the pictures. Video source 104 of source device 102 may include a video capture device such as a video camera, a video archive containing previously captured raw video, and/or a live video interface to receive video from a video content provider. As a further alternative, video source 104 may generate computer graphics data as source video, or a combination of live video, archived video, and computer-generated video. In each case, video encoder 200 encodes captured, pre-captured, or machine-generated video data. Video encoder 200 may re-arrange pictures from received order (sometimes referred to as "display order") to encoding order for encoding. Video encoder 200 may generate a bit stream including encoded video data. Source device 102 may then output the encoded video data via output interface 108 to computer-readable media 110 for reception and/or retrieval, such as via input interface 122 of target device 116.

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

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

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

[0032] В некоторых примерах, исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, DSL, кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.[0032] In some examples, source device 102 may output encoded video data to file server 114 or other intermediate storage device that may store encoded video generated by source device 102. Target device 116 may access stored video data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded video data and transmitting that encoded video data to target device 116. File server 114 may be a web server (e.g. for a web site), file transfer protocol (FTP) server, , a networked content delivery device, or a Network Attached Storage System (NAS) protocol device. The target device 116 may access the encoded video data from the file server 114 via any standard data connection, including an Internet connection. It may include a wireless link (eg, Wi-Fi connection), a wired connection (eg, DSL, cable modem, etc.), or a combination thereof that is appropriate for accessing encoded video data stored on a file server. 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download-based transfer protocol, or a combination of the above.

[0033] Интерфейс 108 вывода и интерфейс 122 ввода могут представлять беспроводные передающие устройства/приемные устройства, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, которые работают согласно любым из множества IEEE 802.11-стандартов, либо другие физические компоненты. В примерах, в которых интерфейс 108 вывода и интерфейс 122 ввода содержат беспроводные компоненты, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно стандарту сотовой связи, такому как 4G, 4G LTE (стандарт долгосрочного развития), усовершенствованный стандарт LTE, 5G и т.п. В некоторых примерах, в которых интерфейс 108 вывода содержит беспроводное передающее устройство, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно другим стандартам беспроводной связи, таким как IEEE 802.11-спецификация, IEEE 802.15-спецификация (например, ZigBee™), стандарт Bluetooth™ и т.п. В некоторых примерах, исходное устройство 102 и/или целевое устройство 116 могут включать в себя соответствующие внутримикросхемные (SoC) устройства. Например, исходное устройство 102 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеокодеру 200 и/или интерфейсу 108 вывода, и целевое устройство 116 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеодекодеру 300 и/или интерфейсу 122 ввода.[0033] Output interface 108 and input interface 122 may represent wireless transmitter/receiver devices, modems, wired network components (eg, Ethernet cards), wireless communication components that operate according to any of a variety of IEEE 802.11 standards, or other physical Components. In examples in which the output interface 108 and the input interface 122 comprise wireless components, the output interface 108 and the input interface 122 may be configured to transmit data such as encoded video data according to a cellular communication standard such as 4G, 4G LTE (standard long-term development), advanced LTE, 5G, etc. In some examples, in which the output interface 108 comprises a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, according to other wireless communication standards such as the IEEE 802.11 specification, IEEE 802.15 - specification (eg ZigBee™), Bluetooth™ standard, etc. In some examples, source device 102 and/or target device 116 may include respective on-chip (SoC) devices. For example, source device 102 may include an SoC device to perform functionality attributed to video encoder 200 and/or output interface 108, and target device 116 may include an SoC device to perform functionality attributed to video decoder 300 and/or interface 122 entries.

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

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

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

[0037] Видеокодер 200 и видеодекодер 300 могут реализовываться как любая из множества надлежащих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), как дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо как любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 200 и видеодекодера 300 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 200 и/или видеодекодер 300, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.[0037] Video encoder 200 and video decoder 300 may be implemented as any of a variety of suitable encoder and/or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays ( FPGA) as discrete logic, software, hardware, firmware, or any combination of the above. When the technologies are implemented in part in software, a device may store instructions for the software on a suitable non-volatile computer-readable medium and execute the instructions in hardware using one or more processors to implement the technologies of this disclosure. Each of video encoder 200 and video decoder 300 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (codec) in a respective device. The device including video encoder 200 and/or video decoder 300 may include an integrated circuit, a microprocessor, and/or a wireless communication device such as a cellular phone.

[0038] Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC).[0038] Video coding standards include ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG -4 Visual and ITU-T H.264 (also known as ISO/IEC MPEG-4 AVC), which includes Scalable Video Coding (SVC) and Multi-View Video Coding (MVC) extensions.

[0039] Новый стандарт кодирования видео, а именно стандарт высокоэффективного кодирования видео (HEVC) или ITU-T H.265, в том числе его расширение диапазона, многовидовое расширение (MV-HEVC) и масштабируемое расширение (SHVC), разработан посредством Объединенной группы для совместной работы над видеостандартами (JCT-VC), а также Объединенной группы для совместной работы над расширениями кодирования трехмерного видео (JCT-3V) Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC.[0039] A new video coding standard, namely the High Efficiency Video Coding (HEVC) or ITU-T H.265 standard, including its range extension, multi-view extension (MV-HEVC) and scalable extension (SHVC), is developed through the Joint Group Joint Working Group on Video Standards (JCT-VC), and the Joint Working Group on 3D Video Coding Extensions (JCT-3V) of the Video Coding Expert Group (VCEG) of ITU-T and the Motion Picture Expert Group (MPEG) of ISO/ IEC.

[0040] ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) теперь изучают потенциальную потребность в стандартизации будущей технологии кодирования видео с возможностями сжатия, которые превышают возможности сжатия текущего HEVC-стандарта (в том числе его текущих расширений и ближнесрочных расширений для кодирования экранного контента и кодирования с расширенным динамическим диапазоном). Группы совместно проводят эти изыскания объединенными коллективными усилиями, известными как Объединенная группа для исследования видео (JVET), чтобы оценивать проектные решения по технологиям сжатия, предлагаемые их экспертами в этой области. JVET в первый раз провела встречу 19-21 октября 2015 года. Кроме того, последняя версия эталонного программного обеспечения, т.е. стандарт объединенной исследовательской группы тестовой модели 7 (JEM7) может загружаться по адресу:[0040] ITU-T VCEG (Q6/16) and ISO/IEC MPEG (JTC 1/SC 29/WG 11) are now exploring the potential need to standardize a future video coding technology with compression capabilities that exceed the compression capabilities of the current HEVC standard ( including its current extensions and near-term extensions for screen content coding and high dynamic range coding). The groups jointly conduct these studies in a collaborative collective effort known as the Joint Video Research Team (JVET) to evaluate compression technology design solutions proposed by their experts in the field. JVET held its first meeting on October 19-21, 2015. In addition, the latest version of the reference software, ie. The Joint Research Group Test Model 7 (JEM7) standard can be downloaded at:

https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-57.0/https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-57.0/

Описание алгоритма стандарта объединенной исследовательской группы тестовой модели 7 (JEM7) может упоминаться как "JVET-G1001".The algorithm description of the Joint Research Group Test Model 7 (JEM7) standard may be referred to as "JVET-G1001".

[0041] Видеокодер 200 и видеодекодер 300 могут работать согласно стандарту кодирования видео, такому как ITU-T H.265, также называемому "стандартом высокоэффективного кодирования видео (HEVC)", либо его расширениям, таким как расширения кодирования многовидового видео и/или масштабируемого кодирования видео. Альтернативно, видеокодер 200 и видеодекодер 300 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт объединенной исследовательской группы тестовой модели (JEM) или ITU-T H.266, также называемый "универсальным кодированием видео (VVC)". Недавний проект стандарта VVC описывается в работе авторов Bross и др. "Versatile Video Coding (Draft 3)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13 конференция: Марракеш, MA, 9-18 января 2019 года, JVET-M1001-v3 (далее "VVC-проект 4"). Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования.[0041] Video encoder 200 and video decoder 300 may operate according to a video coding standard such as ITU-T H.265, also referred to as the "High Efficiency Video Coding (HEVC) standard", or extensions thereof, such as multi-view and/or scalable video coding extensions. video encoding. Alternatively, video encoder 200 and video decoder 300 may operate according to other proprietary or industry standards, such as the Joint Research Establishment Test Model (JEM) standard or ITU-T H.266, also referred to as "Versatile Video Coding (VVC)". A recent draft VVC standard is described in Bross et al. "Versatile Video Coding (Draft 3)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Conference: Marrakesh, MA, January 9-18, 2019, JVET-M1001-v3 (hereinafter referred to as "VVC Project 4"). However, the techniques of this disclosure are not limited to any particular coding standard.

Как пояснено видеодекодер 300 может быть выполнен с возможностью выполнять одну или более технологий этого раскрытия сущности. Например, видеодекодер 300 может синтаксически анализировать флаг движения на основе субъединиц предсказания из принимаемых кодированных видеоданных, извлекать список кандидатов предсказания движения на уровне субъединиц предсказания, если флаг движения на основе субъединиц предсказания является активным, извлекать список кандидатов предсказания движения на уровне единиц предсказания, если флаг движения на основе субъединиц предсказания не является активным, и декодировать кодированные видеоданные с использованием выбранного предиктора вектора движения.As explained, video decoder 300 may be configured to perform one or more of the techniques of this disclosure. For example, video decoder 300 may parse a motion flag based on prediction subunits from the received encoded video data, extract a list of motion prediction candidates at the prediction subunit level if the motion flag based on prediction subunits is active, extract a list of motion prediction candidates at the prediction subunit level if the flag motion based prediction subunit is not active, and decode the encoded video data using the selected motion vector predictor.

[0042] В общем, видеокодер 200 и видеодекодер 300 могут выполнять кодирование картинок на основе блоков. Термин "блок", в общем, означает структуру, включающую в себя данные, которые должны обрабатываться (например, кодироваться, декодироваться или иным образом использоваться в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, видеокодер 200 и видеодекодер 300 могут кодировать видеоданные, представленные в YUV- (например, Y, Cb, Cr) формате. Таким образом, вместо кодирования данных красного цвета, зеленого цвета и синего цвета (RGB) для выборок картинки, видеокодер 200 и видеодекодер 300 могут кодировать компоненты яркости и цветности, при этом компоненты цветности могут включать в себя компоненты цветности оттенков красного цвета и оттенков синего цвета. В некоторых примерах, видеокодер 200 преобразует принимаемые RGB-отформатированные данные в YUV-представление до кодирования, и видеодекодер 300 преобразует YUV-представление в RGB-формат. Альтернативно, модули предварительной и постобработки (не показаны) могут выполнять эти преобразования.[0042] In general, video encoder 200 and video decoder 300 may perform block-based picture coding. The term "block" generally means a structure including data to be processed (eg, encoded, decoded, or otherwise used in an encoding and/or decoding process). For example, the block may include a two-dimensional matrix of luma and/or chrominance data samples. In general, video encoder 200 and video decoder 300 may encode video data represented in YUV- (eg, Y, Cb, Cr) format. Thus, instead of encoding the red, green, and blue (RGB) color data for the picture samples, video encoder 200 and video decoder 300 may encode luma and chroma components, where the chroma components may include red hue and blue hue chrominance components. . In some examples, video encoder 200 converts received RGB-formatted data to YUV prior to encoding, and video decoder 300 converts YUV to RGB. Alternatively, pre- and post-processing modules (not shown) can perform these transformations.

[0043] Это раскрытие сущности, в общем, может означать кодирование (например, кодирование и декодирование) картинок, которое включает в себя процесс кодирования или декодирования данных картинки. Аналогично, это раскрытие сущности может означать кодирование блоков картинки, которое включает в себя процесс кодирования или декодирования данных для блоков, например, предсказание и/или остаточное кодирование. Кодированный битовый поток видео, в общем, включает в себя последовательность значений для синтаксических элементов, представляющих решения по кодированию (например, режимы кодирования) и сегментацию картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, должны пониматься как кодирование значений для синтаксических элементов, формирующих картинку или блок.[0043] This disclosure may generally mean encoding (eg, encoding and decoding) of pictures, which includes the process of encoding or decoding picture data. Likewise, this disclosure may refer to picture block coding, which includes the process of encoding or decoding data for blocks, such as prediction and/or residual coding. An encoded video bitstream generally includes a sequence of values for syntax elements representing encoding decisions (eg, encoding modes) and segmentation of pictures into blocks. Thus, references to encoding a picture or block are generally to be understood as encoding values for the syntax elements that form the picture or block.

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

[0045] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (к примеру, видеокодер 200) сегментирует картинку на множество единиц дерева кодирования (CTU). Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT). QTBT-структура удаляет понятия нескольких типов сегментации, к примеру, разделение между CU, PU и TU HEVC. QTBT-структура JEM включает в себя два уровня: первый уровень, сегментированный согласно сегментации на дерево квадрантов, и второй уровень, сегментированный согласно сегментации на двоичное дерево. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).[0045] As another example, video encoder 200 and video decoder 300 may be configured to operate according to JEM or VVC. According to JEM or VVC, a video encoder (eg, video encoder 200) segments a picture into multiple coding tree units (CTUs). Video encoder 200 may segment the CTU according to a tree structure, such as a quadtree binary tree (QTBT) structure. The QTBT framework removes the concepts of several types of segmentation, such as the division between CUs, PUs, and HEVC TUs. The JEM QTBT structure includes two levels: a first level segmented according to quadtree segmentation and a second level segmented according to binary tree segmentation. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of binary trees correspond to coding units (CUs).

[0046] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT). Сегмент троичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного дерева разделяет блок на три субблока без разделения исходного блока через центр. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.[0046] In an MTT segmentation structure, blocks may be segmented using a quadtree segment (QT), a binary tree segment (BT), and one or more types of ternary tree segments (TT). A ternary tree segment is a segment in which a block is split into three subblocks. In some examples, a ternary tree segment divides a block into three subblocks without splitting the original block through the center. Segmentation types in MTT (eg, QT, BT, and TT) can be symmetrical or asymmetric.

[0047] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут использовать одну QTBT- или MTT-структуру для того, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, видеокодер 200 и видеодекодер 300 могут использовать две или более QTBT- или MTT-структуры, к примеру, одну QTBT/MTT-структуру для компонента яркости и другую QTBT- или MTT-структуру для обоих компонентов цветности (либо две QTBT/MTT-структуры для соответствующих компонентов цветности).[0047] In some examples, video encoder 200 and video decoder 300 may use a single QTBT or MTT structure to represent each of the luminance and chrominance components, while in other examples, video encoder 200 and video decoder 300 may use two or more than a QTBT or MTT structure, eg one QTBT/MTT structure for the luminance component and another QTBT or MTT structure for both chrominance components (or two QTBT/MTT structures for the respective chrominance components).

[0048] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать сегментацию на дерево квадрантов согласно HEVC, QTBT-сегментации или MTT-сегментации либо другим структурам сегментации. Для целей пояснения, описание технологий этого раскрытия сущности представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия сущности также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на дерево квадрантов или другие типы сегментации.[0048] Video encoder 200 and video decoder 300 may be configured to use quadtree segmentation according to HEVC, QTBT segmentation, or MTT segmentation, or other segmentation structures. For purposes of explanation, the description of the technologies of this disclosure is provided in relation to QTBT segmentation. However, it should be understood that the techniques of this disclosure may also be applied to video encoders configured to also use quadtree segmentation or other types of segmentation.

[0049] Это раскрытие сущности может использовать "NxN" и "N на N" взаимозаменяемо, чтобы ссылаться на размеры в выборках блока (к примеру, CU или другого видеоблока) с точки зрения размеров по вертикали и горизонтали, например, на выборки 16×16 или выборки 16 на 16. В общем, CU 16×16 должна иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, CU NxN, в общем, имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Выборки в CU могут размещаться в строках и столбцах. Кроме того, CU не обязательно должны иметь идентичное число выборок в горизонтальном направлении и в вертикальном направлении. Например, CU могут содержать NxM выборок, причем M не обязательно равно N.[0049] This disclosure may use "NxN" and "N by N" interchangeably to refer to sizes in samples of a block (e.g., CU or other video block) in terms of vertical and horizontal dimensions, e.g., 16x samples 16 or 16 by 16 samples. In general, a 16×16 CU should have 16 pixels in the vertical direction (y=16) and 16 pixels in the horizontal direction (x=16). Similarly, an NxN CU generally has N samples in the vertical direction and N samples in the horizontal direction, with N representing a non-negative integer value. Samples in a CU can be placed in rows and columns. In addition, CUs do not need to have the same number of samples in the horizontal direction and in the vertical direction. For example, CUs may contain NxM samples, with M not necessarily equal to N.

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

[0051] Чтобы предсказывать CU, видеокодер 200, в общем, может формировать блок предсказания для CU через взаимное предсказание или внутреннее предсказание. Взаимное предсказание, в общем, означает предсказание CU из данных ранее кодированного картинки , тогда как внутреннее предсказание, в общем, означает предсказание CU из ранее кодированных данных идентичного картинки . Чтобы выполнять взаимное предсказание, видеокодер 200 может формировать блок предсказания с использованием одного или более векторов движения. Видеокодер 200, в общем, может выполнять поиск движения, чтобы идентифицировать опорный блок, который тесно совпадает с CU, например, с точки зрения разностей между CU и опорным блоком. Видеокодер 200 может вычислять разностный показатель с использованием суммы абсолютных разностей (SAD), суммы квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратических разностей (MSD) или других таких вычислений разности, чтобы определять то, совпадает или нет опорный блок тесно с текущей CU. В некоторых примерах, видеокодер 200 может предсказывать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.[0051] To predict the CU, video encoder 200 may generally generate a prediction block for the CU via inter prediction or intra prediction. Mutual prediction generally means predicting a CU from previously encoded picture data, while intra prediction generally means predicting a CU from previously encoded identical picture data. To perform inter prediction, video encoder 200 may generate a prediction block using one or more motion vectors. Video encoder 200 may generally perform a motion search to identify a reference block that closely matches the CU, eg, in terms of differences between the CU and the reference block. Video encoder 200 may compute a difference metric using sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute differences (MAD), root mean square differences (MSD), or other such difference calculations to determine whether or not a reference block closely matches. with the current CU. In some examples, video encoder 200 may predict the current CU using unidirectional prediction or bidirectional prediction.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0066] Корневой узел QTBT-структуры, соответствующей CTU, может иметь четыре дочерних узла на первом уровне QTBT-структуры, каждый из которых может сегментироваться согласно сегментации на дерево квадрантов. Таким образом, узлы первого уровня либо представляют собой узлы-листья (имеющие дочерние узлы), либо имеют четыре дочерних узла. Пример QTBT-структуры 130 представляет такие узлы как включающие в себя родительский узел и дочерний узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не превышают максимальный разрешенный размер корневых узлов двоичного дерева (MaxBTSize), они дополнительно могут сегментироваться посредством соответствующих двоичных деревьев. Разбиение на двоичное дерево одного узла может обрабатываться с помощью итераций до тех пор, пока узлы, получающиеся в результате разбиения, не достигают минимального разрешенного размера узлов-листьев двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример QTBT-структуры 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Узел-лист двоичного дерева называется "единицей кодирования (CU)", которая используется для предсказания (например, внутрикартинокого или межкартинокого предсказания) и преобразования, без дальнейшей сегментации. Как пояснено выше, CU также могут называться "видеоблоками" или "блоками".[0066] The root node of the QTBT structure corresponding to the CTU may have four child nodes at the first level of the QTBT structure, each of which may be segmented according to segmentation into a quadtree. Thus, first-level nodes are either leaf nodes (having child nodes) or have four child nodes. An example QTBT structure 130 represents such nodes as including a parent node and child nodes having solid lines for branches. If the nodes of the first level do not exceed the maximum allowed size of the root nodes of the binary tree (MaxBTSize), they can additionally be segmented by the corresponding binary trees. Splitting into a binary tree of a single node can be iterated until the resulting nodes of the split reach the minimum allowed leaf node size of the binary tree (MinBTSize) or the maximum allowed binary tree depth (MaxBTDepth). Example QTBT structure 130 represents such nodes as having dashed lines for branches. A leaf node of a binary tree is called a "coding unit (CU)" which is used for prediction (eg, intra-picture or inter-picture prediction) and transformation, without further segmentation. As explained above, CUs may also be referred to as "video blocks" or "blocks".

[0067] В одном примере QTBT-структуры сегментации, CTU-размер задается как 128×128 (выборки сигнала яркости и две соответствующих выборки сигнала цветности 64×64), MinQTSize задается как 16×16, MaxBTSize задается как 64×64, MinBTSize (для ширины и высоты) задается как 4, и MaxBTDepth задается как 4. Сегментация на дерево квадрантов применяется к CTU сначала, чтобы формировать узлы-листья дерева квадрантов. Узлы-листья дерева квадрантов могут иметь размер до 16×16 (т.е. MinQTSize) до 128×128 (т.е. CTU-размера). Если узел-лист дерева квадрантов представляет собой 128×128, то он не должен дополнительно разбиваться посредством двоичного дерева, поскольку размер превышает MaxBTSize (т.е. 64×64, в этом примере). В противном случае, узел-лист дерева квадрантов дополнительно сегментируется посредством двоичного дерева. Следовательно, узел-лист дерева квадрантов также представляет собой корневой узел для двоичного дерева и имеет глубину двоичного дерева как 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в этом примере), дополнительное разбиение не разрешается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в этом примере), это подразумевает то, что дополнительное горизонтальное разбиение не разрешается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает то, что дополнительное вертикальное разбиение не разрешается для этого узла двоичного дерева. Как отмечено выше, узлы-листья двоичного дерева называются "CU" и дополнительно обрабатываются согласно предсказанию и преобразованию без дополнительной сегментации.[0067] In one example of a QTBT segmentation structure, the CTU size is set to 128x128 (luminance samples and two corresponding 64x64 chrominance samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize( for width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree segmentation is applied to the CTU first to form the leaf nodes of the quadtree. The leaf nodes of the quadtree can be up to 16×16 (i.e. MinQTSize) up to 128×128 (i.e. CTU-size). If the leaf node of the quadtree is 128×128, then it should not be further split by the binary tree because the size exceeds MaxBTSize (ie 64×64, in this example). Otherwise, the leaf node of the quadtree is further segmented by a binary tree. Therefore, the leaf node of the quadtree is also the root node for the binary tree and has a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (4, in this example), no further splitting is allowed. When a binary tree node has a width equal to MinBTSize (4, in this example), this implies that no additional horizontal splitting is allowed. Similarly, a binary tree node having a height equal to MinBTSize implies that additional vertical splitting is not allowed for that binary tree node. As noted above, the leaf nodes of the binary tree are called "CU" and are further processed according to the prediction and transformation without additional segmentation.

[0068] В этом разделе, поясняются стандарты кодирования видео, в частности, связанные с предсказанием векторов движения технологии предыдущих стандартов.[0068] In this section, video coding standards, in particular those related to motion vector prediction technologies of the previous standards, are explained.

[0069] Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC). Последний совместный проект MVC описывается в документе "Advanced video coding for generic audiovisual services", ITU-T Recommendation H.264, март 2010 года.[0069] Video coding standards include ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG -4 Visual and ITU-T H.264 (also known as ISO/IEC MPEG-4 AVC), which includes Scalable Video Coding (SVC) and Multi-View Video Coding (MVC) extensions. The latest collaborative MVC project is described in "Advanced video coding for generic audiovisual services", ITU-T Recommendation H.264, March 2010.

[0070] Помимо этого, предусмотрен новый разработанный стандарт кодирования видео, а именно стандарт высокоэффективного кодирования видео (HEVC), разрабатываемый посредством Объединенной группы для совместной работы над видеостандартами (JCT-VC) Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC. Самый свежий проект HEVC доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip.[0070] In addition, a new developed video coding standard is provided, namely the High Efficiency Video Coding (HEVC) standard being developed through the Joint Video Standards Collaborative Group (JCT-VC) of the Video Coding Expert Group (VCEG) of ITU-T and Motion Picture Expert Group (MPEG) ISO/IEC. The latest HEVC draft is available at http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip.

[0071] Информация движения [0071] Motion information

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

[0073] Для данного картинки или серии последовательных макроблоков, если используется только один список опорных картинок, каждый блок внутри картинки или серии последовательных макроблоков подвергается прямому предсказанию. Если оба списка опорных картинок используются для данного картинки или серии последовательных макроблоков, блок внутри картинки или серии последовательных макроблоков может подвергаться прямому предсказанию или обратному предсказанию, или двунаправленному предсказанию.[0073] For a given picture or slice, if only one reference picture list is used, each block within the picture or slice undergoes forward prediction. If both reference picture lists are used for a given picture or slice, a block within a picture or slice may be subjected to forward prediction or inverse prediction, or bidirectional prediction.

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

[0075] POC [0075] POC

[0076] Номер в последовательности картинок (POC) используется в стандартах кодирования видео для того, чтобы идентифицировать порядок отображения картинки . Хотя возникают случаи, когда два картинки в одной кодированной видеопоследовательности могут иметь идентичное POC-значение, это типично не происходит в кодированной видеопоследовательности. Когда несколько кодированных видеопоследовательностей присутствуют в потоке битов, картинки с идентичным значением POC могут находиться ближе друг к другу с точки зрения порядка декодирования.[0076] A Picture Sequence Number (POC) is used in video coding standards to identify the display order of a picture. While there are cases where two pictures in the same coded video sequence may have the same POC value, this typically does not occur in the coded video sequence. When multiple encoded video sequences are present in a bitstream, pictures with the same POC value may be closer to each other in terms of decoding order.

[0077] POC-значения картинок типично используются для составления списков опорных картинок, извлечения набора опорных картинок, аналогично HEVC, и масштабирования векторов движения.[0077] Picture POC values are typically used for reference picture listing, reference picture set extraction, similar to HEVC, and motion vector scaling.

[0078] Единица предсказания [0078] Prediction unit

[0079] Единица предсказания (PU) означает базовую единицу выборок, которые совместно используют идентичную информацию предсказания. В PU для взаимного предсказания информация, предсказания может представлять собой идентичный набор информации движения или идентичный способ для того, чтобы извлекать информацию движения для PU. В одном примере, PU может быть идентичной в блочной HEVC-структуре и также может представлять собой базисный блок в других структурах сегментации на блоки, сегментации на дерево квадрантов плюс двоичное дерево, сегментации на многотипное дерево и др.[0079] A prediction unit (PU) means a base unit of samples that share identical prediction information. In the PU for mutual prediction, the prediction information may be the same set of motion information or the same method for extracting motion information for the PU. In one example, the PU may be identical in the HEVC block structure and may also be the basic unit in other block segmentation, quadtree plus binary tree segmentation, multitype tree segmentation, and others.

[0080] Суб-PU представляет собой субблок в PU, в которой выборки совместно используют идентичный набор информации движения. В движении на уровне суб-PU, выборки в PU совместно используют идентичный способ/модель для извлечения информации движения, но суб-PU может иметь собственный набор информации движения и может отличаться от другой суб-PU в идентичной PU.[0080] A sub-PU is a sub-unit within a PU in which samples share an identical set of motion information. In motion at the sub-PU level, the samples in the PU share the same method/model for retrieving motion information, but the sub-PU may have its own set of motion information and may be different from another sub-PU in the same PU.

[0081] Фиг. 3 иллюстрирует примерную блок-схему последовательности операций способа извлечения предикторов векторов движения, как пояснено в данном документе. Два списка кандидатов предикторов векторов движения извлекаются из информации соседних блоков в трехмерной области. Декодер адаптивно выбирает список согласно декодированному синтаксическому элементу is_sub_pu_motion_flag из потока битов.[0081] FIG. 3 illustrates an exemplary flowchart of a method for extracting motion vector predictors as explained herein. Two lists of motion vector predictor candidates are derived from neighboring block information in the 3D domain. The decoder adaptively selects the list according to the decoded is_sub_pu_motion_flag syntax element from the bitstream.

[0082] В одном примере, список sub_pu может существовать только в том случае, если текущий блок превышает предварительно заданное значение. В другом примере, блок может содержать только суб-PU, например, блок 4×4, флаг в таком случае служит для того, чтобы указывать то, что формирование информации движения основано на способе суб-PU или нет. Два списка могут включать в себя различное число кандидатов предсказания движения, которые могут быть предварительно заданы или передаваться в служебных сигналах в SPS, PPS или заголовке серии последовательных макроблоков. Соседние блоки могут представлять собой пространственных соседей в текущей картинке или временных соседей в предыдущих кодированных картинки х.[0082] In one example, the sub_pu list may only exist if the current block exceeds a predetermined value. In another example, the block may contain only sub-PUs, such as a 4x4 block, the flag in such a case serves to indicate that the motion information generation is based on the sub-PU method or not. The two lists may include a different number of motion prediction candidates, which may be predefined or signaled in the SPS, PPS, or slice header. Neighbor blocks may be spatial neighbors in the current picture or temporal neighbors in previous coded pictures.

[0083] Как проиллюстрировано на фиг. 3, в дальнейшем поясняется процесс извлечения двух списков. На 300, декодер определяет то, является флаг активным или нет. Если декодер определяет то, что флаг не является активным, декодер переходит к 302. Если флаг является активным, декодер переходит к 306.[0083] As illustrated in FIG. 3, the process of extracting the two lists is explained below. At 300, the decoder determines whether the flag is active or not. If the decoder determines that the flag is not active, the decoder proceeds to 302. If the flag is active, the decoder proceeds to 306.

[0084] На 302, извлекается первый список кандидатов предсказания движения на уровне PU. На 306, извлекается второй список кандидатов предсказания движения на уровне суб-PU. Возможный вариант предсказания движения на уровне PU означает то, что все пикселы в идентичной PU совместно используют идентичный набор информации движения. Возможный вариант предсказания движения на уровне суб-PU означает то, что все пикселы в идентичной суб-PU совместно используют идентичный набор информации движения, но другая суб-PU в PU может иметь различные наборы информации движения. Набор информации движения может включать в себя направление взаимного предсказания, индекс или индексы опорных картинок при использованием нескольких ссылок, вектор движения или векторы движения при использовании нескольких ссылок.[0084] At 302, the first list of motion prediction candidates at the PU level is retrieved. At 306, a second sub-PU level motion prediction candidate list is retrieved. An option for motion prediction at the PU level means that all pixels in an identical PU share an identical set of motion information. An option for motion prediction at the sub-PU level means that all pixels in an identical sub-PU share the same set of motion information, but another sub-PU in a PU may have different sets of motion information. The set of motion information may include an inter prediction direction, an index or indices of reference pictures when using multiple links, a motion vector or motion vectors when using multiple links.

[0085] Пример кандидатов вектора движения на уровне PU, список представляет собой список кандидатов HEVC-слияния. Примеры предсказания движения на уровне суб-PU включают в себя, но не только, аффинное предсказание векторов движения (афинный), альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD) и т.п. Примерная синтаксическая таблица показывается в нижеприведенной таблице 1. Синтаксический элемент sub_pu_motion_idx может использоваться для того, чтобы указывать выбранный возможный вариант в списке кандидатов предсказания движения на уровне суб-PU, и синтаксический элемент pu_motion_idx используется для того, чтобы указывать выбранный возможный вариант в списке кандидатов предсказания движения на уровне PU.[0085] An example of motion vector candidates at the PU level, the list is a list of HEVC merge candidates. Examples of motion prediction at the sub-PU level include, but are not limited to, affine motion vector prediction (affine), alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP), planar motion vector prediction, and vector extraction. motion based pattern matching (PMVD), and the like. An exemplary syntax table is shown in Table 1 below. The sub_pu_motion_idx syntax element may be used to indicate the selected candidate in the sub-PU level motion prediction candidate list, and the pu_motion_idx syntax element is used to indicate the selected candidate in the prediction candidate list. movements at the PU level.

Табл. 1Tab. one

Figure 00000002
Figure 00000002

[0086] В другом способе, кандидаты вектора движения на уровне PU могут разделяться на две группы; is_sub_pu_motion_flag передается в служебных сигналах, когда декодер принимает синтаксис, указывающий то, что выбранный возможный вариант не находится в первой группе кандидатов информации движения на уровне PU. Is_sub_pu_motion_flag может неявно передаваться в служебных сигналах в индексе слияния уровня PU в качестве одного из индексов. Затем индекс слияния уровня суб-PU должен дополнительно передаваться в служебных сигналах, если is_sub_pu_motion_flag является истинным. В одном примере, порядок вставки в списки кандидатов предсказания движения на уровне PU представляет собой "A

Figure 00000003
B
Figure 00000003
S
Figure 00000003
C
Figure 00000003
D
Figure 00000003
E". A, B, C, D, E обозначают кандидаты предсказания движения на уровне PU, и S представляет собой индикатор sub_pu_motion_flag. Если S выбирается, то sub_pu_motion_flag логически выводится как истинный. Один пример A может представлять собой левый нижний возможный вариант пространственного слияния, и один пример B может представлять собой правый верхний возможный вариант пространственного слияния. Следует отметить, что также может применяться другой порядок вставки.[0086] In another method, motion vector candidates at the PU level may be divided into two groups; is_sub_pu_motion_flag is signaled when the decoder receives a syntax indicating that the selected opportunity is not in the first PU layer motion information candidate group. Is_sub_pu_motion_flag may be implicitly signaled in the PU layer merge index as one of the indexes. Then, the sub-PU level merge index shall additionally be signaled if is_sub_pu_motion_flag is true. In one example, the insertion order in the motion prediction candidate lists at the PU level is "A
Figure 00000003
B
Figure 00000003
S
Figure 00000003
C
Figure 00000003
D
Figure 00000003
E". A, B, C, D, E denote motion prediction candidates at the PU level, and S is the sub_pu_motion_flag indicator. If S is selected, then sub_pu_motion_flag is inferred to be true. One example of A may represent the lower left spatial fusion candidate , and one example B may be the upper right spatial fusion candidate.It should be noted that a different insertion order may also apply.

[0087] Следует отметить, что кандидаты предсказания движения на уровне суб-PU группируются во всех способах, описанных выше.[0087] It should be noted that motion prediction candidates at the sub-PU level are grouped in all of the methods described above.

[0088] Передача служебных сигналов для выбора кандидата предсказания векторов движения [0088] Signaling for Motion Vector Prediction Candidate Selection

[0089] Синтаксический элемент is_sub_pu_motion_flag сначала используется для того, чтобы указывать то, представляет собой возможный вариант предсказания движения или нет уровень суб-PU. Is_sub_pu_motion_flag может преобразовываться в двоичную форму с использованием одного элемента разрешения (0/1) и кодироваться посредством контекстного двоичного арифметического кодера. Контекст может зависеть от PU-размера/зоны или PU-глубины в дереве сегментации на блоки. Большая PU может иметь тенденцию более частого использования при выборе предсказания вектора движения на уровне суб-PU, чем меньшая PU. Контекст также может зависеть от sub_pu_motion_flag из пространственных/временных соседних блоков. Вероятность того, что текущая PU использует движение на основе суб-PU, является более высокой, если соседние блоки имеют движение на основе суб-PU.[0089] The syntax element is_sub_pu_motion_flag is first used to indicate whether or not a motion prediction candidate is a sub-PU layer. Is_sub_pu_motion_flag may be binarized using one bin (0/1) and encoded with a context binary arithmetic encoder. The context may depend on the PU-size/area or PU-depth in the block segmentation tree. A larger PU may tend to be more frequently used in sub-PU level motion vector prediction selection than a smaller PU. The context may also depend on the sub_pu_motion_flag of the spatial/temporal neighboring blocks. The probability that the current PU uses sub-PU based motion is higher if neighboring blocks have sub-PU based motion.

[0090] Если is_sub_pu_motion_flag является истинным ("1"), синтаксический элемент sub_pu_motion_idx используется для того, чтобы указывать способ, чтобы извлекать возможный вариант предсказания движения на основе суб-PU. Общее число способов, т.е. общее число кандидатов предсказания движения на уровне суб-PU, num_sub_pu_motion может передаваться в служебных сигналах в высокоуровневом синтаксисе. Sub_pu_motion_idx может преобразовываться в двоичную форму с использованием усеченного унарного кода в зависимости от num_sub_pu_motion. Тем не менее, также может применяться другой способ преобразования в двоичную форму.[0090] If is_sub_pu_motion_flag is true ("1"), the sub_pu_motion_idx syntax element is used to indicate a method to extract a motion prediction candidate based on the sub-PU. The total number of ways, i.e. the total number of motion prediction candidates at the sub-PU level, num_sub_pu_motion may be signaled in the high-level syntax. Sub_pu_motion_idx can be binarized using a truncated unary code depending on num_sub_pu_motion. However, another binarization method may also be used.

[0091] Если is_sub_pu_motion_flag является ложным ("0"), синтаксический элемент nor_pu_motion_idx используется для того, чтобы указывать способ, чтобы извлекать возможный вариант предсказания движения на уровне PU. Общее число кандидатов предсказания векторов движения на уровне PU, num_nor_pu_motion может передаваться в служебных сигналах в высокоуровневом синтаксисе. Nor_pu_motion_idx может преобразовываться в двоичную форму с использованием усеченного унарного кода в зависимости от num_nor_pu_motion. Тем не менее, также может применяться другой способ преобразования в двоичную форму.[0091] If is_sub_pu_motion_flag is false ("0"), the nor_pu_motion_idx syntax element is used to indicate a method to extract a motion prediction candidate at the PU level. The total number of motion vector prediction candidates at the PU level, num_nor_pu_motion, may be signaled in the high-level syntax. Nor_pu_motion_idx can be converted to binary using a truncated unary code depending on num_nor_pu_motion. However, another binarization method may also be used.

[0092] Извлечение кандидатов предсказания движения на уровне PU [0092] Extraction of motion prediction candidates at the PU level

[0093] Возможный вариант предсказания движения на уровне PU может извлекаться из пространственных или временных соседних кодированных блоков, аналогично HEVC. В HEVC-режиме слияния,[0093] A motion prediction candidate at the PU level may be derived from spatial or temporal neighboring coded blocks, similar to HEVC. In HEVC fusion mode,

[0094] В HEVC, список возможных MV-вариантов содержит вплоть до 5 кандидатов для режима слияния и только два возможных варианта для AMVP-режима. Возможный вариант слияния может содержать набор информации движения, например, векторов движения, соответствующих как спискам опорных картинок (списку 0 и списку 1), так и опорным индексам. Если возможный вариант слияния идентифицируется посредством индекса слияния, опорные картинки используются для предсказания текущих блоков, а также определяются ассоциированные векторы движения.[0094] In HEVC, the MV candidate list contains up to 5 candidates for the merge mode and only two candidates for the AMVP mode. An exemplary fusion may comprise a set of motion information, such as motion vectors, corresponding to both reference picture lists (list 0 and list 1) and reference indices. If a merge candidate is identified by the merge index, reference pictures are used to predict the current blocks and associated motion vectors are determined.

[0095] На основе вышеописанного, одни или более предикторов векторов движения выбираются на основе декодированного индекса кандидата.[0095] Based on the above, one or more motion vector predictors are selected based on the decoded candidate index.

[0096] В HEVC-режиме слияния, вплоть до четырех пространственных возможных MV-вариантов 402, 404, 406 и 408 блока 400 могут извлекаться с порядками, показанными на фиг. 4. Порядок является следующим: левый (0, A1), верхний (1, B1), правый верхний (2, B0), левый нижний (3, A0) и левый верхний (4, B2).[0096] In HEVC merge mode, up to four spatial MV candidates 402, 404, 406, and 408 of block 400 can be extracted with the orders shown in FIG. 4. The order is left (0, A1), top (1, B1), top right (2, B0), bottom left (3, A0), and top left (4, B2).

[0097] Ниже поясняются временные соседние кандидаты в HEVC. Возможный вариант временного предиктора вектора движения (TMVP), если активируется и является доступным, добавляется в список возможных MV-вариантов после кандидатов пространственных векторов движения. Первичное блочное местоположение для извлечения возможных TMVP-вариантов представляет собой правый нижний блок за пределами совместно размещенной PU, как показано на фиг. 5 в качестве блока "T" 500, чтобы компенсировать смещение в верхнем и левом блоках, используемых для того, чтобы формировать пространственные соседние кандидаты. Тем не менее, если этот блок 502 расположен за пределами текущей CTB-строки, или информация движения не доступна, блок заменяется на центральный блок 504 PU. Вектор движения для возможного TMVP-варианта извлекается из совместно размещенной PU совместно размещенного картинки , указываемого на уровне серии последовательных макроблоков. Вектор движения для совместно размещенной PU называется "совместно размещаемым MV".[0097] Temporary neighbor candidates for HEVC are explained below. A temporal motion vector predictor (TMVP) candidate, if enabled and available, is added to the list of MV candidates after the spatial motion vector candidates. The primary block location for extracting TMVP candidates is the bottom right block outside the co-located PU, as shown in FIG. 5 as block "T" 500 to compensate for the offset in the top and left blocks used to generate spatial neighbor candidates. However, if this block 502 is located outside the current CTB row, or motion information is not available, the block is replaced by the central PU block 504. The motion vector for the TMVP candidate is derived from the co-located PU of the co-located picture , indicated at the slice level. The motion vector for a co-located PU is referred to as a "co-located MV".

[0098] Извлечение кандидатов предсказания движения на уровне суб-PU [0098] Extraction of motion prediction candidates at the sub-PU level

[0099] Кандидаты предсказания движения на уровне суб-PU могут включать в себя, но не только, аффинное предсказание движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения, извлечение векторов движения на основе сопоставления шаблонов (PMVD) и т.п. Далее, иллюстрируются примеры этого предсказания движения на уровне суб-PU. Тем не менее, также могут добавляться некоторые варьирования или другое предсказание движения на уровне суб-PU.[0099] Candidates for motion prediction at the sub-PU level may include, but are not limited to, affine motion prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP), planar motion vector prediction, vector extraction motion based pattern matching (PMVD), and the like. Next, examples of this motion prediction at the sub-PU level are illustrated. However, some variation or other motion prediction at the sub-PU level may also be added.

[0100] Аффинное предсказание движения [0100] Affine Motion Prediction

[0101] В способе аффинного предсказания движения с 4 параметрами, поле векторов движения блока описывается посредством уравнения (1):[0101] In the 4-parameter affine motion prediction method, the block motion vector field is described by equation (1):

Figure 00000004
, (1)
Figure 00000004
, (one)

[0102] где (w, h) является размером блока, и (x, y) является координатой;

Figure 00000005
является вектором движения левой верхней угловой управляющей точки, и
Figure 00000006
является вектором движения правой верхней угловой управляющей точки.[0102] where (w, h) is the block size and (x, y) is the coordinate;
Figure 00000005
is the motion vector of the top left corner control point, and
Figure 00000006
is the motion vector of the upper right corner control point.

[0103] В способе аффинного предсказания движения с 6 параметрами, поле движения блока описывается посредством уравнения (2):[0103] In the 6-parameter affine motion prediction method, the block motion field is described by equation (2):

Figure 00000007
, (2)
Figure 00000007
, (2)

[0104] где, помимо этого,

Figure 00000008
является вектором движения левой нижней угловой управляющей точки.[0104] where, in addition,
Figure 00000008
is the motion vector of the lower left corner control point.

[0105] В аффинном предсказании движения на основе суб-PU, MV суб-PU может извлекаться посредством вычисления MV в центре суб-PU. Альтернативно, можно понижающе масштабировать (w, h) и (x, y) согласно размеру суб-PU.[0105] In sub-PU-based affine motion prediction, the MV of the sub-PU may be extracted by calculating the MV at the center of the sub-PU. Alternatively, (w, h) and (x, y) can be downscaled according to the sub-PU size.

[0106] В одном способе,

Figure 00000009
может извлекаться из соседнего блока, который ранее кодируется посредством аффинного движения, с учетом того, что текущий блок совместно использует идентичную модель аффинного движения с предыдущим кодированным соседним блоком.[0106] In one way,
Figure 00000009
may be derived from a neighboring block that was previously encoded with affine motion, given that the current block shares the same affine motion model with the previous encoded neighboring block.

[0107] В другом способе,

Figure 00000009
может извлекаться посредством вектора движения в соседнем кодированном блоке. Например, как показано на фиг. 6,
Figure 00000005
может извлекаться из вектора движения в блоке A 600, B 602 или C 604,
Figure 00000006
может извлекаться из вектора движения в блоке C 606 или D 608,
Figure 00000008
может извлекаться из блока E 610 или F 612.[0107] In another way,
Figure 00000009
may be extracted by a motion vector in an adjacent coded block. For example, as shown in FIG. 6,
Figure 00000005
may be extracted from the motion vector in block A 600, B 602, or C 604,
Figure 00000006
may be extracted from the motion vector in block C 606 or D 608,
Figure 00000008
can be removed from block E 610 or F 612.

[0108] Альтернативное временное предсказание векторов движения [0108] Alternative temporal motion vector prediction

[0109] В альтернативном способе (ATMVP) временного предсказания векторов движения (или иногда называемом "усовершенствованным временным предсказанием векторов движения"), временное предсказание векторов движения (TMVP) модифицируется посредством выборки нескольких наборов информации движения (включающих в себя векторы движения и опорные индексы) из суб-PU текущей PU.[0109] In an alternative temporal motion vector prediction (ATMVP) method (or sometimes referred to as "advanced temporal motion vector prediction"), temporal motion vector prediction (TMVP) is modified by fetching multiple sets of motion information (including motion vectors and reference indices) from a sub-PU of the current PU.

[0110] Пространственно-временное предсказание векторов движения [0110] Spatio-temporal prediction of motion vectors

[0111] В способе пространственно-временного предсказания векторов движения, векторы движения суб-PU извлекаются рекурсивно, согласно порядку растрового сканирования. Фиг. 7 иллюстрирует понятие STMVP. Рассмотрим PU 8×8, которая содержит четыре суб-PU A, B, C и D 4×4. Соседние блоки 4×4 в текущем кадре помечаются в качестве a, b, c и d. Извлечение движения для суб-CU начинается посредством идентификации ее двух пространственных соседних узлов. Первый соседний узел представляет собой блок NxN выше суб-CU (блок c). Если этот блок c не доступен или внутренне кодируется, другие блоки NxN выше суб-CU A проверяются (слева направо, начиная с блока c). Второй соседний узел представляет собой блок слева от суб-CU (блок b). Если блок b не доступен или внутренне кодируется, другие блоки слева от суб-CU A проверяются (сверху вниз, начиная с блока b). Информация движения, полученная из соседних блоков для каждого списка, масштабируется до первого опорного кадра для данного списка. Далее, временной предиктор вектора движения (TMVP) субблока A извлекается посредством выполнения идентичной процедуры TMVP-извлечения, как указано в HEVC. Информация движения совместно размещенного блока в местоположении D отбирается и масштабируется, соответственно. В завершение, после извлечения и масштабирования информации движения, все доступные векторы движения (до 3) усредняются отдельно для каждого опорного списка. Усредненный вектор движения назначается в качестве вектора движения текущей суб-CU.[0111] In the spatiotemporal motion vector prediction method, sub-PU motion vectors are extracted recursively according to the raster scan order. Fig. 7 illustrates the concept of STMVP. Consider an 8x8 PU that contains four 4x4 sub-PUs A, B, C, and D. Neighboring 4×4 blocks in the current frame are labeled a, b, c, and d. Motion extraction for a sub-CU begins by identifying its two spatial neighbors. The first neighbor is an NxN block above the sub-CU (block c). If this block c is not available or intra-coded, other NxN blocks above sub-CU A are checked (from left to right, starting from block c). The second neighbor is the block to the left of the sub-CU (block b). If block b is not available or intra-coded, other blocks to the left of sub-CU A are checked (top to bottom, starting from block b). Motion information obtained from adjacent blocks for each list is scaled to the first reference frame for that list. Next, the temporal motion vector predictor (TMVP) of sub-block A is extracted by performing the identical TMVP extraction procedure as specified in HEVC. The motion information of the co-located block at location D is sampled and scaled, respectively. Finally, after extracting and scaling the motion information, all available motion vectors (up to 3) are averaged separately for each reference list. The average motion vector is assigned as the motion vector of the current sub-CU.

[0112] Извлечение векторов движения на основе сопоставления шаблонов [0112] Extraction of motion vectors based on pattern matching

[0113] Способ извлечения векторов движения на основе сопоставления с шаблоном (PMMVD) основан на технологиях преобразования с повышением частоты картинок. Процесс извлечения движения имеет два этапа. Поиск движения на уровне PU сначала выполняется, с последующей детализацией движения на уровне суб-PU. На уровне PU, начальный вектор движения извлекается для всей PU на основе билатерального сопоставления или сопоставления с эталоном. Во-первых, список возможных MV-вариантов формируется, и возможный вариант, который приводит к минимальным затратам на сопоставление, выбирается в качестве начальной точки для дополнительной детализации на уровне PU. Затем выполняется локальный поиск на основе билатерального сопоставления или сопоставления с эталоном вокруг начальной точки, и MV, приводящий к минимальным затратам на сопоставление, рассматривается в качестве MV для всей CU. После этого, информация движения дополнительно детализируется на уровне суб-PU с извлеченными CU-векторами движения в качестве начальных точек.[0113] A template-based motion vector extraction (PMMVD) method is based on picture upscaling techniques. The motion extraction process has two steps. Motion search at the PU level is first performed, followed by motion detailing at the sub-PU level. At the PU level, the initial motion vector is derived for the entire PU based on bilateral matching or pattern matching. First, a list of MV candidates is generated, and the candidate that results in the least matching overhead is selected as the starting point for further granularity at the PU level. A local search is then performed based on bilateral matching or pattern matching around the starting point, and the MV resulting in the lowest matching overhead is considered as the MV for the entire CU. Thereafter, the motion information is further refined at the sub-PU level with the extracted CU motion vectors as starting points.

[0114] Понятие билатерального сопоставления проиллюстрировано на фиг. 8. Билатеральное сопоставление используется для того, чтобы извлекать информацию движения посредством нахождения ближайшего соответствия между двумя блоками вдоль траектории движения текущего блока в двух различных опорных картинки х. При допущении траектории непрерывного движения, векторы MV0 и MV1 движения, указывающие на два опорных блока, должны быть пропорциональными временным расстояниям, т.е. TD0 и TD1, между текущей картинкой и двумя опорными картинками. В качестве частного случая, когда текущая картинка временно находится между двумя опорными картинками, и временное расстояние от текущего картинки до двух опорных картинок является идентичным, билатеральное сопоставление становится двунаправленным MV на основе зеркалирования.[0114] The concept of bilateral matching is illustrated in FIG. 8. Bilateral matching is used to extract motion information by finding the closest match between two blocks along the motion path of the current block in two different reference pictures. Assuming a trajectory of continuous motion, the motion vectors MV0 and MV1 pointing to the two reference blocks must be proportional to the time distances, i.e. TD0 and TD1, between the current picture and two reference pictures. As a special case, when the current picture is temporarily between two reference pictures, and the temporal distance from the current picture to the two reference pictures is identical, the bilateral matching becomes a mirror-based bi-directional MV.

[0115] Сопоставление с эталоном, как проиллюстрировано на фиг. 9, используется для того, чтобы извлекать информацию движения посредством нахождения ближайшего соответствия между эталоном (верхним и/или левым соседними блоками текущего блока) в текущей картинке и блоком (идентичного размера с эталоном) в опорной картинке.[0115] Matching with a template, as illustrated in FIG. 9 is used to extract motion information by finding the closest match between a template (top and/or left adjacent blocks of the current block) in the current picture and a block (of the same size as the template) in the reference picture.

[0116] Планарное предсказание векторов движения [0116] Planar Motion Vector Prediction

[0117] Планарное предсказание векторов движения достигается посредством усреднения горизонтальной и вертикальной линейной интерполяции на основе блоков 4×4 следующим образом.[0117] Planar motion vector prediction is achieved by averaging horizontal and vertical linear interpolation based on 4×4 blocks as follows.

[0118] W и H обозначают ширину и высоту блока; (x, y) являются координатами текущего субблока относительно вышеуказанного субблока левого угла. Все расстояния обозначаются посредством пиксельных расстояний, деленных на 4. P(x, y) является вектором движения текущего субблока.[0118] W and H denote the width and height of the block; (x, y) are the coordinates of the current sub-block relative to the above left corner sub-block. All distances are denoted by pixel distances divided by 4. P(x, y) is the motion vector of the current subblock.

[0119] Горизонтальное предсказание Ph(x, y) и вертикальное предсказание Pv(x, y) для местоположения (x, y) вычисляются следующим образом:[0119] Horizontal prediction P h (x, y) and vertical prediction P v (x, y) for location (x, y) are calculated as follows:

Figure 00000010
Figure 00000010

[0120] где L(-1, y) и R(W, y) являются векторами движения блоков 4×4 слева и справа от текущего блока; A(x, -1) и B(x, H) являются векторами движения блоков 4×4 сверху и снизу от текущего блока, как показано на фиг. 9.[0120] where L(-1, y) and R(W, y) are motion vectors of 4×4 blocks to the left and right of the current block; A(x, -1) and B(x, H) are the motion vectors of the 4×4 blocks above and below the current block, as shown in FIG. 9.

[0121] Опорная информация движения соседних блоков из левого столбца и верхней строки извлекается из пространственных соседних блоков текущего блока.[0121] The movement reference information of neighboring blocks from the left column and top row is extracted from the spatial neighboring blocks of the current block.

[0122] Опорная информация движения соседних блоков из правого столбца и нижней строки извлекается следующим образом.[0122] The movement reference information of adjacent blocks from the right column and bottom row is extracted as follows.

1) Извлечение информации движения правого нижнего временного соседнего блока 4×4.1) Extraction of motion information of the right lower temporal neighboring block 4×4.

2) Вычисление векторов движения соседних блоков 4×4 в правом столбце, с использованием извлеченной информации движения правого нижнего соседнего блока 4×4 наряду с информацией движения вышеуказанного правого соседнего блока 4×4, в качестве R(W, y)=((H-y-1)xAR+(y+1)xBR)/H.2) Calculation of the motion vectors of the neighboring 4×4 blocks in the right column, using the extracted motion information of the right lower neighboring block 4×4 along with the motion information of the above right neighboring block 4×4, as R(W, y)=((H-y -1)xAR+(y+1)xBR)/H.

3) Вычисление векторов движения соседних блоков 4×4 в нижней строке, с использованием извлеченной информации движения правого нижнего соседнего блока 4×4 наряду с информацией движения левого нижнего соседнего блока 4×4, в качестве B(x, H)=((W-x-1)xBL+(x+1)xBR)/W.3) Computing the motion vectors of the 4×4 neighboring blocks in the bottom row, using the extracted motion information of the right lower neighboring 4×4 block along with the motion information of the left lower neighboring 4×4 block, as B(x, H)=((W-x -1)xBL+(x+1)xBR)/W.

[0123] - где AR является вектором движения правого верхнего пространственного соседнего блока 4×4, BR является вектором движения правого нижнего временного соседнего блока 4×4, и BL является вектором движения левого нижнего пространственного соседнего блока 4×4, как показано на фиг. 10.[0123] - where AR is the motion vector of the right upper 4x4 spatial neighbor block, BR is the motion vector of the right lower 4x4 temporal neighbor block, and BL is the motion vector of the left lower 4x4 spatial neighbor block, as shown in FIG. ten.

[0124] Информация движения, полученная из соседних блоков для каждого списка, масштабируется до первого опорного картинки для данного списка.[0124] Motion information obtained from adjacent blocks for each list is scaled to the first reference picture for that list.

[0125] Вставка в списки кандидатов [0125] Insertion in Candidate Lists

[0126] При наличии, кандидаты предсказания движения на уровне суб-PU вставляются в список в следующем порядке по умолчанию: "аффинный

Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
PMMVD
Figure 00000003
планарный". Порядок по умолчанию может быть предварительно задан или передаваться в служебных сигналах на основе типа серии последовательных макроблоков, временного слоя, модели аффинного движения и/или доступности временного предиктора движения. Порядок по умолчанию также может отличаться на основе типа блока, формы блока или размера блока. Максимальное число кандидатов предсказания движения на уровне суб-PU определяется посредством предварительно заданного числа и/или общего числа доступных кандидатов предсказания движения на уровне суб-PU, как указано посредством высокоуровневого синтаксиса. В одном примере, если предварительно заданное число равно 3, и все из аффинного, ATMVP-, STMVP-, PMMVD- и планарного кандидатов доступны, то максимальное число равно 3. Но если только аффинный и ATMVP доступны, то максимальное число равно 2. Если максимальное число равно 0, то is_sub_pu_motion_flag логически выводится как ложный (0) и не передается в служебных сигналах в потоке битов.[0126] If present, sub-PU level motion prediction candidates are inserted into the list in the following default order: "affine
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
PMMVD
Figure 00000003
planar". The default order may be predefined or signaled based on the slice type, time slice, affine motion model, and/or availability of the temporal motion predictor. The default order may also differ based on the block type, block shape, or The maximum number of sub-PU level motion prediction candidates is determined by a predefined number and/or the total number of available sub-PU level motion prediction candidates as specified by high-level syntax.In one example, if the predefined number is 3, and all of the affine, ATMVP-, STMVP-, PMMVD- and planar candidates are available, then the maximum number is 3. But if only affine and ATMVP are available, then the maximum number is 2. If the maximum number is 0, then is_sub_pu_motion_flag is logically inferred to be false (0) and is not signaled in the bitstream.

[0127] Также может использоваться другой порядок кандидатов по умолчанию.[0127] A different default order of candidates may also be used.

В одном примере, "аффинный

Figure 00000003
PMMVD
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
планарный".In one example, "affine
Figure 00000003
PMMVD
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
planar".

В другом примере, "PMMVD

Figure 00000003
аффинный
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
планарный".In another example, "PMMVD
Figure 00000003
affine
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
planar".

В другом примере, могут использоваться два или более аффинных возможных варианта:In another example, two or more affine possibilities may be used:

"аффинный 1

Figure 00000003
аффинный 2
Figure 00000003
PMMVD
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
планарный";"affine 1
Figure 00000003
affine 2
Figure 00000003
PMMVD
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
planar";

либо, "аффинный 1

Figure 00000003
Affine1
Figure 00000003
ATMVP
Figure 00000003
аффинный 2
Figure 00000003
планарный"or, "affine 1
Figure 00000003
Affine1
Figure 00000003
ATMVP
Figure 00000003
affine
2
Figure 00000003
planar"

[0128] Приоритезированное переупорядочивание кандидатов [0128] Prioritized Candidate Reordering

[0129] Список кандидатов предсказания движения на уровне суб-PU по умолчанию может переупорядочиваться на основе их возникновений в соседние кодированные блоки. В одном примере, возможный вариант, который имеет большее число возникновений в соседние кодированные блоки, размещается в более низкой индексной позиции в списке.[0129] The list of motion prediction candidates at the default sub-PU level may be reordered based on their occurrences in neighboring coded blocks. In one example, a candidate that has more occurrences in adjacent code blocks is placed at a lower index position in the list.

[0130] Частичное приоритезированное переупорядочивание кандидатов [0130] Partial prioritized candidate reordering

[0131] Чтобы уменьшать сложность переупорядочения кандидатов, приоритезированное переупорядочивание кандидатов применяется только к одному или более подсписков. Например, возможный вариант 1-2, 3-4 в порядке по умолчанию переупорядочивается отдельно на основе своего появления в соседних кодированных блоках.[0131] To reduce the complexity of candidate reordering, prioritized candidate reordering is applied to only one or more sublists. For example, the 1-2, 3-4 option in the default order is reordered separately based on its occurrence in adjacent code blocks.

[0132] Отсечение [0132] Clipping

[0133] Чтобы уменьшать сложность, отсечение или частичное отсечение не может применяться в списке кандидатов суб-PU. В одном примере, отсечение между ATMVP, STMVP и планарным может применяться, но отсечение не применяется между аффинным и остальными возможными вариантами суб-PU.[0133] In order to reduce complexity, pruning or partial pruning cannot be applied in the sub-PU candidate list. In one example, pruning between ATMVP, STMVP, and planar may be applied, but pruning is not applied between affine and the rest of the sub-PU options.

[0134] В другом примере, отсечение применяется только к числу суб-PU, меньшему или равному предварительно заданному значению.[0134] In another example, the clipping is only applied to the number of sub-PUs less than or equal to a predetermined value.

[0135] Альтернативные способы передачи в служебных сигналах кандидата предсказания движения на основе суб-PU [0135] Alternative methods for signaling a motion prediction candidate based on sub-PU

[0136] Выбор кандидата предсказания движения на основе суб-PU может передаваться в служебных сигналах посредством активации флагов согласно порядку вставки кандидатов вместо индекса. В одном примере, если порядок вставки представляет собой "аффинный

Figure 00000003
PMMVD
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
планарный", то передача служебных сигналов является такой, как показано в таблице 2.[0136] The selection of a motion prediction candidate based on the sub-PU may be signaled by activating flags according to the insertion order of the candidates instead of the index. In one example, if the insertion order is "affine
Figure 00000003
PMMVD
Figure 00000003
ATMVP
Figure 00000003
STMVP
Figure 00000003
planar", then signaling is as shown in Table 2.

[0137] В другом альтернативном способе, кандидаты предсказания движения на основе суб-PU могут группироваться в несколько подгрупп. Например, аффинный, планарный группируются в подгруппу 1, ATMVP и STMVP группируются в подгруппу 2, и PMMVD представляет собой еще одну другую подгруппу 3. Примерная передача служебных сигналов показывается в таблице 3. Синтаксис pmmvd_flag сначала передается в служебных сигналах, чтобы указывать то, представляет он собой возможный PMMVD-вариант или нет. Затем, если он не представляет собой возможный PMMVD-вариант, другой синтаксический элемент sub_group1_flag передается в служебных сигналах, чтобы указывать то, представляет он собой кандидаты подгруппы 1 или нет. Если sub_group1_flag является истинным, что указывает то, что он представляет собой кандидаты подгруппы 1, affine_flag передается в служебных сигналах, чтобы указывать то, представляет он или нет собой аффинный возможный вариант. Если он не представляет собой аффинный возможный вариант, то planar_mv_flag задается как истинный, чтобы указывать то, он представляет собой планарный возможный вариант. Если sub_group1_flag является ложным, то atmvp_flag передается в служебных сигналах, чтобы указывать то, представляет он собой возможный ATMVP-вариант или нет. Если он не представляет собой возможный ATMVP-вариант, stmvp_flag задается как истинный, чтобы указывать то, что он представляет собой возможный STMVP-вариант.[0137] In another alternative method, sub-PU based motion prediction candidates may be grouped into multiple subgroups. For example, affine, planar are grouped into subgroup 1, ATMVP and STMVP are grouped into subgroup 2, and PMMVD is yet another subgroup 3. An exemplary signaling is shown in Table 3. The pmmvd_flag syntax is first signaled in signaling to indicate which represents is it a possible PMMVD variant or not. Then, if it is not a PMMVD candidate, another sub_group1_flag syntax element is signaled to indicate whether it is a subgroup 1 candidate or not. If sub_group1_flag is true, indicating that it is a subgroup 1 candidate, affine_flag is signaled to indicate whether or not it is an affine candidate. If it does not represent an affine candidate, then planar_mv_flag is set to true to indicate that it represents a planar candidate. If sub_group1_flag is false, then atmvp_flag is signaled to indicate whether it is an ATMVP candidate or not. If it does not represent an ATMVP candidate, stmvp_flag is set to true to indicate that it is an STMVP candidate.

Табл. 2Tab. 2

Figure 00000011
Figure 00000011

Табл. 3Tab. 3

Figure 00000012
Figure 00000012

[0138] Следует отметить, что в таблице 2 и таблице 3, проверка доступности игнорируется для просторы примера. Флаг логически выводится как ложный (0), если соответствующий возможный вариант не доступен. Также следует отметить, также могут применяться что другие варьирования группировки.[0138] It should be noted that in Table 2 and Table 3, the availability check is ignored for the sake of example. The flag is logically output as false (0) if the corresponding option is not available. It should also be noted that other grouping variations may also apply.

[0139] Фиг. 11 является блок-схемой, иллюстрирующей примерный видеокодер 200, который может выполнять технологии этого раскрытия сущности. Фиг. 11 предоставляется для целей пояснения и не должен считаться ограничением технологий, как проиллюстрировано и описано в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеокодер 200 в контексте стандартов кодирования видео, таких как стандарт HEVC-кодирования видео и разрабатываемый стандарт кодирования видео H.266. Тем не менее, технологии этого раскрытия сущности не ограничены этими стандартами кодирования видео и, в общем, являются применимыми к кодированию и декодированию видео.[0139] FIG. 11 is a block diagram illustrating an exemplary video encoder 200 that may perform the techniques of this disclosure. Fig. 11 is provided for purposes of explanation and should not be considered a limitation of the technologies as illustrated and outlined in this disclosure. For purposes of explanation, this disclosure describes video encoder 200 in the context of video coding standards such as the HEVC video coding standard and the upcoming H.266 video coding standard. However, the techniques of this disclosure are not limited to these video coding standards and are generally applicable to video encoding and decoding.

[0140] В примере по фиг. 11, видеокодер 200 включает в себя запоминающее устройство 230 видеоданных, модуль 202 выбора режима, модуль 204 формирования остатков, модуль 206 обработки преобразования, модуль 208 квантования, модуль 202 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных картинок (DPB) и модуль 220 энтропийного кодирования.[0140] In the example of FIG. 11, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 202, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216, buffer 218 decoded pictures (DPB) and module 220 entropy encoding.

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

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

[0143] Различные модули по фиг. 11 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как схемы с фиксированной функцией, программируемые схемы либо комбинация вышеозначенного. Схемы с фиксированной функцией означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Схемы с фиксированной функцией могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют схемы с фиксированной функцией, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (с фиксированной функцией или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0143] The various modules of FIG. 11 are illustrated to assist in understanding the operations performed by video encoder 200. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of the above. Fixed function circuits means circuits that provide specific functionality and are preset in terms of operations that can be performed. Programmable circuits means circuits that can be programmed to perform various tasks and provide flexible functionality in operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed-function circuits can execute program instructions (eg, to receive parameters or output parameters), but the types of operations that fixed-function circuits perform are generally immutable. In some examples, one or more modules may be various circuit blocks (fixed function or programmable), and in some examples, one or more modules may be integrated circuits.

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

[0145] Запоминающее устройство 230 видеоданных выполнено с возможностью сохранять принимаемые видеоданные. Видеокодер 200 может извлекать картинку видеоданных из запоминающего устройства 230 видеоданных и предоставлять видеоданные в модуль 204 формирования остатков и модуль 202 выбора режима. Видеоданные в запоминающем устройстве 230 видеоданных могут представлять собой необработанные видеоданные, которые должны кодироваться.[0145] The video storage device 230 is configured to store received video data. The video encoder 200 may retrieve a picture of the video data from the video data storage device 230 and provide the video data to the residual generation module 204 and the mode selection module 202 . The video data in the video data storage 230 may be raw video data to be encoded.

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

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

[0148] Видеокодер 200 может сегментировать картинку, извлеченный из запоминающего устройства 230 видеоданных, на последовательность CTU и инкапсулировать одну или более CTU в серии последовательных макроблоков. Модуль 210 выбора режима может сегментировать CTU картинки в соответствии с древовидной структурой, такой как QTBT-структура или структура в виде дерева квадрантов HEVC, описанного выше. Как описано выше, видеокодер 200 может формировать одну или более CU из сегментации CTU согласно древовидной структуре. Такая CU также, в общем, может называться "видеоблоком" или "блоком".[0148] Video encoder 200 may segment the picture retrieved from video storage 230 into a sequence of CTUs and encapsulate one or more CTUs in a slice. The mode selector 210 may segment the picture CTUs according to a tree structure such as the QTBT structure or the HEVC quadtree structure described above. As described above, video encoder 200 may generate one or more CUs from CTU segmentation according to a tree structure. Such a CU may also be referred to generically as a "video block" or "block".

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

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

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

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

[0153] В примерах, в которых модуль 202 выбора режима сегментирует CU на PU, каждая PU может быть ассоциирована с единицей предсказания сигналов яркости и соответствующими единицами предсказания сигналов цветности. Видеокодер 200 и видеодекодер 300 могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может означать размер блока кодирования сигналов яркости CU, и размер PU может означать размер единицы предсказания сигналов яркости PU. При условии, что размер конкретной CU составляет 2Nx2N, видеокодер 200 может поддерживать PU-размеры в 2Nx2N или NxN для внутреннего предсказания и симметричные PU-размеры в 2Nx2N, 2NxN, Nx2N, NxN или аналогичные для взаимного предсказания. Видеокодер 200 и видеодекодер 300 также могут поддерживать асимметричное сегментирование для PU-размеров в 2NxnU, 2NxnD, nLx2N и nRx2N для взаимного предсказания.[0153] In examples in which mode selector 202 segments CUs into PUs, each PU may be associated with a luminance prediction unit and corresponding chrominance prediction units. Video encoder 200 and video decoder 300 may support PUs having different sizes. As mentioned above, the size of the CU may mean the size of the luminance coding unit of the CU, and the size of the PU may mean the size of the luminance prediction unit of the PU. Assuming that the size of a particular CU is 2Nx2N, video encoder 200 may support PU sizes of 2Nx2N or NxN for intra prediction and symmetric PU sizes of 2Nx2N, 2NxN, Nx2N, NxN or similar for inter prediction. Video encoder 200 and video decoder 300 may also support asymmetric segmentation for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter prediction.

[0154] В примерах, в которых модуль 202 выбора режима дополнительно не сегментирует CU на PU, каждая CU может быть ассоциирована с блоком кодирования сигналов яркости и соответствующими блоками кодирования сигналов цветности. Как описано выше, размер CU может означать размер блока кодирования сигналов яркости CU. Видеокодер 200 и видеодекодер 300 могут поддерживать CU-размеры в 2Nx2N, 2NxN или Nx2N.[0154] In examples where mode selector 202 does not further segment CUs into PUs, each CU may be associated with a luminance coding block and corresponding chrominance coding blocks. As described above, the size of the CU may mean the size of the luminance coding block of the CU. Video encoder 200 and video decoder 300 may support CU sizes of 2Nx2N, 2NxN, or Nx2N.

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

[0156] Как описано выше, модуль 204 формирования остатков принимает видеоданные для текущего блока и соответствующего блока предсказания. Модуль 204 формирования остатков затем формирует остаточный блок для текущего блока. Чтобы формировать остаточный блок, модуль 204 формирования остатков вычисляет последовательные выборочные разности между блоком предсказания и текущим блоком. Таким образом:[0156] As described above, the residual generation unit 204 receives video data for the current block and the corresponding prediction block. The residual block 204 then generates a residual block for the current block. To generate a residual block, the residual block 204 calculates successive sample differences between the prediction block and the current block. In this way:

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

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

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

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

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

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

[0163] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки серии последовательных макроблоков или картинки . В частности, модуль 220 энтропийного кодирования может выводить поток битов.[0163] Video encoder 200 may output a bitstream that includes the entropy-coded syntax elements required in order to reconstruct the slices or pictures. In particular, entropy encoding unit 220 may output a bitstream.

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

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

[0166] Видеокодер 200 представляет пример устройства, выполненного с возможностью кодировать видеоданные, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью извлекать эталон преобразования с повышением частоты картинок (FRUC) с использованием значения пикселы предсказания и выполнять технологию извлечения векторов движения на стороне декодера с использованием извлеченного эталона. В другом примере, видеодекодер 300 может быть выполнен с возможностью определять соответствующие векторы движения из одного или более соседних блоков видеоданных и извлекать вектор движения для текущего блока видеоданных с использованием соответствующих векторов движения из одного или более соседних блоков видеоданных. В другом примере, видеодекодер 300 может быть выполнен с возможностью определять соответствующие векторы движения из одного или более совместно размещенных блоков видеоданных и извлекать вектор движения для текущего блока видеоданных с использованием соответствующих векторов движения из одного или более совместно размещенных блоков видеоданных.[0166] The video encoder 200 is an example of an apparatus configured to encode video data, including a memory configured to store video data, and one or more processing modules implemented in the circuit and configured to extract a picture upscaling conversion (FRUC) reference. ) using the prediction pixel value, and perform motion vector extraction technology on the decoder side using the extracted reference. In another example, video decoder 300 may be configured to determine respective motion vectors from one or more neighboring video blocks and extract a motion vector for the current video block using the corresponding motion vectors from one or more neighboring video blocks. In another example, video decoder 300 may be configured to determine appropriate motion vectors from one or more collocation video blocks and extract a motion vector for the current video block using the corresponding motion vectors from one or more collateral video blocks.

[0167] Фиг. 12 является блок-схемой, иллюстрирующей примерный видеодекодер 300, который может выполнять технологии этого раскрытия сущности. Фиг. 12 предоставляется для целей пояснения и не является ограничением технологий, как проиллюстрировано и описано в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеодекодер 300, описываемый согласно технологиям JEM, H.266/VVC и HEVC. Тем не менее, технологии этого раскрытия сущности могут выполняться посредством устройств кодирования видео, которые сконфигурированы для других стандартов кодирования видео.[0167] FIG. 12 is a block diagram illustrating an exemplary video decoder 300 that may perform the techniques of this disclosure. Fig. 12 is provided for purposes of explanation and is not a limitation of the technologies as illustrated and outlined in this disclosure. For purposes of explanation, this disclosure describes a video decoder 300 described according to JEM, H.266/VVC, and HEVC technologies. However, the techniques of this disclosure may be performed by video coding devices that are configured for other video coding standards.

[0168] В примере по фиг. 12, видеодекодер 300 включает в себя буферное запоминающее устройство 320 кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных картинок (DPB). Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 внутреннего предсказания. Модуль 304 обработки предсказания может включать в себя модули суммирования, чтобы выполнять предсказание в соответствии с другими режимами предсказания. В качестве примера, модуль 304 обработки предсказания может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.[0168] In the example of FIG. 12, the video decoder 300 includes a coded picture buffer (CPB) 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filtering unit 312, and a decoded picture buffer 314. (DPB). The prediction processing module 304 includes a motion compensation module 316 and an intra prediction module 318 . The prediction processing unit 304 may include summing units to perform prediction in accordance with other prediction modes. As an example, prediction processing module 304 may include a palette processing module, an intra-block copy module (which may be part of motion compensation module 316), an affine processing module, a linear model (LM) processing module, and the like. In other examples, video decoder 300 may include more, fewer, or other functional components.

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

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

[0171] Различные модули, показанные на фиг. 12, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как схемы с фиксированной функцией, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 11, схемы с фиксированной функцией означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Схемы с фиксированной функцией могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют схемы с фиксированной функцией, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (с фиксированной функцией или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0171] The various modules shown in FIG. 12 are illustrated to assist in understanding the operations performed by video decoder 300. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of the above. Similarly to FIG. 11, fixed function circuits means circuits that provide a specific functionality and are predetermined with respect to operations that can be performed. Programmable circuits means circuits that can be programmed to perform various tasks and provide flexible functionality in operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed-function circuits can execute program instructions (eg, to receive parameters or output parameters), but the types of operations that fixed-function circuits perform are generally immutable. In some examples, one or more modules may be various circuit blocks (fixed function or programmable), and in some examples, one or more modules may be integrated circuits.

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

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

[0174] В общем, видеодекодер 300 восстанавливает картинку на поблочной основе. Видеодекодер 300 может выполнять операцию восстановления для каждого блока отдельно (причем блок, в данный момент восстанавливаемый, т.е. декодируемый, может называться "текущим блоком").[0174] In general, video decoder 300 reconstructs a picture on a block-by-block basis. Video decoder 300 may perform the recovery operation for each block separately (and the block currently being recovered, ie, being decoded, may be referred to as the "current block").

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

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

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

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

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

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

[0181] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущего картинки для внутреннего предсказания и ранее декодированных картинок для последующей компенсации движения, в модуль 304 обработки предсказания. Кроме того, видеодекодер 300 может выводить декодированные картинки из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.[0181] Video decoder 300 may store the reconstructed blocks in DPB 314. As explained above, DPB 314 may provide reference information, such as current picture samples for intra prediction and previously decoded pictures for subsequent motion compensation, to prediction processing unit 304. In addition, video decoder 300 may output decoded pictures from the DPB for subsequent presentation on a display device, such as display device 118 of FIG. one.

[0182] Таким образом, видеодекодер 300 представляет пример устройства декодирования видео, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью реализовывать способы и процессы, поясненные в данном документе.[0182] Thus, video decoder 300 is an example of a video decoding apparatus including a memory configured to store video data and one or more processing modules implemented in circuitry and configured to implement the methods and processes explained herein.

[0183] Например, кодированные видеоданные могут включать в себя следующий синтаксис:[0183] For example, the encoded video data may include the following syntax:

Таблица 4. Синтаксис данных слиянияTable 4. Syntax of merge data

Figure 00000013
Figure 00000013

[0184] Merge_subblock_flag[x0][y0] указывает то, логически выводятся или нет параметры взаимного предсказания на основе субблоков для текущей единицы кодирования из соседних блоков. Индексы x0, y0 массива указывают местоположение (x0, y0) левой верхней выборки сигнала яркости рассматриваемого блока кодирования относительно левой верхней выборки сигнала яркости картинки . Когда merge_subblock_flag[x0][y0] не присутствует, он логически выводится как равный 0.[0184] Merge_subblock_flag[x0][y0] indicates whether or not the subblock-based inter prediction parameters for the current coding unit from neighboring blocks are inferred. The array indices x0, y0 indicate the location (x0, y0) of the top left luma sample of the coding block in question, relative to the top left luma sample of the picture . When merge_subblock_flag[x0][y0] is not present, it is logically inferred to be 0.

[0185] Merge_subblock_idx[x0][y0] указывает индекс кандидата слияния из списка кандидатов слияния на основе субблоков, где x0, y0 указывают местоположение (x0, y0) левой верхней выборки сигнала яркости рассматриваемого блока кодирования относительно левой верхней выборки сигнала яркости картинки .[0185] Merge_subblock_idx[x0][y0] indicates the index of the merge candidate from the subblock-based merge candidate list, where x0, y0 indicate the location (x0, y0) of the upper left luma sample of the coding block in question relative to the upper left picture luma sample.

[0186] Когда merge_subblock_idx[x0][y0] не присутствует, он логически выводится как равный 0.[0186] When merge_subblock_idx[x0][y0] is not present, it is logically inferred to be 0.

[0187] Если merge_subblock_flag[xCb][yCb] равен 1, процесс извлечения для векторов движения и опорных индексов в режиме слияния на основе субблоков, как указано в 8.4.4.2, активируется с местоположением (xCb, yCb) блока кодирования сигналов яркости, шириной cbWidth блока кодирования сигналов яркости и высотой cbHeight блока кодирования сигналов яркости в качестве вводов, числом субблоков кодирования сигналов яркости в горизонтальном направлении numSbX и в вертикальном направлении numSbY, опорными индексами refIdxL0, refIdxL1, массивами predFlagL0[xSbIdx][ySbIdx] и predFlagL1[xSbIdx][ySbIdx] флагов использования списков предсказания, массивами mvL0[xSbIdx][ySbIdx] и mvL0[xSbIdx][ySbIdx] векторов движения субблоков сигнала яркости и массивами mvCL0[xSbIdx][ySbIdx], и mvCL1[xSbIdx][ySbIdx] векторов движения субблоков сигналов цветности, с xSbIdx=0...numSbX-1, ySbIdx=0...numSbY-1 и индексом gbiIdx весового коэффициента бипредсказания в качестве выводов.[0187] If merge_subblock_flag[xCb][yCb] is equal to 1, the extraction process for motion vectors and reference indices in sub-block merge mode as specified in 8.4.4.2 is activated with the location (xCb, yCb) of the luminance coding block, width cbWidth of the luminance coding block and cbHeight of the luminance coding block as inputs, the number of luminance coding subblocks in the horizontal direction numSbX and in the vertical direction numSbY, reference indices refIdxL0, refIdxL1, arrays predFlagL0[xSbIdx][ySbIdx] and predFlagL1[xSbIdx] [ySbIdx] flags for using prediction lists, arrays mvL0[xSbIdx][ySbIdx] and mvL0[xSbIdx][ySbIdx] of motion vectors of luma signal subblocks and arrays mvCL0[xSbIdx][ySbIdx], and mvCL1[xSbIdx][ySbIdx] of motion vectors of subblocks chrominance signals, with xSbIdx=0...numSbX-1, ySbIdx=0...numSbY-1 and biprediction weight index gbiIdx as outputs.

[0188] Следует признавать, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.[0188] It should be recognized that, depending on the example, certain steps or events of any of the technologies described herein may be performed in a different sequence, may be added, combined, or omitted altogether (for example, not all of the described steps or events are required for practical technology implementation). In addition, in certain examples, steps or events may be executed simultaneously, such as through multithreading, interrupt handling, or across multiple processors, rather than sequentially.

[0189] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполняться посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя машиночитаемый носитель.[0189] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination of the foregoing. When implemented in software, the functions may be stored or transmitted, as one or more instructions or code, on a computer-readable medium and executed by a hardware processing module. Computer-readable media may include computer-readable storage media that corresponds to a tangible medium, such as storage media, or communication media, including any medium that facilitates the transfer of a computer program from one place to another, such as according to a communication protocol. Thus, computer-readable media can generally correspond to (1) a tangible computer-readable storage medium that is non-volatile, or (2) a communication medium such as a signal or carrier. Storage media can be any available media that can be accessed by one or more computers or one or more processors in order to retrieve instructions, code, and/or data structures for implementing the technologies described in this disclosure. The computer program product may include a computer readable medium.

[0190] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL), или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.[0190] By way of example, and not limitation, these computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disc storage device, magnetic disk storage device or other magnetic storage devices, flash memory or any other medium that can be used to store the required program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a Web site, 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 media, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave media are included in the definition of media. However, it should be understood that computer-readable storage media and storage media do not include connections, carriers, signals, or other volatile media, but are instead directed to nonvolatile tangible storage media. Disc (disk) and disc (disc) as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc, while discs (disk ) usually play data magnetically, while disks (disc) usually play data optically using lasers. Combinations of the above should also be included in computer readable media.

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

[0192] Технологии этого раскрытия сущности могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.[0192] The technologies of this disclosure may be implemented in a wide variety of devices or equipment, including a wireless handset, an integrated circuit (IC), or an IC stack (eg, a chipset). Various components, modules, or blocks are described in this disclosure in order to emphasize the functional aspects of devices capable of implementing the disclosed technologies, but do not necessarily require implementation by different hardware modules. Conversely, as described above, various modules may be combined into a codec hardware module or provided through a set of cooperating hardware modules including one or more processors as described above in combination with appropriate software and/or firmware.

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

Claims (63)

1. Способ декодирования видеоданных, при этом способ содержит этапы, на которых:1. A method for decoding video data, the method comprising the steps of: - принимают кодированные видеоданные;- receive encoded video data; - синтаксически анализируют флаг движения на основе субъединиц предсказания из кодированных видеоданных;parsing the motion flag based on prediction subunits from the encoded video data; - в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлекают список кандидатов предсказания движения на уровне субъединиц предсказания;- in response to determining that the motion flag based on prediction subunits is active, retrieve the list of motion prediction candidates at the level of prediction subunits; - в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлекают список кандидатов предсказания движения на уровне единиц предсказания;- in response to determining that the motion flag based on prediction subunits is not active, retrieve the list of motion prediction candidates at the level of prediction units; - выбирают предиктор вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания, при этомselecting a motion vector predictor from either a list of motion prediction candidates at the prediction subunit level or from a list of motion prediction candidates at the prediction unit level, wherein список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках; иthe prediction subunit level motion prediction candidate list or the prediction unit level motion prediction candidate list is at least partially ordered based on motion prediction occurrences in neighboring blocks; and - декодируют кодированные видеоданные с использованием выбранного предиктора вектора движения.- decoding the encoded video data using the selected motion vector predictor. 2. Способ по п. 1, в котором кодированные видеоданные включают в себя текущий блок, и при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока.2. The method of claim 1, wherein the encoded video data includes a current block, and wherein the prediction subunit level motion prediction candidate list and the prediction unit level motion prediction candidate list are derived from adjacent blocks of the current block. 3. Способ по п. 2, в котором соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке.3. The method of claim 2, wherein the neighboring blocks are spatial neighbors of the current block in the current picture, or temporal neighbors of the current block in a previously encoded picture. 4. Способ по п. 1, в котором пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения.4. The method of claim 1, wherein pixels in the prediction unit share first motion vector information and pixels in the prediction subunit share second motion vector information, wherein the first motion vector information or the second vector information is determined from a selected motion vector predictor. 5. Способ по п. 1, в котором список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты.5. The method of claim 1, wherein the motion vector candidate list at the prediction unit level includes at least one of spatial neighbor candidates and temporal neighbor candidates. 6. Способ по п. 1, в котором список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD).6. The method of claim 1, wherein the motion prediction candidate list at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP) ), planar motion vector prediction, and template-based motion vector extraction (PMVD). 7. Способ по п. 1, дополнительно содержащий этап, на котором:7. The method according to claim 1, further comprising the step of: - извлекают индекс кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.extracting the merge candidate index in response to determining that the motion flag based on the prediction subunits is active, wherein the merge candidate index indicates the motion vector predictor to be selected. 8. Оборудование для декодирования видеоданных, причем оборудование содержит:8. Equipment for decoding video data, and the equipment contains: - запоминающее устройство для сохранения принимаемых кодированных видеоданных; и- a storage device for storing the received encoded video data; and - процессор, причем процессор выполнен с возможностью:- a processor, wherein the processor is configured to: - синтаксически анализировать флаг движения на основе субъединиц предсказания из кодированных видеоданных,- parse the motion flag based on the prediction subunits from the encoded video data, - в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлекать список кандидатов предсказания движения на уровне субъединиц предсказания,- in response to determining that the movement flag based on prediction subunits is active, retrieve the list of motion prediction candidates at the level of prediction subunits, - в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлекать список кандидатов предсказания движения на уровне единиц предсказания,- in response to determining that the movement flag based on prediction subunits is not active, retrieve the list of motion prediction candidates at the level of prediction units, - выбирать предиктор вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания, при этом- select a motion vector predictor either from a list of motion prediction candidates at the prediction subunit level, or from a list of motion prediction candidates at the prediction unit level, wherein список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках, иthe motion prediction candidate list at the prediction subunit level or the motion prediction candidate list at the prediction unit level is at least partially ordered based on motion prediction occurrences in neighboring blocks, and - декодировать кодированные видеоданные с использованием выбранного предиктора вектора движения.- decode the encoded video data using the selected motion vector predictor. 9. Оборудование по п. 8, в котором кодированные видеоданные включают в себя текущий блок, и при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока.9. The equipment of claim 8, wherein the encoded video data includes a current block, and wherein the prediction subunit level motion prediction candidate list and the prediction unit level motion prediction candidate list are derived from neighboring blocks of the current block. 10. Оборудование по п. 9, в котором соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке.10. The equipment of claim 9, wherein the neighboring blocks are the spatial neighbors of the current block in the current picture, or the temporal neighbors of the current block in the previously encoded picture. 11. Оборудование по п. 8, в котором пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения.11. The equipment of claim 8, wherein the pixels in the prediction unit share the first motion vector information and the pixels in the prediction subunit share the second motion vector information, the first motion vector information or the second vector information being determined from the selected motion vector predictor. 12. Оборудование по п. 8, в котором список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты.12. The equipment of claim 8, wherein the motion vector candidate list at the prediction unit level includes at least one of spatial neighbor candidates and temporal neighbor candidates. 13. Оборудование по п. 8, в котором список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD).13. The equipment of claim 8, wherein the motion prediction candidate list at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP) ), planar motion vector prediction, and template-based motion vector extraction (PMVD). 14. Оборудование по п. 8, в котором процессор дополнительно выполнен с возможностью:14. Equipment according to claim 8, in which the processor is additionally configured to: - извлекать индекс кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.- retrieve the merge candidate index in response to determining that the motion flag based on prediction subunits is active, wherein the merge candidate index indicates the motion vector predictor to be selected. 15. Оборудование для декодирования видеоданных, причем оборудование содержит:15. Equipment for decoding video data, and the equipment contains: - средство запоминающего устройства для сохранения принимаемых кодированных видеоданных; и- storage means for storing received encoded video data; and - средство процессора, причем средство процессора выполнено с возможностью:- a processor means, wherein the processor means is configured to: - синтаксически анализировать флаг движения на основе субъединиц предсказания из кодированных видеоданных,- parse the motion flag based on the prediction subunits from the encoded video data, - в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлекать список кандидатов предсказания движения на уровне субъединиц предсказания,- in response to determining that the movement flag based on prediction subunits is active, retrieve the list of motion prediction candidates at the level of prediction subunits, - в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлекать список кандидатов предсказания движения на уровне единиц предсказания,- in response to determining that the movement flag based on prediction subunits is not active, retrieve the list of motion prediction candidates at the level of prediction units, - выбирать предиктор вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания, при этом- select a motion vector predictor either from a list of motion prediction candidates at the prediction subunit level, or from a list of motion prediction candidates at the prediction unit level, wherein список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках, иthe motion prediction candidate list at the prediction subunit level or the motion prediction candidate list at the prediction unit level is at least partially ordered based on motion prediction occurrences in neighboring blocks, and - декодировать кодированные видеоданные с использованием выбранного предиктора вектора движения.- decode the encoded video data using the selected motion vector predictor. 16. Оборудование по п. 15, в котором кодированные видеоданные включают в себя текущий блок, и при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока.16. The equipment of claim 15, wherein the encoded video data includes a current block, and wherein the prediction subunit level motion prediction candidate list and the prediction unit level motion prediction candidate list are derived from neighboring blocks of the current block. 17. Оборудование по п. 16, в котором соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке.17. The equipment of claim 16, wherein the neighboring blocks are the spatial neighbors of the current block in the current picture, or the temporal neighbors of the current block in the previously encoded picture. 18. Оборудование по п. 15, в котором пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения.18. The equipment of claim 15, wherein pixels in the prediction unit share first motion vector information and pixels in the prediction subunit share second motion vector information, wherein the first motion vector information or the second vector information is determined from a selected motion vector predictor. 19. Оборудование по п. 15, в котором список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты.19. The equipment of claim 15, wherein the motion vector candidate list at the prediction unit level includes at least one of spatial neighbor candidates and temporal neighbor candidates. 20. Оборудование по п. 15, в котором список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD).20. The equipment of claim 15, wherein the motion prediction candidate list at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), space-time motion vector prediction (STMVP) ), planar motion vector prediction, and template-based motion vector extraction (PMVD). 21. Оборудование по п. 15, в котором средство процессора дополнительно выполнено с возможностью:21. The equipment of claim 15, wherein the processor means is further configured to: - извлекать индекс кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.- retrieve the merge candidate index in response to determining that the motion flag based on prediction subunits is active, wherein the merge candidate index indicates the motion vector predictor to be selected. 22. Энергонезависимый машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют одному или более процессоров осуществлять способ, содержащий:22. A non-volatile computer-readable storage medium having stored instructions that, when executed, instructs one or more processors to perform a method, comprising: - прием кодированных видеоданных;- reception of encoded video data; - синтаксический анализ флага движения на основе субъединиц предсказания из кодированных видеоданных;- parsing the motion flag based on prediction subunits from encoded video data; - в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, извлечение списка кандидатов предсказания движения на уровне субъединиц предсказания;- in response to determining that the motion flag based on prediction subunits is active, extracting a list of motion prediction candidates at the level of prediction subunits; - в ответ на определение, что флаг движения на основе субъединиц предсказания не является активным, извлечение списка кандидатов предсказания движения на уровне единиц предсказания;- in response to determining that the motion flag based on prediction subunits is not active, extracting a list of motion prediction candidates at the level of prediction units; - выбор предиктора вектора движения либо из списка кандидатов предсказания движения на уровне субъединиц предсказания, либо из списка кандидатов предсказания движения на уровне единиц предсказания, при этом- selecting a motion vector predictor from either a list of motion prediction candidates at the prediction subunit level or from a list of motion prediction candidates at the prediction unit level, wherein список кандидатов предсказания движения на уровне субъединиц предсказания или список кандидатов предсказания движения на уровне единиц предсказания, по меньшей мере, частично упорядочивается на основе возникновений предсказания движения в соседних блоках; иthe prediction subunit level motion prediction candidate list or the prediction unit level motion prediction candidate list is at least partially ordered based on motion prediction occurrences in neighboring blocks; and - декодирование кодированных видеоданных с использованием выбранного предиктора вектора движения.- decoding the encoded video data using the selected motion vector predictor. 23. Носитель по п. 22, в котором кодированные видеоданные включают в себя текущий блок, при этом список кандидатов предсказания движения на уровне субъединиц предсказания и список кандидатов предсказания движения на уровне единиц предсказания извлекаются из соседних блоков текущего блока.23. The medium of claim 22, wherein the encoded video data includes a current block, wherein the prediction subunit level motion prediction candidate list and the prediction unit level motion prediction candidate list are derived from neighboring blocks of the current block. 24. Носитель по п. 23, в котором соседние блоки представляют собой пространственных соседей текущего блока в текущей картинке или временных соседей текущего блока в ранее кодированной картинке.24. The carrier of claim 23, wherein the neighboring blocks are the spatial neighbors of the current block in the current picture, or the temporal neighbors of the current block in the previously encoded picture. 25. Носитель по п. 22, в котором:25. The carrier according to claim 22, in which: - пикселы в единице предсказания совместно используют первую информацию вектора движения, и пикселы в субъединице предсказания совместно используют вторую информацию вектора движения, при этом первая информация вектора движения или вторая векторная информация определяется из выбранного предиктора вектора движения,the pixels in the prediction unit share the first motion vector information and the pixels in the prediction subunit share the second motion vector information, wherein the first motion vector information or the second vector information is determined from the selected motion vector predictor, - при этом список кандидатов векторов движения на уровне единиц предсказания включает в себя по меньшей мере одно из следующего: пространственные соседние кандидаты и временные соседние кандидаты, иwherein the motion vector candidate list at the prediction unit level includes at least one of the following: spatial neighbor candidates and temporal neighbor candidates, and - при этом список кандидатов предсказания движения на уровне субъединиц предсказания включает в себя по меньшей мере одно из следующего: аффинное предсказание векторов движения, альтернативное временное предсказание векторов движения (ATMVP), пространственно-временное предсказание векторов движения (STMVP), планарное предсказание векторов движения и извлечение векторов движения на основе сопоставления шаблонов (PMVD).wherein the list of motion prediction candidates at the prediction subunit level includes at least one of the following: affine motion vector prediction, alternative temporal motion vector prediction (ATMVP), spatiotemporal motion vector prediction (STMVP), planar motion vector prediction, and motion vector extraction based on pattern matching (PMVD). 26. Носитель по п. 22, в котором способ дополнительно содержит:26. The carrier of claim 22, wherein the method further comprises: - извлечение индекса кандидата слияния в ответ на определение, что флаг движения на основе субъединиц предсказания является активным, при этом индекс кандидата слияния указывает предиктор вектора движения, который должен выбираться.- extracting the merge candidate index in response to determining that the motion flag based on prediction subunits is active, wherein the merge candidate index indicates the motion vector predictor to be selected.
RU2020141568A 2018-06-19 2019-06-18 Transmission of a motion vector predictor in service signals based on prediction subunits RU2783333C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/687,052 2018-06-19
US16/443,113 2019-06-17

Publications (2)

Publication Number Publication Date
RU2020141568A RU2020141568A (en) 2022-07-19
RU2783333C2 true RU2783333C2 (en) 2022-11-11

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337086A (en) * 1991-10-22 1994-08-09 Sony Corporation Image signal coding and decoding apparatus with multiple-process motion compensation
RU2514929C2 (en) * 2010-01-14 2014-05-10 Самсунг Электроникс Ко., Лтд. Method and apparatus for encoding and decoding motion vector
US20170111654A1 (en) * 2011-03-21 2017-04-20 Lg Electronics Inc. Method for selecting motion vector predictor and device using same
RU2624578C2 (en) * 2012-07-02 2017-07-04 Самсунг Электроникс Ко., Лтд. Method and device for motion vector prediction for video encoding or decoding
US20170332099A1 (en) * 2016-05-13 2017-11-16 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
WO2018061522A1 (en) * 2016-09-27 2018-04-05 シャープ株式会社 Motion vector generation device, prediction image generation device, moving image decoding device, and moving image encoding device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337086A (en) * 1991-10-22 1994-08-09 Sony Corporation Image signal coding and decoding apparatus with multiple-process motion compensation
RU2514929C2 (en) * 2010-01-14 2014-05-10 Самсунг Электроникс Ко., Лтд. Method and apparatus for encoding and decoding motion vector
US20170111654A1 (en) * 2011-03-21 2017-04-20 Lg Electronics Inc. Method for selecting motion vector predictor and device using same
RU2624578C2 (en) * 2012-07-02 2017-07-04 Самсунг Электроникс Ко., Лтд. Method and device for motion vector prediction for video encoding or decoding
US20170332099A1 (en) * 2016-05-13 2017-11-16 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
WO2018061522A1 (en) * 2016-09-27 2018-04-05 シャープ株式会社 Motion vector generation device, prediction image generation device, moving image decoding device, and moving image encoding device

Similar Documents

Publication Publication Date Title
EP3888369B1 (en) Simplification of history-based motion vector prediction
CN113196749B (en) Method and apparatus for decoding video data
US11025903B2 (en) Coding video data using derived chroma mode
US11350083B2 (en) Intra block copy merging data syntax for video coding
JP7474774B2 (en) Motion Vector Predictor List Generation for Intra Block Copy Mode in Video Coding
CN112806012A (en) History-based motion vector prediction for inter-prediction coding
AU2019288269B2 (en) Signaling sub-prediction unit motion vector predictor
CN112262580B (en) Decoder-side motion vector derivation for video coding
JP2022533664A (en) Merge mode coding for video coding
KR20180016390A (en) Systems and methods for determining illumination compensation status for video coding
KR20180016389A (en) Systems and methods for determining illumination compensation status for video coding
US11064192B2 (en) Simplification of spatial-temporal motion vector prediction
JP2024514103A (en) Improved template matching in inter prediction mode
JP2022511809A (en) Spatial-time motion vector prediction pattern for video coding
JP2022539005A (en) Derivation of Temporal Motion Vector Prediction Candidates in Video Coding
EP4364421A1 (en) Using unrefined motion vectors for performing decoder-side motion vector derivation
JP2024508216A (en) Model-based motion vector difference derivation and template matching prediction for video coding
CN114073079B (en) Motion vector prediction with motion information acquisition buffer
KR20210150585A (en) Syntax signaling method and apparatus in video/image coding system
RU2783333C2 (en) Transmission of a motion vector predictor in service signals based on prediction subunits
KR20250002174A (en) Methods for adaptive signaling of the maximum number of merge candidates in multi-hypothesis prediction
JP2024512539A (en) Adaptive coding of motion information for multi-hypothesis prediction for video coding.