RU2803896C2 - Intra-inter prediction mode for video data - Google Patents

Intra-inter prediction mode for video data Download PDF

Info

Publication number
RU2803896C2
RU2803896C2 RU2021123044A RU2021123044A RU2803896C2 RU 2803896 C2 RU2803896 C2 RU 2803896C2 RU 2021123044 A RU2021123044 A RU 2021123044A RU 2021123044 A RU2021123044 A RU 2021123044A RU 2803896 C2 RU2803896 C2 RU 2803896C2
Authority
RU
Russia
Prior art keywords
block
prediction
intra
weight coefficient
current
Prior art date
Application number
RU2021123044A
Other languages
Russian (ru)
Other versions
RU2021123044A (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 RU2021123044A publication Critical patent/RU2021123044A/en
Application granted granted Critical
Publication of RU2803896C2 publication Critical patent/RU2803896C2/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: device for coding (encoding or decoding) video data includes a memory device for storing video data and one or more processors implemented in the circuit and configured to generate an inter-prediction block for the current video color block; generate an intra prediction block for the current chrominance block of the video data; determine the number of adjacent blocks with respect to the luminance block corresponding to the current chrominance block, which are encoded with intra prediction; determine the first weight coefficient and the second weight coefficient according to the number of adjacent blocks that are encoded with intra prediction; apply a first weight to the inter prediction block and a second weight to the intra prediction block; combine the first weighted inter prediction block and the second weighted intra prediction block to generate a prediction block for the current chrominance block; and encode the current chrominance block using the prediction block.
EFFECT: increasing the video encoding efficiency.
44 cl, 14 dwg

Description

[0001] Данная заявка испрашивает приоритет заявки (США) № 16/781751, поданной 4 февраля 2020 года, и предварительной заявки на патент (США) № 62/802515, поданной 7 февраля 2019 года, содержимое каждой из которых полностью включено в данный документ посредством ссылки.[0001] This application claims priority to U.S. Application No. 16/781,751, filed Feb. 4, 2020, and U.S. Provisional Patent Application No. 62/802,515, filed Feb. 7, 2019, the contents of each of which are incorporated herein in their entirety. via link.

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

[0002] Данное раскрытие сущности относится к кодированию видео, включающему в себя кодирование видео и декодирование видео.[0002] This disclosure relates to video encoding, including video encoding 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), ITU-T H.265/стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.[0003] Digital video support may be included in a wide range of devices, including digital television receivers, digital direct broadcast systems, wireless broadcast systems, personal digital devices (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 "smart phones", video conferencing devices, video streaming devices, etc. Digital video devices implement video encoding technologies such as video encoding technologies described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10, Enhanced video coding (AVC), ITU-T H.265/High Efficiency Video Coding (HEVC) standard, and extensions to such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video encoding technologies.

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

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

[0005] В общем, это раскрытие сущности описывает технологии для выполнения комбинированного взаимно-внутреннего прогнозирования. Таким образом, при видеокодировании, видеокодер (например, видеокодер или видеодекодер) может выполнять кодирование на основе блоков картинок, формирующих видеопоследовательность. Видеокодер может кодировать блоки картинки посредством формирования блока прогнозирования и кодирования остаточного блока, представляющего повыборочные разности между блоком прогнозирования и фактическим блоком, который должен кодироваться. Взаимное прогнозирование представляет прогнозирование из опорного блока предыдущей кодированной картинки, тогда как внутреннее прогнозирование представляет прогнозирование из ранее кодированных опорных данных текущей картинки. Комбинированное взаимно-внутреннее прогнозирование представляет прогнозирование с использованием как взаимного прогнозирования, так и внутреннего прогнозирования. В частности, это раскрытие сущности описывает улучшенные технологии для выполнения комбинированного взаимно-внутреннего прогнозирования. Технологии этого раскрытия сущности могут использоваться, например, в стандарте универсального кодирования видео (VVC) либо других стандартах кодирования видео, которые поддерживают комбинированное взаимно-внутреннее прогнозирование.[0005] In general, this disclosure describes technologies for performing combined inter-intra prediction. Thus, in video encoding, a video encoder (eg, a video encoder or video decoder) may perform encoding based on blocks of pictures forming a video sequence. A video encoder may encode picture blocks by generating a prediction block and encoding a residual block representing sample-by-sample differences between the prediction block and the actual block to be encoded. Inter prediction represents prediction from a reference block of a previous encoded picture, while intra prediction represents prediction from previously encoded reference data of the current picture. Combined inter-intraforecasting represents forecasting using both interforecasting and intraforecasting. In particular, this disclosure describes improved technologies for performing combined inter-intra forecasting. The techniques of this disclosure may be used, for example, in the Versatile Video Coding (VVC) standard or other video coding standards that support combined inter-intra prediction.

[0006] В одном примере, способ кодирования видеоданных включает в себя формирование блока взаимного прогнозирования для текущего блока цветности видеоданных; формирование блока внутреннего прогнозирования для текущего блока цветности видеоданных; определение числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определение первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодирование текущего блока цветности с использованием блока прогнозирования.[0006] In one example, a method for encoding video data includes generating an inter-prediction block for a current chrominance block of the video data; generating an internal prediction block for the current color block of video data; determining the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are intra-prediction encoded; determining a first weight coefficient and a second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; applying a first weight coefficient to the inter-prediction block and a second weight coefficient to the intra-prediction block; combining the first weighted inter-prediction block and the second weighted intra-prediction block to form a prediction block for the current chrominance block; and encoding the current chrominance block using the prediction block.

[0007] В другом примере, устройство для кодирования видеоданных включает в себя запоминающее устройство для сохранения видеоданных и один или более процессоров, реализованных в схеме и выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.[0007] In another example, an apparatus for encoding video data includes a memory device for storing video data and one or more processors implemented in the circuit and configured to generate an inter-prediction block for a current chroma block of video data; generate an internal prediction block for the current color block of video data; determine the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; determine the first weight coefficient and the second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; combine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; and encode the current chrominance block using a prediction block.

[0008] В другом примере, машиночитаемый носитель хранения данных имеет сохраненные на нем инструкции, которые при выполнении инструктируют процессору формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.[0008] In another example, a computer-readable storage medium has instructions stored thereon that, when executed, instruct the processor to generate an inter-prediction block for the current chrominance block of video data; generate an internal prediction block for the current color block of video data; determine the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; determine the first weight coefficient and the second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; combine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; and encode the current chrominance block using a prediction block.

[0009] В другом примере, устройство для кодирования видеоданных включает в себя средство для формирования блока взаимного прогнозирования для текущего блока цветности видеоданных; средство для формирования блока внутреннего прогнозирования для текущего блока цветности видеоданных; средство для определения числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; средство для определения первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; средство для применения первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; средство для комбинирования первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и средство для кодирования текущего блока цветности с использованием блока прогнозирования.[0009] In another example, an apparatus for encoding video data includes means for generating an inter-prediction block for a current chroma block of video data; means for generating an internal prediction block for the current chrominance block of video data; means for determining the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block that are intra-prediction encoded; means for determining a first weight coefficient and a second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; means for applying a first weight to the inter-prediction block and a second weight to the intra-prediction block; means for combining the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; and means for encoding the current chrominance block using the prediction block.

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

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

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

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

[0013] Фиг. 3A-3F являются концептуальными схемами, иллюстрирующими примерные местоположения соседних блоков по отношению к текущим блокам.[0013] FIG. 3A-3F are conceptual diagrams illustrating exemplary locations of neighboring blocks relative to current blocks.

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

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

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

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

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

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

[0019] Стандарты кодирования видео включают в себя 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).[0019] Video encoding 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 extensions to Scalable Video Coding (SVC) and Multi-View Video Coding (MVC).

[0020] Стандарт высокоэффективного кодирования видео (HEVC) завершен Объединенной группой для совместной работы над видеостандартами (JCT-VC) в составе Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC в апреле 2013 года.[0020] The High Efficiency Video Coding (HEVC) standard was completed by the Joint Collaborative Group on Video Standards (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Motion Picture Experts Group (MPEG) in April 2013.

[0021] Объединенная экспертная группа по видеостандартам (JVET), совместная команда, сформированная посредством MPEG исследовательской группы 16 ITU-T VCEG, в последнее время работает над новым стандартом кодирования видео, известным как стандарт универсального кодирования видео (VVC). Главная цель VVC состоит в том, чтобы предоставлять существенное повышение производительности сжатия по сравнению с существующим HEVC-стандарт, что способствует развертыванию более высококачественных услуг передачи видео и новых вариантов применения, таких как всенаправленное иммерсивное мультимедиа на 360° и видео с расширенным динамическим диапазоном (HDR).[0021] The Joint Video Experts Team (JVET), a collaborative team formed through MPEG study group 16 of the ITU-T VCEG, has recently been working on a new video coding standard known as the Versatile Video Coding (VVC) standard. The main goal of VVC is to provide significant improvements in compression performance over the existing HEVC standard, facilitating the deployment of higher quality video services and new use cases such as 360° omnidirectional immersive media and high dynamic range (HDR) video ).

[0022] Это раскрытие сущности описывает технологии, которые могут улучшать режим комбинированного взаимно-внутреннего прогнозирования для прогнозирования видеоданных. Многогипотезный внутренний режим (MHI) показан как улучшающий режим объединения посредством комбинирования одного внутреннего прогнозирования и одного объединяющего индексированного прогнозирования и внедрен на 12-ой JVET Macao Meeting в работе авторов: M.-S. Chiang, C.-W. Hsu, Y.-W. Huang, S.-M. Lei "CE10.1.1: Multi-hypothesis prediction for improving AMVP mode, skip or merge mode and intra mode", на JVET-L0100, октябрь 2018 года. Согласно MHI, возможные варианты в наборе из 4 внутренних режимов, включающих в себя планарное, DC-, горизонтальное и вертикальное прогнозирование, оцениваются, чтобы выбирать оптимальное прогнозирование, которое должно комбинироваться с объединяющим индексированным прогнозированием. В процессе комбинирования, изложенном в вышеприведенном примере, если планарный или DC-режим выбирается, либо размер блока меньше 4, равные весовые коэффициенты развертываются. В противном случае, весовые коэффициенты для внутренне и взаимно прогнозированных выборок (wIntra, wInter) отличаются на основе области выборок в блоке кодирования.[0022] This disclosure describes technologies that can improve the combined inter-intra prediction mode for predicting video data. Multi-Hypothesis Intra-mode (MHI) is shown to improve the fusion mode by combining one intra-forecast and one fusion indexed prediction and implemented at the 12th JVET Macao Meeting by the authors: M.-S. Chiang, C.-W. Hsu, Y.-W. Huang, S.-M. Lei "CE10.1.1: Multi-hypothesis prediction for improving AMVP mode, skip or merge mode and intra mode", on JVET-L0100, October 2018. According to MHI, candidate options in a set of 4 internal modes, including planar, DC, horizontal and vertical forecasting, are evaluated to select the optimal forecast to be combined with the pooling indexed forecast. In the combining process outlined in the example above, if planar or DC mode is selected or the block size is less than 4, equal weights are unwrapped. Otherwise, the weights for the internally and mutually predicted samples (wIntra, wInter) differ based on the area of the samples in the encoding block.

[0023] Это раскрытие сущности признает то, что в технологиях взаимно-внутреннего прогнозирования, описанных в JVET-L0100, информация кодирования соседних блоков не использована для того, чтобы повышать производительность кодирования этих инструментальных средств. Кроме того, весовой коэффициент на основе области используется для режимов горизонтального и вертикального прогнозирования, что может вызывать артефакты вдоль границ областей.[0023] This disclosure recognizes that in the inter-intra prediction technologies described in JVET-L0100, neighbor block coding information is not used to improve the coding performance of these tools. Additionally, region-based weighting is used for horizontal and vertical prediction modes, which may cause artifacts along region boundaries.

[0024] Технологии этого раскрытия сущности могут повышать производительность взаимно-внутреннего кодирования. Эти улучшения могут получаться в результате схемы позиционно-независимого взвешивания этих технологий. Согласно технологиям этого раскрытия сущности, весовые коэффициенты для взаимных и внутренних прогнозных выборок могут адаптивно определяться с использованием информации кодирования, например, числа внутренне кодированных соседних блоков, числа взаимного прогнозирования индексированных блоков объединения (уни- или бипрогнозирование) и/или размера текущего блока.[0024] This disclosure techniques can improve inter-intra coding performance. These improvements may result from the position-independent weighting scheme of these technologies. According to the techniques of this disclosure, weights for the inter- and intra-prediction samples can be adaptively determined using encoding information, such as the number of intra-encoded neighboring blocks, the inter-prediction number of indexed merge blocks (uni- or bi-prediction), and/or the size of the current block.

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

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

[0027] В примере по фиг. 1, исходное устройство 102 включает в себя видеоисточник 104, запоминающее устройство 106, видеокодер 200 и интерфейс 108 вывода. Целевое устройство 116 включает в себя интерфейс 122 ввода, видеодекодер 300, запоминающее устройство 120 и устройство 118 отображения. В соответствии с этим раскрытием сущности, видеокодер 200 исходного устройства 102 и видеодекодер 300 целевого устройства 116 могут быть выполнены с возможностью применять технологии для взаимно-внутреннего кодирования. Таким образом, исходное устройство 102 представляет пример устройства кодирования видео, в то время как целевое устройство 116 представляет пример устройства декодирования видео. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 102 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 116 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.[0027] 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. According to this disclosure, video encoder 200 of source device 102 and video decoder 300 of target device 116 may be configured to employ inter-intra coding technologies. Thus, the source device 102 represents an example of a video encoding device, while the target device 116 represents an example of a video decoding device. In other examples, the source device and 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 interface with an external display device instead of including an integrated display device.

[0028] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для взаимно-внутреннего кодирования. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие сущности относится к устройству "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, устройства 102, 116 могут работать практически симметрично, так что каждое из устройств 102, 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 102, 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.[0028] System 100, as shown in FIG. 1 is simply one example. In general, any digital video encoding and/or decoding apparatus may implement inter-intra coding techniques. Source device 102 and target device 116 are simply examples of such encoding devices in which source device 102 generates encoded video data for transmission to target device 116. This disclosure refers to an "encoder" device as a device that performs encoding (encoding and/or or decoding) data. Thus, video encoder 200 and video decoder 300 represent examples of encoding devices, particularly video encoder and 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 may support one-way and two-way video transmission between video devices 102, 116, for example, for video streaming, video playback, video broadcasting, or video telephony.

[0029] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию картинок (также называемых "кадрами") видеоданных в видеокодер 200, который кодирует данные для картинок. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или машиногенерируемые видеоданные. Видеокодер 200 может перекомпоновывать картинки из порядка приема (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на машиночитаемый носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.[0029] In general, video source 104 represents a source of video data (ie, raw, unencoded 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 machine-generated video. In each case, video encoder 200 encodes captured, pre-captured, or machine-generated video data. Video encoder 200 may rearrange pictures from reception order (sometimes called "display order") to encoding order for encoding. Video encoder 200 may generate a bit stream including encoded video data. The source device 102 may then output the encoded video data through an output interface 108 to a computer-readable medium 110 for reception and/or retrieval, such as through an input interface 122 of the target device 116.

[0030] Запоминающее устройство 106 исходного устройства 102 и запоминающее устройство 120 целевого устройства 116 представляют запоминающие устройства общего назначения. В некотором примере, запоминающие устройства 106, 120 могут сохранять необработанные видеоданные, например, необработанное видео из видеоисточника 104 и необработанные декодированные видеоданные из видеодекодера 300. Дополнительно или альтернативно, запоминающие устройства 106, 120 могут сохранять программные инструкции, выполняемые, например, посредством видеокодера 200 и видеодекодера 300, соответственно. Хотя показаны отдельно от видеокодера 200 и видеодекодера 300 в этом примере, следует понимать, что видеокодер 200 и видеодекодер 300 также могут включать в себя внутренние запоминающие устройства для функционально аналогичных или эквивалентных целей. Кроме того, запоминающие устройства 106, 120 могут сохранять кодированные видеоданные, например, выводимые из видеокодера 200 и вводимые в видеодекодер 300. В некоторых примерах, части запоминающих устройств 106, 120 могут выделяться в качестве одного или более видеобуферов, например, чтобы сохранять необработанные, декодированные и/или кодированные видеоданные.[0030] 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, storage devices 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, storage devices 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. In addition, the storage devices 106, 120 may store encoded video data, such as output from the video encoder 200 and input to the video decoder 300. In some examples, portions of the storage devices 106, 120 may be allocated as one or more video buffers, for example, to store raw, decoded and/or encoded video data.

[0031] Машиночитаемый носитель 110 может представлять любой тип носителя или устройства, допускающего транспортировку кодированных видеоданных из исходного устройства 102 в целевое устройство 116. В одном примере, машиночитаемый носитель 110 представляет среду связи, чтобы обеспечивать возможность исходному устройству 102 передавать кодированные видеоданные непосредственно в целевое устройство 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Интерфейс 108 вывода может модулировать передаваемый сигнал, включающий в себя кодированные видеоданные, и интерфейс 122 ввода может демодулировать принимаемый сигнал передачи, согласно стандарту связи, такому как протокол беспроводной связи. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр либо одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 102 в целевое устройство 116.[0031] Computer readable media 110 may represent any type of media or device capable of transporting encoded video data from a source device 102 to a target device 116. In one example, computer readable media 110 represents a communication medium to enable source device 102 to transmit encoded video data directly to a target device device 116 in real time, for example, via a radio frequency network or a computer network. Output interface 108 may modulate a transmitted signal including encoded video data, and input interface 122 may demodulate 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 communications environment may include routers, switches, base stations, or any other equipment that may be useful to facilitate transmission from source device 102 to target device 116.

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

[0033] В некоторых примерах, исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.[0033] In some examples, source device 102 may output encoded video data to a file server 114 or other intermediate storage device that may store encoded video generated by source device 102. Destination device 116 may access stored video data from file server 114 via streaming or downloading. The file server 114 may be any type of server device capable of storing encoded video data and transmitting the encoded video data to the target device 116. The file server 114 may be a web server (eg, for a web site), a file transfer protocol (FTP) server. , a network-attached content delivery device or network-attached storage (NAS) protocol device. Target device 116 can access encoded video data from file server 114 over any standard data connection, including an Internet connection. This may include a wireless link (eg, Wi-Fi connection), a wired link (eg, digital subscriber line (DSL), cable modem, etc.), or a combination thereof, which is suitable for accessing the encoded video data stored on 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.

[0034] Интерфейс 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 ввода.[0034] Output interface 108 and input interface 122 may represent wireless transmitters/receivers, 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 include 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), improved standard LTE, 5G, etc. In some examples in which the output interface 108 includes a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, in accordance with other wireless communication standards, such as the IEEE 802.11 specification, IEEE 802.15 -specification (for example, ZigBee™), Bluetooth™ standard, etc. In some examples, source device 102 and/or target device 116 may include corresponding on-chip (SoC) devices. For example, source device 102 may include an SoC device to perform functionality associated with video encoder 200 and/or output interface 108, and target device 116 may include an SoC device to perform functionality associated with video decoder 300 and/or interface 122 inputs.

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

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

[0037] Хотя не показано на фиг. 1, в некоторых примерах, видеокодер 200 и видеодекодер 300 могут быть интегрированы с аудиокодером и/или аудиодекодером и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать мультимедийные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).[0037] 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 corresponding multiplexer-demultiplexer modules or other hardware and software to process media streams including both audio , and video in the general data stream. If applicable, multiplexer-demultiplexer modules may conform to the ITU H.223 multiplexer protocol or other protocols such as User Datagram Protocol (UDP).

[0038] Видеокодер 200 и видеодекодер 300 могут реализовываться как любая из множества надлежащих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), как дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо как любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 200 и видеодекодера 300 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 200 и/или видеодекодер 300, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.[0038] 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), such as discrete logic, software, hardware, firmware, or any combination of the above. When the technologies are implemented partially in software, the apparatus may store the instructions for the software on a suitable non-transitory computer readable medium and execute the instructions in hardware using one or more processors to implement the technologies of this disclosure. Video encoder 200 and video decoder 300 may each 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 corresponding 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 telephone.

[0039] Видеокодер 200 и видеодекодер 300 могут работать согласно стандарту кодирования видео, такому как ITU-T H.265, также называемому "стандартом высокоэффективного кодирования видео (HEVC)", либо его расширениям, таким как расширения кодирования многовидового видео и/или масштабируемого кодирования видео. Альтернативно, видеокодер 200 и видеодекодер 300 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт объединенной исследовательской группы тестовой модели (JEM) или ITU-T H.266, также называемый "универсальным кодированием видео (VVC)". Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования.[0039] 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 Group Test Model (JEM) standard or ITU-T H.266, also referred to as “Versatile Video Coding (VVC)”. However, the techniques of this disclosure are not limited to any particular coding standard.

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

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

[0042] HEVC задает различные блоки, включающие в себя единицы кодирования (CU), единицы прогнозирования (PU) и единицы преобразования (TU). Согласно HEVC, видеокодер (к примеру, видеокодер 200) сегментирует единицу дерева кодирования (CTU) на CU согласно структуре в виде дерева квадрантов. Таким образом, видеокодер сегментирует CTU и CU на четыре равных неперекрывающихся квадрата, и каждый узел дерева квадрантов имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут называться "узлами-листьями", и CU таких узлов-листьев могут включать в себя одну или более PU и/или одну или более TU. Видеокодер дополнительно может сегментировать PU и TU. Например, в HEVC, остаточное дерево квадрантов (RQT) представляет сегментацию TU. В HEVC, PU представляют данные взаимного прогнозирования, в то время как TU представляют остаточные данные. CU, которые внутренне прогнозируются, включают в себя информацию внутреннего прогнозирования, такую как индикатор внутреннего режима.[0042] HEVC defines various blocks including coding units (CU), prediction units (PU), and transformation 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 quadrants, 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 can further segment PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents the TU segmentation. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are internally predicted include internal prediction information such as an internal mode indicator.

[0043] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (к примеру, видеокодер 200) сегментирует картинку на множество единиц дерева кодирования (CTU). Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, такие как разделение между CU, PU и TU HEVC. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на основе дерева квадрантов, и второй уровень, сегментированный согласно сегментации на основе двоичного дерева. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).[0043] 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 a number of coding tree units (CTUs). Video encoder 200 may segment CTUs according to a tree structure, such as a quadrant-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure removes the concepts of several types of segmentation, such as the division between CUs, PUs and HEVC TUs. The QTBT structure includes two layers: a first layer segmented according to a quadtree-based segmentation and a second level segmented according to a binary tree-based segmentation. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of binary trees correspond to coding units (CUs).

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

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

[0046] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать сегментацию на основе дерева квадрантов согласно HEVC, QTBT-сегментацию, MTT-сегментацию либо другие структуры сегментации. Для целей пояснения, описание технологий этого раскрытия сущности представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия сущности также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на основе дерева квадрантов или другие типы сегментации.[0046] Video encoder 200 and video decoder 300 may be configured to use HEVC quadtree segmentation, QTBT segmentation, MTT segmentation, or other segmentation structures. For purposes of explanation, a description of the techniques of this disclosure is presented with respect 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.

[0047] Это раскрытие сущности может использовать "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.[0047] This disclosure may use "NxN" and "N by N" interchangeably to refer to dimensions within samples of a block (eg, CU or other video block) in terms of vertical and horizontal dimensions, e.g., 16× samples 16 or 16 by 16 samples. In general, a 16x16 CU should have 16 pixels in the vertical direction (y=16) and 16 pixels in the horizontal direction (x=16). Likewise, a 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. Selections in CU can be arranged in rows and columns. In addition, CUs do not necessarily have the same number of samples in the horizontal direction and in the vertical direction. For example, CUs may contain NxM samples, where M is not necessarily equal to N.

[0048] Видеокодер 200 кодирует видеоданные для CU, представляющих информацию прогнозирования и/или остаточную информацию и другую информацию. Информация прогнозирования указывает то, как CU должна прогнозироваться, чтобы формировать прогнозный блок для CU. Остаточная информация, в общем, представляет последовательные выборочные разности между выборками CU до кодирования и прогнозным блоком.[0048] 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 to generate a prediction block for the CU. The residual information generally represents the successive sample differences between the pre-encoding CU samples and the prediction block.

[0049] Чтобы прогнозировать CU, видеокодер 200, в общем, может формировать прогнозный блок для CU через взаимное прогнозирование или внутреннее прогнозирование. Взаимное прогнозирование, в общем, относится к прогнозированию CU из данных ранее кодированной картинки, тогда как внутреннее прогнозирование, в общем, означает прогнозирование CU из ранее кодированных данных такой же картинки. Чтобы выполнять взаимное прогнозирование, видеокодер 200 может формировать прогнозный блок с использованием одного или более векторов движения. Видеокодер 200, в общем, может выполнять поиск движения для того, чтобы идентифицировать опорный блок, который тесно совпадает с CU, например, с точки зрения разностей между CU и опорным блоком. Видеокодер 200 может вычислять разностный показатель с использованием суммы абсолютных разностей (SAD), суммы квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратических разностей (MSD) или других таких вычислений разности, чтобы определять то, совпадает или нет опорный блок тесно с текущей CU. В некоторых примерах, видеокодер 200 может прогнозировать текущую CU с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.[0049] To predict a CU, video encoder 200 may generally generate a prediction block for the CU through inter prediction or intra prediction. Inter prediction generally refers to predicting CUs from previously encoded picture data, while intra prediction generally refers to predicting CUs from previously encoded data of the same picture. 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 a CU, for example, in terms of differences between the CU and the reference block. Video encoder 200 may calculate a difference metric using sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), 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.

[0050] Некоторые примеры JEM и VVC также предоставляют аффинный режим компенсации движения, который может считаться режимом взаимного прогнозирования. В аффинном режиме компенсации движения, видеокодер 200 может определять два или более векторов движения, которые представляют непоступательное движение в пространстве, такое как увеличение или уменьшение масштаба, вращение, перспективное движение или другие типы нерегулярного движения.[0050] 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 zooming in or out, rotation, perspective motion, or other types of irregular motion.

[0051] Чтобы выполнять внутреннее прогнозирование, видеокодер 200 может выбирать режим внутреннего прогнозирования для того, чтобы формировать прогнозный блок. Некоторые примеры JEM и VVC предоставляют шестьдесят семь режимов внутреннего прогнозирования, включающих в себя различные направленные режимы, а также планарный режим и DC-режим. В общем, видеокодер 200 выбирает режим внутреннего прогнозирования, который описывает соседние выборки относительно текущего блока (например, блока CU), из которых можно прогнозировать выборки текущего блока. Такие выборки, в общем, могут находиться выше, выше и слева или слева от текущего блока в той же картинке что и текущий блок, при условии, что видеокодер 200 кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).[0051] To perform intra prediction, video encoder 200 may select an intra prediction mode to generate a prediction block. Some JEM and VVC examples provide sixty-seven intraprediction 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 relative to the current block (eg, a CU block) from which samples of the current block 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, provided that video encoder 200 encodes the CTUs and CUs in raster scan order (left to right, top to bottom).

[0052] В соответствии с технологиями этого раскрытия сущности, видеокодер 200 может выполнять взаимно-внутреннее прогнозирование блоков видеоданных (например, CU). Таким образом, видеокодер 200 может формировать блок прогнозирования с использованием как блока взаимного прогнозирования, так и блока внутреннего прогнозирования. Видеокодер 200 может формировать окончательный блок прогнозирования для текущего блока посредством выполнения комбинирования со взвешиванием выборок блока взаимного прогнозирования и блока внутреннего прогнозирования. Когда текущий блок представляет собой блок цветности, видеокодер 200 может определять весовые коэффициенты согласно числу соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием (и/или числу блоков, которые кодированы с взаимным прогнозированием). Таким образом, вместо определения весовых коэффициентов согласно соседним блокам по отношению к текущему блоку цветности, видеокодер 200 может определять число внутренне и/или взаимно прогнозированных блоков, соседних с блоком яркости, соответствующим текущему блоку цветности, затем определять весовые коэффициенты на основе числа внутренне и/или взаимно прогнозированных блоков, соседних с блоком яркости.[0052] In accordance with the techniques of this disclosure, video encoder 200 can perform inter-intra prediction of video data blocks (eg, CUs). Thus, video encoder 200 can generate a prediction block using both an inter-prediction block and an intra-prediction block. Video encoder 200 may generate a final prediction block for the current block by performing a weighted combination of samples of the inter-prediction block and the intra-prediction block. When the current block is a chroma block, video encoder 200 may determine weights according to the number of neighboring blocks to the luma block corresponding to the current chroma block that are intra-prediction encoded (and/or the number of blocks that are inter-prediction encoded). Thus, instead of determining weights according to neighboring blocks with respect to the current chroma block, video encoder 200 may determine the number of internally and/or inter-predicted blocks adjacent to a luma block corresponding to the current chroma block, then determine weights based on the number of internally and/or inter-predicted blocks. or mutually predicted blocks adjacent to a luminance block.

[0053] В качестве примера, видеокодер 200 может определять то, взаимно прогнозируются или нет соседний сверху блок и/или соседний слева блок по отношению к соответствующему блоку яркости. Когда ни один из этих соседних блоков не прогнозируется взаимно, видеокодер 200 может определять весовой коэффициент в 3, который должен применяться к блоку внутреннего прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку взаимного прогнозирования. Когда оба из этих соседних блоков взаимно прогнозируются, видеокодер 200 может определять весовой коэффициент в 3, который должен применяться к блоку взаимного прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку внутреннего прогнозирования. Когда один из этих соседних блоков взаимно прогнозируется, а другой внутренне прогнозируется, видеокодер 200 может определять весовые коэффициенты в 2, которые должны применяться как к блоку взаимного прогнозирования, так и к блоку внутреннего прогнозирования. В некоторых примерах, видеокодер 200 может подсчитывать соседние блоки, прогнозированные с использованием взаимно-внутреннего прогнозирования и/или внутриблочного копирования, в качестве кодированных с взаимным прогнозированием блоков. Видеодекодер 300 может выполнять практически идентичный процесс для определения весовых коэффициентов, которые должны применяться к блокам взаимного и внутреннего прогнозирования для текущего блока цветности, на основе режимов прогнозирования для соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности.[0053] As an example, video encoder 200 may determine whether or not a top adjacent block and/or a left adjacent block are mutually predicted with respect to a corresponding luminance block. When none of these neighboring blocks are mutually predicted, video encoder 200 may determine a weight of 3 to be applied to the intra-prediction block and a weight of 1 to be applied to the inter-prediction block. When both of these adjacent blocks are mutually predicted, video encoder 200 may determine a weight of 3 to be applied to the inter-prediction block and a weight of 1 to be applied to the intra-prediction block. When one of these neighboring blocks is inter-predicted and the other is intra-predicted, video encoder 200 may determine weights of 2 to be applied to both the inter-prediction block and the intra-prediction block. In some examples, video encoder 200 may count neighboring blocks predicted using inter-intra prediction and/or intra-block copy as inter-prediction coded blocks. Video decoder 300 may perform a substantially identical process to determine the weights to be applied to the inter- and intra-prediction blocks for the current chroma block based on the prediction modes of neighboring blocks relative to the luma block corresponding to the current chroma block.

[0054] Видеокодер 200 кодирует данные, представляющие режим прогнозирования для текущего блока. Например, для режимов взаимного прогнозирования, видеокодер 200 может кодировать данные, представляющие то, какой из различных доступных режимов взаимного прогнозирования используется, а также информацию движения для соответствующего режима. Для однонаправленного или двунаправленного взаимного прогнозирования, например, видеокодер 200 может кодировать векторы движения с использованием усовершенствованного прогнозирования векторов движения (AMVP) или режима объединения. Видеокодер 200 может использовать аналогичные режимы для того, чтобы кодировать векторы движения для аффинного режима компенсации движения.[0054] Video encoder 200 encodes data representing the prediction mode for the current block. For example, for inter-prediction modes, video encoder 200 may encode data representing which of the various available inter-prediction modes is used, as well as motion information for the corresponding mode. For unidirectional or bidirectional inter-prediction, for example, video encoder 200 may encode motion vectors using advanced motion vector prediction (AMVP) or a combining 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 sample 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 residual video data. Additionally, video encoder 200 may apply a secondary transform after the first transform, such as a mode dependent inseparable secondary transform (MDNSST), a signal dependent transform, a Karhunen-Loeve transform (KLT), 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 transformations to generate transform coefficients, video encoder 200 may perform quantization of the transform coefficients. Quantization, in general, 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 a quantization process, video encoder 200 may reduce the bit depth associated with some or all of the coefficients. For example, video encoder 200 may round an n-bit value down to an m-bit value during quantization, where n is greater than m. In some examples, in order 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 vector. 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 form a one-dimensional vector, video encoder 200 may entropy encode the one-dimensional vector, for example, 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 in decoding the video data.

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

[0059] Видеокодер 200 дополнительно может формировать синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе картинок и синтаксические данные на основе последовательностей, в видеодекодер 300, например, в заголовке картинки, заголовке блока, заголовке среза, либо другие синтаксические данные, к примеру, набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Видеодекодер 300 аналогично может декодировать такие синтаксические данные для того, чтобы определять то, как декодировать соответствующие видеоданные.[0059] Video encoder 200 may further generate syntax data, such as block-based syntax, picture-based syntax, and sequence-based syntax, into video decoder 300, such as a picture header, a block header, a slice header, or others. syntax data, such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). Video decoder 300 likewise may 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 bitstream including encoded video data, eg, syntax elements describing the segmentation of a picture into blocks (eg, CUs), and prediction and/or residual information for the blocks. Ultimately, video decoder 300 can 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 the inverse process of the process performed by video encoder 200 to decode encoded bitstream video data. For example, video decoder 300 may decode values for bitstream syntax elements using CABAC in a manner substantially similar, although inverse, to the CABAC encoding process of video encoder 200. The syntax elements may specify segmentation of picture information into CTUs and segmentation of each CTU according to an appropriate segmentation structure. such as a QTBT structure to specify a CU CTU. The syntax elements may further specify 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 dequantize and deconvert the quantized transform coefficients of the block to reproduce a 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 sample-by-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 и/или видеодекодер 300 могут быть выполнены с возможностью выполнять взаимно-внутреннее кодирование. Таким образом, видеокодер 200 и/или видеодекодер 300 могут прогнозировать блок видеоданных с использованием комбинированного взаимно-внутреннего прогнозирования в соответствии с любыми из технологий, описанных в данном документе.[0063] In accordance with the techniques of this disclosure, video encoder 200 and/or video decoder 300 may be configured to perform inter-intra coding. Thus, video encoder 200 and/or video decoder 300 may predict a block of video data using combined inter-intra prediction in accordance with any of the techniques described herein.

[0064] Например, видеокодер 200 и видеодекодер 300 могут адаптивно определять весовые коэффициенты, которые должны применяться к выборкам взаимного прогнозирования и внутреннего прогнозирования, на основе схемы позиционно-независимого взвешивания. Например, видеокодер 200 и видеодекодер 300 могут адаптивно определять весовые коэффициенты согласно (например, в качестве функции) информации кодирования, такой как число внутренне и/или взаимно кодированных соседних блоков, номер взаимного прогнозирования индексированных блоков объединения (уни- или бипрогнозирование), размер текущего блока. Пусть (wInter, wIntra) представляют собой весовые коэффициенты для взаимных и внутренних прогнозных выборок в нижеприведенном описании. Таким образом, wInter представляет значение весового коэффициента, применяемое к выборкам блока взаимного прогнозирования, и wIntra представляет значение весового коэффициента, применяемое к выборкам блока внутреннего прогнозирования. В некоторых примерах, wInter+wIntra=1, где wInter и wIntra являются рациональными значениями между 0 и 1.[0064] For example, video encoder 200 and video decoder 300 may adaptively determine weights to be applied to inter-prediction and intra-prediction samples based on a position-independent weighting scheme. For example, video encoder 200 and video decoder 300 may adaptively determine weights according to (eg, as a function of) encoding information such as the number of intra- and/or inter-encoded neighboring blocks, the inter-prediction number of indexed merge blocks (uni- or bi-prediction), the size of the current block. Let (wInter, wIntra) represent the weights for the mutual and internal prediction samples in the description below. That is, wInter represents a weight value applied to the inter-prediction block samples, and wIntra represents a weight value applied to the intra prediction block samples. In some examples, wInter+wIntra=1, where wInter and wIntra are rational values between 0 and 1.

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

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

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

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

[0069] В одном примере 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" и дополнительно обрабатываются согласно прогнозированию и преобразованию без дополнительной сегментации.[0069] In one example of a QTBT segmentation structure, the CTU size is set to 128×128 (luma samples and two corresponding 64×64 chrominance samples), MinQTSize is set to 16×16, MaxBTSize is set to 64×64, MinBTSize ( for width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree-based segmentation is applied to the CTU first to form quadtree leaf nodes. Quadtree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., up to CTU size). If a quadtree leaf node is 128x128, then it should not be further split by a binary tree because the size exceeds MaxBTSize (i.e. 64x64, in this example). Otherwise, the quadtree leaf node is further segmented by a binary tree. Therefore, the quadtree leaf node 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 additional horizontal splitting is not allowed. Likewise, a binary tree node having a height equal to MinBTSize implies that additional vertical splitting is not permitted for that binary tree node. As noted above, the leaf nodes of a binary tree are called "CU" and are further processed according to prediction and transformation without additional segmentation.

[0070] Фиг. 3A-3F являются концептуальными схемами, иллюстрирующими примерные местоположения соседних блоков по отношению к текущим блокам. В частности, фиг. 3A представляет пример текущего блока 140, имеющего верхний соседний блок 142 и левый соседний блок 144, фиг. 3B представляет пример текущего блока 146, имеющего правый верхний соседний блок 148 и левый нижний соседний блок 150, фиг. 3C представляет пример текущего блока 152, имеющего верхний соседний блок 154, левый соседний блок 156 и левый верхний (верхний-л) соседний блок 158, фиг. 3D представляет пример текущего блока 160, имеющего правый верхний соседний блок 162, левый нижний (левый-н) соседний блок 164 и левый верхний соседний блок 166, фиг. 3E представляет пример текущего блока 168, имеющего верхний соседний блок 170, правый верхний соседний блок 172, левый соседний блок 174 и левый нижний соседний блок 176, и фиг. 3F представляет пример текущего блока 178, имеющего верхний соседний блок 180, правый верхний соседний блок 182, левый соседний блок 184, левый нижний соседний блок 186 и левый верхний соседний блок 188.[0070] FIG. 3A-3F are conceptual diagrams illustrating exemplary locations of neighboring blocks with respect to current blocks. In particular, FIG. 3A represents an example of a current block 140 having a top neighbor block 142 and a left neighbor block 144, FIG. 3B represents an example of a current block 146 having a top right neighbor block 148 and a bottom left neighbor block 150, FIG. 3C represents an example of a current block 152 having a top neighbor block 154, a left neighbor block 156, and a top left neighbor block 158, FIG. 3D represents an example of a current block 160 having a top right neighbor block 162, a bottom left neighbor block 164, and a top left neighbor block 166, FIG. 3E represents an example of a current block 168 having a top neighbor block 170, a right top neighbor block 172, a left neighbor block 174, and a left bottom neighbor block 176, and FIG. 3F represents an example of a current block 178 having a top neighbor block 180, a top right neighbor block 182, a left neighbor block 184, a bottom left neighbor block 186, and a top left neighbor block 188.

[0071] В соответствии с технологиями этого раскрытия сущности, видеокодер 200 и видеодекодер 300 могут адаптивно определять весовые коэффициенты для внутренних и взаимных выборок на основе числа внутренне и/или взаимно кодированных соседних блоков, например, как пояснено в заявке (США) № 16/684379, поданной 14 ноября 2019 года, содержимое которой полностью содержится в данном документе по ссылке. Тем не менее, согласно технологиям этого раскрытия сущности, видеокодер 200 и видеодекодер 300 могут смешивать только взаимные и внутренние прогнозные выборки без позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Видеокодер 200 и видеодекодер 300 могут использовать опорные соседние блоки, чтобы определять весовые коэффициенты, причем опорные соседние блоки могут представлять собой любую комбинацию верхнего, правого верхнего, левого верхнего, левого или левого нижнего соседних блоков, например, как показано в различных примерах по фиг. 3A-3F.[0071] In accordance with the techniques of this disclosure, video encoder 200 and video decoder 300 can adaptively determine weights for intra- and inter-samples based on the number of intra- and/or inter-encoded neighboring blocks, for example, as explained in US Application No. 16/ 684379, filed November 14, 2019, the contents of which are contained in their entirety herein by reference. However, according to the techniques of this disclosure, video encoder 200 and video decoder 300 can only mix inter- and intra-prediction samples without position-dependent intra-prediction combining (PDPC). Video encoder 200 and video decoder 300 may use reference neighbor blocks to determine weights, where the reference neighbor blocks may be any combination of top, top right, top left, left, or bottom left neighbor blocks, for example, as shown in the various examples of FIGS. 3A-3F.

[0072] В одном примере, например, как показано на фиг. 3A, видеокодер 200 и видеодекодер 300 используют верхний соседний блок 142 и левый соседний блок 144, чтобы определять весовые коэффициенты, которые должны применяться к внутренним и взаимным прогнозным выборкам для взаимно-внутреннего прогнозирования текущего блока 140. Таким образом, верхний соседний блок 142 и левый соседний блок 144 используются для проверки внутренне кодированных соседних узлов для текущего блока 140 в этом примере.[0072] In one example, for example, as shown in FIG. 3A, video encoder 200 and video decoder 300 use the top neighbor block 142 and the left neighbor block 144 to determine the weights that should be applied to the intra and inter-prediction samples for the inter-intra prediction of the current block 140. Thus, the top neighbor block 142 and the left neighbor block 144 are used to check the internally encoded neighbors for the current block 140 in this example.

[0073] В другом примере, например, как показано на фиг. 3B, видеокодер 200 и видеодекодер 300 используют правый верхний соседний блок 148 и левый нижний соседний блок 150, чтобы определять весовые коэффициенты, которые должны применяться к внутренним и взаимным прогнозным выборкам для взаимно-внутреннего прогнозирования текущего блока 146. Таким образом, правый верхний соседний блок 148 и левый нижний соседний блок 150 используются для проверки внутренне кодированных соседних узлов для текущего блока 146 в этом примере.[0073] In another example, such as shown in FIG. 3B, video encoder 200 and video decoder 300 use the top right neighbor block 148 and the bottom left neighbor block 150 to determine weights that should be applied to the intra and inter-prediction samples for the inter-intra prediction of the current block 146. Thus, the top right neighbor block 148 and lower left neighbor block 150 are used to check the internally encoded neighbors for the current block 146 in this example.

[0074] В другом примере, например, как показано на фиг. 3C, верхний соседний блок 154, левый соседний блок 156 и левый верхний соседний блок 158 используются для проверки внутренне кодированных соседних узлов для текущего блока 152.[0074] In another example, such as shown in FIG. 3C, top neighbor block 154, left neighbor block 156, and top left neighbor block 158 are used to check internally encoded neighbors for the current block 152.

[0075] В другом примере, например, как показано на фиг. 3D, правый верхний соседний блок 162, левый нижний соседний блок 164 и левый верхний соседний блок 166 используются для проверки внутренне кодированных соседних узлов для текущего блока 160.[0075] In another example, such as shown in FIG. 3D, top right neighbor block 162, bottom left neighbor block 164, and top left neighbor block 166 are used to check internally encoded neighbors for the current block 160.

[0076] В другом примере, например, как показано на фиг. 3E, верхний соседний блок 170, правый верхний соседний блок 172, левый соседний блок 174 и левый нижний соседний блок 176 используются для проверки внутренне кодированных соседних узлов для текущего блока 168.[0076] In another example, such as shown in FIG. 3E, top neighbor block 170, top right neighbor block 172, left neighbor block 174, and bottom left neighbor block 176 are used to check internally encoded neighbors for the current block 168.

[0077] В другом примере, например, как показано на фиг. 3F, верхний соседний блок 180, правый верхний соседний блок 182, левый соседний блок 184, левый нижний соседний блок 186 и левый верхний соседний блок 188 используются для проверки внутренне кодированных соседних узлов для текущего блока 178.[0077] In another example, for example, as shown in FIG. 3F, top neighbor block 180, top right neighbor block 182, left neighbor block 184, bottom left neighbor block 186, and top left neighbor block 188 are used to check internally encoded neighbors for the current block 178.

[0078] В некоторых примерах, видеокодер 200 и видеодекодер 300 выбирают опорные соседние блоки согласно размеру блока текущего блока (например, blkWidth и blkHeight). Например, если blkWidth и blkHeight являются идентичными, видеокодер 200 и видеодекодер 300 могут использовать комбинацию по фиг. 3D, фиг. 3E или фиг. 3F. В другом примере, если blkWidth и blkHeight отличаются, видеокодер 200 и видеодекодер 300 могут использовать верхний-п и левый-н, например, как показано на фиг. 3B.[0078] In some examples, video encoder 200 and video decoder 300 select reference neighboring blocks according to the block size of the current block (eg, blkWidth and blkHeight). For example, if blkWidth and blkHeight are identical, video encoder 200 and video decoder 300 may use the combination of FIG. 3D, fig. 3E or FIG. 3F. In another example, if blkWidth and blkHeight are different, video encoder 200 and video decoder 300 may use top-n and left-n, for example, as shown in FIG. 3B.

[0079] В другом примере, если blkWidth и blkHeight являются идентичными, то видеокодер 200 и видеодекодер 300 могут выбирать позиции соседних блоков симметрично вдоль размеров по ширине и высоте текущего блока, например, согласно примерам по фиг. 3A-3F. С другой стороны, если blkWidth и blkHeight отличаются, видеокодер 200 и видеодекодер 300 могут выбирать позиции соседних блоков асимметрично вдоль размеров по ширине и высоте текущего блока. Например, если blkWidth превышает blkHeight, видеокодер 200 и видеодекодер 300 могут выбирать соседние блоки как верхний-п и левый, тогда как, если blkWidth меньше blkHeight, видеокодер 200 и видеодекодер 300 могут выбирать соседние блоки как левый-н и верхний.[0079] In another example, if blkWidth and blkHeight are identical, then video encoder 200 and video decoder 300 may select neighboring block positions symmetrically along the width and height dimensions of the current block, for example, according to the examples of FIGS. 3A-3F. On the other hand, if blkWidth and blkHeight are different, video encoder 200 and video decoder 300 can select neighboring block positions asymmetrically along the width and height dimensions of the current block. For example, if blkWidth is greater than blkHeight, video encoder 200 and video decoder 300 may select neighboring blocks as top-n and left, whereas if blkWidth is less than blkHeight, video encoder 200 and video decoder 300 may select neighboring blocks as left-n and top.

[0080] В некоторых примерах, если проверенный соседний блок IBC/CPR-кодируется (на основе внутриблочного копирования/ссылки на текущую картинку), соседний блок может рассматриваться как взаимно кодированный блок.[0080] In some examples, if a checked adjacent block is IBC/CPR-encoded (based on an intra-block copy/current picture reference), the adjacent block may be treated as a cross-encoded block.

[0081] В некоторых примерах, если проверенный соседний блок IBC/CPR-кодируется, соседний блок может рассматриваться как внутренне кодированный блок.[0081] In some examples, if a checked adjacent block is IBC/CPR-encoded, the adjacent block may be treated as an intra-encoded block.

[0082] В некоторых примерах, когда проверенный соседний блок представляет собой комбинированный внутренне-взаимный блок, соседний блок может рассматриваться как взаимно кодированный блок.[0082] In some examples, when the checked neighbor block is a combined intra-reciprocal block, the neighbor block may be treated as a reciprocal encoded block.

[0083] В некоторых примерах, когда проверенный соседний блок представляет собой комбинированный внутренне-взаимный блок, соседний блок может рассматриваться как внутренне кодированный блок.[0083] In some examples, when the checked neighboring block is a combined intra-mutual block, the neighboring block may be considered an intra-encoded block.

[0084] В некоторых примерах, когда одиночное дерево кодирования яркости и цветности или сдвоенные (отдельные) деревья кодирования яркости и цветности активируются, видеокодер 200 и видеодекодер 300 могут определять весовые коэффициенты для смешивания блоков сигналов цветности согласно внутренней проверке соответствующего блока сигналов яркости или соседних блоков по отношению к соответствующему блоку сигналов яркости.[0084] In some examples, when a single luma and chroma tree or dual (separate) luma and chroma trees are activated, video encoder 200 and video decoder 300 may determine weights for mixing chrominance blocks according to an internal check of the corresponding luma block or neighboring blocks in relation to the corresponding block of luminance signals.

[0085] В некоторых примерах, когда кодирование сдвоенного дерева активируется, видеокодер 200 и видеодекодер 300 могут определять весовые коэффициенты для смешивания блоков сигналов цветности согласно внутренней проверке соседних блоков сигналов цветности.[0085] In some examples, when dual tree coding is enabled, video encoder 200 and video decoder 300 may determine weights for mixing chroma blocks according to an internal check of adjacent chroma blocks.

[0086] Видеокодер 200 и видеодекодер 300 могут определять весовые коэффициенты на основе внутренней проверки. Пусть wInter и wIntra представляют собой весовые коэффициенты для взаимных и внутренних выборок во взаимно-внутреннем смешивании. Весовые коэффициенты могут нормализоваться на 2n, где n является целым числом, которое равно сумме весовых коэффициентов. Другими словами, эти весовые коэффициенты могут нормализоваться на 4, 8, 16, ..., что является реализуемым с помощью простой операции сдвига вправо.[0086] Video encoder 200 and video decoder 300 may determine weights based on internal verification. Let wInter and wIntra represent the weights for the cross- and intra-samples in cross-internal mixing. The weights can be normalized by 2n , where n is an integer that is equal to the sum of the weights. In other words, these weights can be normalized to 4, 8, 16, ..., which is implementable with a simple right shift operation.

[0087] В некоторых примерах, если все проверенные соседние блоки внутренне кодируются, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).[0087] In some examples, if all checked neighboring blocks are internally encoded, video encoder 200 and video decoder 300 may determine that the weight for the internal samples is higher than the weight for the cross samples (e.g., (wInter, wIntra)=(1, 3) or (wInter, wIntra)=(3, 5)).

[0088] В некоторых примерах, если все проверенные соседние блоки не кодируются внутренне, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок ниже весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).[0088] In some examples, if all checked neighboring blocks are not internally encoded, video encoder 200 and video decoder 300 may determine that the weight for the internal samples is lower than the weight for the cross samples (for example, (wInter, wIntra)=(3, 1 ) or (wInter, wIntra)=(5, 3)).

[0089] В некоторых примерах, если только один из проверенных соседних блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут определять то, что весовые коэффициенты для внутренних и взаимных выборок являются идентичными.[0089] In some examples, if only one of the checked neighboring blocks is internally encoded, video encoder 200 and video decoder 300 may determine that the weights for the internal and intersamples are identical.

[0090] В некоторых примерах, если левый верхний, верхний-п и левый-н соседний блоки внутренние кодируются, видеокодер 200 и видеодекодер 300 могут определять то, что весовые коэффициенты (wInter, wIntra) составляют (1, 3) или (3, 5). В другом примере, если, по меньшей мере, один из левого верхнего, верхнего-п или левого-н соседних блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут задавать (wInter, wIntra) равный (2, 2) или (4, 4). В еще одном другом примере, если все левого верхнего, верхнего-п или левого соседних блоков не кодируются внутренне, видеокодер 200 и видеодекодер 300 могут задавать (wInter, wIntra) равным (3, 1) или (5, 3).[0090] In some examples, if the top-left, top-n, and left-n adjacent blocks are internally encoded, video encoder 200 and video decoder 300 may determine that the weights (wInter, wIntra) are (1, 3) or (3, 5). In another example, if at least one of the top-left, top-n, or left-n adjacent blocks is internally encoded, video encoder 200 and video decoder 300 may set (wInter, wIntra) equal to (2, 2) or (4, 4 ). In yet another example, if all left-top, top-n, or left-adjacent blocks are not internally encoded, video encoder 200 and video decoder 300 may set (wInter, wIntra) to (3, 1) or (5, 3).

[0091] В некоторых примерах, если, по меньшей мере, один из проверенных блоков представляет собой MHI-кодированный (многогипотезный внутренний) блок, видеокодер 200 и видеодекодер 300 могут копировать весовой коэффициент для текущего блока из весового коэффициента одного из проверенных блоков.[0091] In some examples, if at least one of the tested blocks is an MHI-coded (multi-hypothesis intra) block, video encoder 200 and video decoder 300 may copy the weight for the current block from the weight of one of the tested blocks.

[0092] В некоторых примерах, если только один из этих проверенных блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).[0092] In some examples, if only one of these checked blocks is internally encoded, video encoder 200 and video decoder 300 may determine that the weight for the internal samples is higher than the weight for the cross samples (for example, (wInter, wIntra)=(1, 3) or (wInter, wIntra)=(3, 5)).

[0093] В некоторых примерах, если только один из этих проверенных блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок ниже весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).[0093] In some examples, if only one of these checked blocks is internally encoded, video encoder 200 and video decoder 300 may determine that the weight for the internal samples is lower than the weight for the inter-samples (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5, 3)).

[0094] В некоторых примерах, если все эти проверенные блоки не кодируются внутренне, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).[0094] In some examples, if all of these checked blocks are not internally encoded, video encoder 200 and video decoder 300 may determine that the weight for the internal samples is higher than the weight for the cross samples (for example, (wInter, wIntra)=(1, 3 ) or (wInter, wIntra)=(3, 5)).

[0095] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) согласно режиму внутреннего прогнозирования проверенных соседних блоков. В одном примере, если предусмотрен, по меньшей мере, один соседний блок, кодируемый с использованием внутреннего DC-режима или планарного режима, весовой коэффициент для внутренних выборок может быть выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).[0095] In some examples, video encoder 200 and video decoder 300 may determine (wInter, wIntra) according to the intra prediction mode of the checked neighboring blocks. In one example, if there is at least one adjacent block encoded using intra DC mode or planar mode, the weight for the internal samples may be higher than the weight for the inter samples (eg, (wInter, wIntra)=(1 , 3) or (wInter, wIntra)=(3, 5)).

[0096] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) на основе номера взаимного прогнозирования индексированного блока объединения, т.е. того, прогнозируется индексный блок объединения с использованием однонаправленного или двунаправленного прогнозирования.[0096] In some examples, video encoder 200 and video decoder 300 may determine (wInter, wIntra) based on the inter-prediction number of the indexed combine block, i.e. In addition, the merge index block is predicted using unidirectional or bidirectional prediction.

[0097] В некоторых примерах, если индексированный блок объединения представляет собой бипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).[0097] In some examples, if the indexed combiner is a biprediction, video encoder 200 and video decoder 300 may set wInter higher than wIntra (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5, 3 )).

[0098] В некоторых примерах, если индексированный блок объединения представляет собой унипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).[0098] In some examples, if the indexed combiner is a uniprediction, video encoder 200 and video decoder 300 may set wInter higher than wIntra (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5, 3 )).

[0099] В некоторых примерах, если индексированный блок объединения представляет собой бипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)). Между тем, для индексированного блока объединения с унипрогнозированием, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) с использованием числа соседних внутренних и/или взаимных блоков, например, как пояснено выше.[0099] In some examples, if the indexed combiner is a biprediction, video encoder 200 and video decoder 300 may set wInter higher than wIntra (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5, 3 )). Meanwhile, for an indexed uni-prediction combining block, video encoder 200 and video decoder 300 may determine (wInter, wIntra) using the number of adjacent intra and/or mutual blocks, for example, as explained above.

[0100] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) согласно размеру текущего блока. Размер (SIZEblk) текущего блока основан на его ширине и высоте.[0100] In some examples, video encoder 200 and video decoder 300 may determine (wInter, wIntra) according to the size of the current block. The size (SIZEblk) of the current block is based on its width and height.

[0101] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока в качестве минимального значения ширины и высоты текущего блока. В другом примере, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока в качестве максимального значения ширины и высоты текущего блока. В еще одном другом примере, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока посредством умножения (т.е. произведения) ширины и высоты текущего блока. В еще одном другом примере, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока посредством суммирования ширины и высоты текущего блока.[0101] In some examples, video encoder 200 and video decoder 300 may determine the size of the current block as the minimum value of the width and height of the current block. In another example, video encoder 200 and video decoder 300 may determine the size of the current block as the maximum value of the width and height of the current block. In yet another example, video encoder 200 and video decoder 300 may determine the size of the current block by multiplying (ie, multiplying) the width and height of the current block. In yet another example, video encoder 200 and video decoder 300 may determine the size of the current block by adding the width and height of the current block.

[0102] В некоторых примерах, если SIZEblk выше предварительно заданного порогового значения, видеокодер 200 и видеодекодер 300 могут задавать wInter выше или ниже wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).[0102] In some examples, if SIZEblk is above a predetermined threshold, video encoder 200 and video decoder 300 may set wInter higher or lower than wIntra (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5 , 3)).

[0103] В некоторых примерах, если SIZEblk ниже предварительно заданного порогового значения, видеокодер 200 и видеодекодер 300 могут задавать wInter выше или ниже wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).[0103] In some examples, if SIZEblk is below a predetermined threshold, video encoder 200 and video decoder 300 may set wInter higher or lower than wIntra (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5 , 3)).

[0104] В некоторых примерах, если индексированный блок объединения представляет собой бипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше или ниже wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)). Между этим, для индексированного блока объединения с унипрогнозированием, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) адаптивно согласно размеру текущего блока.[0104] In some examples, if the indexed combiner is a biprediction, video encoder 200 and video decoder 300 may set wInter above or below wIntra (for example, (wInter, wIntra)=(3, 1) or (wInter, wIntra)=(5 , 3)). Meanwhile, for an indexed uni-prediction combining block, the video encoder 200 and the video decoder 300 can determine (wInter, wIntra) adaptively according to the size of the current block.

[0105] В некоторых примерах, набор из пары весовых коэффициентов (wInter, wIntra) может быть предварительно задан. Набор из пары весовых коэффициентов может передаваться в служебных сигналах в заголовке потока битов или наборе параметров последовательности (SPS). Таким образом, видеокодер 200 может кодировать набор из пары весовых коэффициентов, в то время как видеодекодер 300 может декодировать набор из пары весовых коэффициентов. В ходе процесса кодирования, блока MHI видеокодер 200 может определять наилучший весовой коэффициент с использованием оценки искажения в зависимости от скорости передачи (RD). В этом примере, видеокодер 200 может извлекать RD-затраты всех элементов в паре весовых коэффициентов. Видеокодер 200 может выбирать пару, имеющую минимальные RD-затраты, чтобы кодировать текущий блок и передавать в служебных сигналах индекс этой пары в поток битов. Видеокодер 200 может кодировать индекс с использованием CABAC-алгоритма с использованием обходного или контекстного энтропийного кодирования. Видеодекодер 300 может выполнять процесс декодирования для того, чтобы получать индекс, чтобы определять весовые коэффициенты (например, пару весовых коэффициентов), которые следует применять для текущего блока.[0105] In some examples, a set of pairs of weights (wInter, wIntra) may be predefined. A set of pairs of weights may be signaled in a bitstream header or sequence parameter set (SPS). Thus, video encoder 200 may encode a set of pairs of weights, while video decoder 300 may decode a set of pairs of weights. During the encoding process of the MHI block, video encoder 200 may determine the best weight using a rate-dependent distortion (RD) estimate. In this example, video encoder 200 may extract the RD costs of all elements in a pair of weights. Video encoder 200 may select a pair having minimal RD cost to encode the current block and signal the index of that pair into the bitstream. Video encoder 200 may encode the index using a CABAC algorithm using bypass or context entropy coding. Video decoder 300 may perform a decoding process to obtain an index to determine weights (eg, a pair of weights) to apply to the current block.

[0106] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут кодировать список весовых коэффициентов в наборе параметров (к примеру, в SPS, в наборе параметров картинки (PPS), в наборе параметров видео (VPS), в наборе параметров адаптации (APS) и т.п.) или в заголовках (тайлах, срезах, единицах кодирования и т.п.), соответствующих случаям, описанным в вышеуказанных технологиях, которые основаны на проверке соседних блочных режимов, размеров блоков и т.д.[0106] In some examples, video encoder 200 and video decoder 300 may encode a list of weights in a parameter set (e.g., an SPS, a picture parameter set (PPS), a video parameter set (VPS), an adaptation parameter set (APS) etc.) or in headers (tiles, slices, encoding units, etc.) corresponding to the cases described in the above technologies, which are based on checking adjacent block modes, block sizes, etc.

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

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

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

[0110] В этом раскрытии сущности, ссылка на запоминающее устройство 230 видеоданных не должна интерпретироваться как ограниченная запоминающим устройством, внутренним для видеокодера 200, если не описывается конкретно в таком качестве, или запоминающим устройством, внешним для видеокодера 200, если не описывается конкретно в таком качестве. Наоборот, ссылка на запоминающее устройство 230 видеоданных должна пониматься как опорное запоминающее устройство, которое сохраняет видеоданные, которые видеокодер 200 принимает для кодирования (например, видеоданные для текущего блока, который должен кодироваться). Запоминающее устройство 106 по фиг. 1 также может предоставлять временное хранение выводов из различных модулей видеокодера 200.[0110] In this disclosure, reference to video data storage device 230 should not be interpreted as limited to storage device internal to video encoder 200 unless specifically described as such, or storage device external to video encoder 200 unless specifically described as such. quality. Conversely, reference to video data storage device 230 is to be understood as a reference storage device 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.

[0111] Различные модули по фиг. 4 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0111] Various modules of FIG. 4 are illustrated to assist in understanding the operations performed by the video encoder 200. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of the above. Fixed function diagrams mean diagrams that provide specific functionality and are pre-set regarding the operations that can be performed. Programmable circuits mean circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, programmable circuits may execute software or firmware that instructs the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed function diagrams can execute program instructions (for example, to accept parameters or output parameters), but the types of operations that fixed function diagrams 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.

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

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

[0114] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 внутреннего прогнозирования. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули, чтобы выполнять прогнозирование видео в соответствии с другими режимами прогнозирования. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может представлять собой часть модуля 222 оценки движения и/или модуля 224 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п.[0114] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an internal prediction unit 226. The mode selection module 202 may include additional functional modules to perform video prediction in accordance with other prediction modes. As an 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), an affine processing module, a linear model (LM) processing module ) and so on.

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

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

[0117] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 внутреннего прогнозирования) таким образом, чтобы формировать прогнозный блок для текущего блока (например, текущей CU либо, в HEVC, перекрывающейся части PU и TU). Для взаимного прогнозирования текущего блока, модуль 222 оценки движения может выполнять поиск движения для того, чтобы идентифицировать один или более тесно совпадающих опорных блоков в одной или более опорных картинок (например, в одной или более ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислять значение, представляющее то, насколько аналогичным является потенциальный опорный блок относительно текущего блока, например, согласно сумме абсолютных разностей (SAD), сумме квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратическим разностям (MSD) и т.п. Модуль 222 оценки движения, в общем, может выполнять эти вычисления с использованием последовательных выборочных разностей между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, получающееся в результате этих вычислений, указывающее опорный блок, который наиболее тесно совпадает с текущим блоком.[0117] In general, mode selection module 202 also controls its components (e.g., motion estimation module 222, motion compensation module 224, and internal prediction module 226) so as to generate a predictive block for the current block (e.g., the current CU or, in HEVC, overlapping part PU and TU). To mutually predict 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, in one or more previously encoded pictures stored in DPB 218). In particular, motion estimation module 222 may calculate a value representing how similar a potential reference block is to a current block, for example, according to sum absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), root mean square differences (MSD), etc. Motion estimation module 222 may generally perform these calculations using successive sample differences between the current block and the reference block in question. 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.

[0118] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые задают позиции опорных блоков в опорных картинках относительно позиции текущего блока в текущей картинке. Модуль 222 оценки движения затем может предоставлять векторы движения в модуль 224 компенсации движения. Например, для однонаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять один вектор движения, тогда как для двунаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять два вектора движения. Модуль 224 компенсации движения затем может формировать прогнозный блок с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность в дробную часть выборки, модуль 224 компенсации движения может интерполировать значения для прогнозного блока согласно одному или более интерполяционных фильтров. Кроме того, для двунаправленного взаимного прогнозирования, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных посредством соответствующих векторов движения, и комбинировать извлеченные данные, например, посредством последовательного выборочного усреднения или усреднения со взвешиванием.[0118] Motion estimation module 222 may generate one or more motion vectors (MVs) that define positions of reference blocks in reference pictures relative to the position of the current block in the current picture. Motion estimation module 222 may then provide motion vectors to motion compensation module 224 . For example, for unidirectional inter-prediction, motion estimator 222 may provide one motion vector, whereas for bi-directional inter-prediction, motion estimator 222 may provide two motion vectors. Motion compensation module 224 can 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 subsample 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 corresponding motion vectors and combine the extracted data, for example, through sequential sample averaging or weighted averaging.

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

[0120] В соответствии с технологиями этого раскрытия сущности, модуль 202 выбора режима может выполнять взаимно-внутреннее прогнозирование блоков видеоданных (например, CU). Таким образом, модуль 202 выбора режима может формировать блок прогнозирования за счет инструктирования модулю 222 оценки движения и модулю 224 компенсации движения формировать блок взаимного прогнозирования, а модулю 226 внутреннего прогнозирования формировать блок внутреннего прогнозирования. Модуль 202 выбора режима может формировать окончательный блок прогнозирования для текущего блока посредством выполнения комбинирования со взвешиванием выборок блока взаимного прогнозирования и блока внутреннего прогнозирования. Когда текущий блок представляет собой блок цветности, модуль 202 выбора режима может определять весовые коэффициенты для выполнения прогнозирования со взвешиванием согласно числу соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодируются с внутренним и/или взаимным прогнозированием. Таким образом, вместо определения весовых коэффициентов согласно соседним блокам по отношению к текущему блоку цветности, модуль 202 выбора режима может определять число взаимно прогнозированных блоков, соседних с блоком яркости, соответствующим текущему блоку цветности, затем определять весовые коэффициенты на основе числа взаимно прогнозированных блоков, соседних с блоком яркости.[0120] In accordance with the techniques of this disclosure, the mode selection module 202 can perform inter-intra prediction of video data blocks (eg, CUs). Thus, the mode selection unit 202 can generate a prediction block by causing the motion estimation unit 222 and the motion compensation unit 224 to generate an inter-prediction unit, and the intra-prediction unit 226 to generate an intra-prediction unit. The mode selection unit 202 can generate a final prediction block for the current block by performing weighted combination of samples of the inter-prediction block and the intra-prediction block. When the current block is a chrominance block, the mode selector 202 may determine weights to perform weighting prediction according to the number of neighboring blocks to the luma block corresponding to the current chroma block, which are intra- and/or inter-prediction encoded. That is, instead of determining the weights according to neighboring blocks with respect to the current chroma block, the mode selection unit 202 can determine the number of mutually predicted blocks adjacent to the luma block corresponding to the current chroma block, then determine the weights based on the number of mutually predicted blocks adjacent with brightness block.

[0121] В качестве примера, модуль 202 выбора режима может определять то, взаимно прогнозируются или нет соседний сверху блок и/или соседний слева блок по отношению к соответствующему блоку яркости. Когда ни один из этих соседних блоков не прогнозируется взаимно, модуль 202 выбора режима может определять весовой коэффициент в 3, который должен применяться к блоку внутреннего прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку взаимного прогнозирования. Когда оба из этих соседних блоков взаимно прогнозируются, модуль 202 выбора режима может определять весовой коэффициент в 3, который должен применяться к блоку взаимного прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку внутреннего прогнозирования. Когда один из этих соседних блоков взаимно прогнозируется, а другой внутренне прогнозируется, модуль 202 выбора режима может определять весовые коэффициенты в 2, которые должны применяться как к блоку взаимного прогнозирования, так и к блоку внутреннего прогнозирования. В некоторых примерах, модуль 202 выбора режима может подсчитывать соседние блоки, прогнозированные с использованием взаимно-внутреннего прогнозирования и/или внутриблочного копирования, в качестве кодированных с взаимным прогнозированием блоков.[0121] As an example, the mode selection unit 202 may determine whether or not a top adjacent block and/or a left adjacent block are mutually predicted with respect to a corresponding luminance block. When none of these neighboring blocks are mutually predicted, the mode selector 202 may determine a weight of 3 to be applied to the intra-prediction block and a weight of 1 to be applied to the inter-prediction block. When both of these adjacent blocks are inter-predicted, the mode selection unit 202 may determine a weight of 3 to be applied to the inter-prediction block and a weight of 1 to be applied to the intra-prediction block. When one of these neighboring blocks is inter-predicted and the other is internally predicted, mode selector 202 may determine weights of 2 to be applied to both the inter-prediction block and the intra-prediction block. In some examples, mode selection module 202 may count neighboring blocks predicted using inter-intra prediction and/or intra-block copy as inter-prediction coded blocks.

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

[0123] В примерах, в которых модуль 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 для взаимного прогнозирования.[0123] In examples in which mode selection module 202 segments CUs into PUs, each PU may be associated with a luma prediction unit and corresponding chrominance prediction units. Video encoder 200 and video decoder 300 may support PUs having different sizes. As stated above, the CU size may refer to the size of a luminance signal coding unit of the CU, and the PU size may refer to the size of a luminance signal 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.

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

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

[0126] В некоторых примерах, модуль 202 выбора режима может выбирать режим взаимно-внутреннего прогнозирования. В таких примерах, модуль 202 выбора режима может взвешивать блок взаимного прогнозирования, сформированный посредством модуля 224 компенсации движения, и блок внутреннего прогнозирования, сформированный посредством модуля 226 внутреннего прогнозирования, согласно любой из различных технологий этого раскрытия сущности. Модуль 202 выбора режима может формировать блок прогнозирования из блоков взвешенного взаимного и внутреннего прогнозирования и выводить сформированный блок прогнозирования.[0126] In some examples, mode selection module 202 may select an inter-intra prediction mode. In such examples, the mode selection module 202 may weigh the inter-prediction block generated by the motion compensation module 224 and the intra-prediction block generated by the intra-prediction module 226, according to any of the various techniques of this disclosure. The mode selection unit 202 can generate a prediction block from the weighted inter-prediction and intra-prediction blocks and output the generated prediction block.

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

[0128] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования (называется в данном документе "блоком коэффициентов преобразования"). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять несколько преобразований для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как вращательное преобразование. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.[0128] Transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a “transform coefficient block”). The transform processing unit 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 directed transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, transform processing module 206 may perform multiple transforms on a residual block, for example, a primary transform and a secondary transform, such as a rotational transform. In some examples, transformation processing module 206 does not apply transformations to the remainder block.

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

[0130] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя потенциально с определенной степенью искажения) на основе восстановленного остаточного блока и прогнозного блока, сформированного посредством модуля 202 выбора режима. Например, модуль 214 восстановления может суммировать выборки восстановленного остаточного блока с соответствующими выборками из прогнозного блока, сформированного посредством модуля 202 выбора режима, чтобы формировать восстановленный блок.[0130] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transforms to the block of quantized transform coefficients, respectively, to recover a residual block from the block of transform coefficients. The reconstruction 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 the mode selection module 202 . For example, recovery module 214 may add samples of the reconstructed residual block with corresponding samples from the prediction block generated by mode selection module 202 to generate a reconstructed block.

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

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

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

[0134] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки среза или картинки. В частности, модуль 220 энтропийного кодирования может выводить поток битов.[0134] Video encoder 200 may output a bitstream that includes entropy-coded syntax elements required to reconstruct slice or picture blocks. In particular, entropy encoding module 220 may output a bit stream.

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

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

[0137] Видеокодер 200 по фиг. 4 представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока видеоданных; формировать блок внутреннего прогнозирования для текущего блока видеоданных; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодировать (т.е. кодировать, в этом примере) текущий блок с использованием блока прогнозирования.[0137] Video encoder 200 of FIG. 4 represents an example of a video encoding apparatus comprising one or more processors configured to generate an inter-prediction block for a current block of video data; generate an internal prediction block for the current block of video data; apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; combine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current block; and encode (ie encode, in this example) the current block using the prediction block.

[0138] Видеокодер 200 также представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.[0138] Video encoder 200 also provides an example of a device for encoding video data, comprising one or more processors configured to generate an inter-prediction block for a current chrominance block of video data; generate an internal prediction block for the current color block of video data; determine the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; determine the first weight coefficient and the second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; combine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; and encode the current chrominance block using a prediction block.

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

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

[0141] Модуль 304 обработки прогнозирования включает в себя модуль 316 компенсации движения и модуль 318 внутреннего прогнозирования. Модуль 304 обработки прогнозирования может включать в себя дополнительные модули для того, чтобы выполнять прогнозирование в соответствии с другими режимами прогнозирования. В качестве примера, модуль 304 обработки прогнозирования может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.[0141] The prediction processing module 304 includes a motion compensation module 316 and an internal prediction module 318 . The prediction processing module 304 may include additional modules 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.

[0142] В некоторых примерах, модуль 304 обработки прогнозирования может выбирать режим взаимно-внутреннего прогнозирования. В таких примерах, модуль 304 обработки прогнозирования может взвешивать блок взаимного прогнозирования, сформированный посредством модуля 316 компенсации движения, и блок внутреннего прогнозирования, сформированный посредством модуля 318 внутреннего прогнозирования, согласно любой из различных технологий этого раскрытия сущности. Модуль 304 обработки прогнозирования может формировать блок прогнозирования из блоков взвешенного взаимного и внутреннего прогнозирования и выводить сформированный блок прогнозирования.[0142] In some examples, prediction processing module 304 may select an inter-intra prediction mode. In such examples, the prediction processing module 304 may weigh the inter-prediction block generated by the motion compensation module 316 and the intra-prediction block generated by the intra-prediction module 318, according to any of the various techniques of this disclosure. The prediction processing unit 304 can generate a prediction block from the weighted inter-prediction and intra-prediction blocks and output the generated prediction block.

[0143] В соответствии с технологиями этого раскрытия сущности, модуль 304 обработки прогнозирования может выполнять взаимно-внутреннее прогнозирование блоков видеоданных (например, CU). Таким образом, модуль 304 обработки прогнозирования может формировать блок прогнозирования за счет инструктирования модулю 316 компенсации движения формировать блок взаимного прогнозирования, а модулю 318 внутреннего прогнозирования формировать блок внутреннего прогнозирования. Модуль 304 обработки прогнозирования может формировать окончательный блок прогнозирования для текущего блока посредством выполнения комбинирования со взвешиванием выборок блока взаимного прогнозирования и блока внутреннего прогнозирования. Когда текущий блок представляет собой блок цветности, модуль 304 обработки прогнозирования может определять весовые коэффициенты для выполнения прогнозирования со взвешиванием согласно числу соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием. Таким образом, вместо определения весовых коэффициентов согласно соседним блокам по отношению к текущему блоку цветности, модуль 304 обработки прогнозирования может определять число внутренне прогнозированных блоков, соседних с блоком яркости, соответствующим текущему блоку цветности, затем определять весовые коэффициенты на основе числа внутренне прогнозированных блоков, соседних с блоком яркости.[0143] In accordance with the techniques of this disclosure, prediction processing module 304 can perform inter-intra prediction of video data blocks (eg, CUs). Thus, the prediction processing module 304 can generate a prediction block by causing the motion compensation module 316 to generate an inter-prediction block and the intra-prediction module 318 to generate an intra-prediction block. The prediction processing unit 304 may generate a final prediction block for the current block by performing weighted combination of samples of the inter-prediction block and the intra-prediction block. When the current block is a chroma block, the prediction processing unit 304 may determine weights for performing weighting prediction according to the number of neighboring blocks to the luma block corresponding to the current chroma block that are intra-prediction encoded. That is, instead of determining the weights according to neighboring blocks with respect to the current chroma block, the prediction processing unit 304 may determine the number of internally predicted blocks adjacent to the luma block corresponding to the current chroma block, then determine the weights based on the number of internally predicted blocks adjacent with brightness block.

[0144] В качестве примера, модуль 304 обработки прогнозирования может определять то, взаимно прогнозируются или нет соседний сверху блок и/или соседний слева блок по отношению к соответствующему блоку яркости. Когда ни один из этих соседних блоков не прогнозируется взаимно, модуль 304 обработки прогнозирования может определять весовой коэффициент в 3, который должен применяться к блоку внутреннего прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку взаимного прогнозирования. Когда оба из этих соседних блоков взаимно прогнозируются, модуль 304 обработки прогнозирования может определять весовой коэффициент в 3, который должен применяться к блоку взаимного прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку внутреннего прогнозирования. Когда один из этих соседних блоков взаимно прогнозируется, а другой внутренне прогнозируется, модуль 304 обработки прогнозирования может определять весовые коэффициенты в 2, которые должны применяться как к блоку взаимного прогнозирования, так и к блоку внутреннего прогнозирования. В некоторых примерах, модуль 304 обработки прогнозирования может подсчитывать соседние блоки, прогнозированные с использованием взаимно-внутреннего прогнозирования и/или внутриблочного копирования, в качестве кодированных с взаимным прогнозированием блоков.[0144] As an example, prediction processing module 304 may determine whether or not a top adjacent block and/or a left adjacent block are mutually predicted with respect to a corresponding luminance block. When none of these neighboring blocks are mutually predicted, the prediction processing unit 304 may determine a weight of 3 to be applied to the intra-prediction block and a weight of 1 to be applied to the inter-prediction block. When both of these adjacent blocks are inter-predicted, the prediction processing unit 304 may determine a weight of 3 to be applied to the inter-prediction block and a weight of 1 to be applied to the intra-prediction block. When one of these neighboring blocks is inter-predicted and the other is internally predicted, prediction processing module 304 may determine weights of 2 to be applied to both the inter-prediction block and the intra-prediction block. In some examples, prediction processing module 304 may count neighboring blocks predicted using inter-intra prediction and/or intra-block copy as inter-prediction coded blocks.

[0145] Запоминающее 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 или внемикросхемным относительно этих компонентов.[0145] The CPB storage device 320 may store video data, such as an encoded video bit stream, to be decoded by 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 device 320 may include a CPB that stores encoded video data (eg, syntax elements) from the encoded video bitstream. In addition, CPB storage device 320 may store video data other than syntax elements of the encoded picture, such as temporary data representing outputs from various modules of video decoder 300. DPB 314 generally stores decoded pictures that video decoder 300 may output and/or used as reference video data when decoding subsequent data or pictures of the encoded video bit stream. CPB memory 320 and DPB 314 may be formed by any of a variety of memory devices, for example, dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of storage devices. CPB storage device 320 and DPB 314 may be provided by identical storage device or separate storage devices. In various examples, CPB storage device 320 may be on-chip with other components of video decoder 300 or off-chip with respect to those components.

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

[0147] Различные модули, показанные на фиг. 5, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 4, фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0147] The various modules shown in FIG. 5 are illustrated to assist in understanding the operations performed by the video decoder 300. The modules may be implemented as fixed functional circuits, programmable circuits, or a combination of the above. Similar to Fig. 4, fixed function circuits mean circuits that provide specific functionality and are preset regarding the operations that can be performed. Programmable circuits mean circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, programmable circuits may execute software or firmware that instructs the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed function diagrams can execute program instructions (for example, to accept parameters or output parameters), but the types of operations that fixed function diagrams 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.

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

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

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

[0151] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, задающие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как параметр квантования (QP) и/или индикатор(ы) режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, чтобы определять степень квантования и, аналогично, степень обратного квантования для модуля 306 обратного квантования, которая должна применяться. Модуль 306 обратного квантования, например, может выполнять операцию побитового сдвига влево, чтобы обратно квантовать квантованные коэффициенты преобразования. Модуль 306 обратного квантования в силу этого может формировать блок коэффициентов преобразования, включающий в себя коэффициенты преобразования.[0151] Entropy decoding module 302 may entropy decode syntax elements defining quantized transform coefficients of a block of quantized transform coefficients, as well as transform information such as quantization parameter (QP) and/or transform mode indicator(s). The 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 the inverse quantization module 306 to be applied. Inverse quantization module 306, for example, may perform a bit left shift operation to inversely quantize the quantized transform coefficients. The inverse quantization unit 306 can therefore generate a transform coefficient block including transform coefficients.

[0152] После того, как модуль 306 обратного квантования формирует блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов преобразования, чтобы формировать остаточный блок, ассоциированный с текущим блоком. Например, модуль 308 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.[0152] After the inverse quantization unit 306 generates a block of transform coefficients, the inverse transform processing unit 308 may apply one or more inverse transforms to the block of transform coefficients 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 transform (KLT), inverse rotational transform, inverse directional transform, or other inverse transform to the block of coefficients.

[0153] Кроме того, модуль 304 обработки прогнозирования формирует прогнозный блок согласно синтаксическим элементам с информацией прогнозирования, которые энтропийно декодированы посредством модуля 302 энтропийного декодирования. Например, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок взаимно прогнозируется, модуль 316 компенсации движения может формировать прогнозный блок. В этом случае, синтаксические элементы с информацией прогнозирования могут указывать опорную картинку в DPB 314, из которого можно извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения, в общем, может выполнять процесс взаимного прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 224 компенсации движения (фиг. 4).[0153] 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 syntax elements with prediction information indicate that the current block is mutually predicted, motion compensation module 316 may generate the prediction block. In this case, the syntax elements with the prediction information may indicate a reference picture in the DPB 314 from which a 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 the method described with respect to the motion compensation module 224 (FIG. 4).

[0154] В качестве другого примера, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок внутренне прогнозируется, модуль 318 внутреннего прогнозирования может формировать прогнозный блок согласно режиму внутреннего прогнозирования, указываемому посредством синтаксических элементов с информацией прогнозирования. С другой стороны, модуль 318 внутреннего прогнозирования, в общем, может выполнять процесс внутреннего прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 226 внутреннего прогнозирования (фиг. 4). Модуль 318 внутреннего прогнозирования может извлекать данные соседних выборок по отношению к текущему блоку из DPB 314.[0154] As another example, if the prediction information syntax elements indicate that the current block is internally predicted, the intra prediction module 318 may generate the 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 the method described with respect to the intra prediction module 226 (FIG. 4). The intra prediction module 318 may retrieve data from neighboring samples relative to the current block from the DPB 314.

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

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

[0157] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущей картинки для внутреннего прогнозирования и ранее декодированных картинок для последующей компенсации движения, в модуль 304 обработки прогнозирования. Кроме того, видеодекодер 300 может выводить декодированные картинки из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.[0157] The video decoder 300 may store the reconstructed blocks in the DPB 314. As explained above, the DPB 314 may provide reference information, such as samples of the current picture for intra prediction and previously decoded pictures for subsequent motion compensation, to the prediction processing module 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. 1.

[0158] Видеодекодер 300 по фиг. 5 представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока видеоданных; формировать блок внутреннего прогнозирования для текущего блока видеоданных; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодировать (т.е. декодировать, в этом примере) текущий блок с использованием блока прогнозирования.[0158] Video decoder 300 of FIG. 5 represents an example of a video encoding apparatus comprising one or more processors configured to generate an inter-prediction block for a current block of video data; generate an internal prediction block for the current block of video data; apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; combine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current block; and encode (ie, decode, in this example) the current block using the prediction block.

[0159] Видеодекодер 300 также представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.[0159] Video decoder 300 also provides an example of a device for encoding video data, comprising one or more processors configured to generate an inter-prediction block for a current chrominance block of video data; generate an internal prediction block for the current color block of video data; determine the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; determine the first weight coefficient and the second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; combine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; and encode the current chrominance block using a prediction block.

[0160] Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока, в соответствии с технологией этого раскрытия сущности. Текущий блок может содержать текущую CU. Хотя описывается относительно видеокодера 200 (фиг. 1 и 4), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 6.[0160] FIG. 6 is a flowchart illustrating an exemplary method for encoding a current block in accordance with the technology of this disclosure. The current block may contain the current CU. Although described in relation to video encoder 200 (FIGS. 1 and 4), it should be understood that other devices may be configured to perform a method similar to the method of FIGS. 6.

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

[0162] Таким образом, способ по фиг. 6 представляет пример способа, включающего в себя формирование блока взаимного прогнозирования для текущего блока видеоданных; формирование блока внутреннего прогнозирования для текущего блока видеоданных; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодирование (т.е. кодирование) текущего блока с использованием блока прогнозирования.[0162] Thus, the method of FIG. 6 represents an example of a method including generating an inter-prediction block for a current video data block; generating an internal prediction block for the current block of video data; applying a first weight coefficient to the inter-prediction block and a second weight coefficient to the intra-prediction block; combining the first weighted inter-prediction block and the second weighted intra-prediction block to form a prediction block for the current block; and encoding (ie, encoding) the current block using the prediction block.

[0163] Фиг. 7 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока в соответствии с технологиями этого раскрытия сущности. Текущий блок может содержать текущую CU. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 5), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 7.[0163] FIG. 7 is a flowchart illustrating an exemplary method for decoding a current block in accordance with the techniques of this disclosure. The current block may contain the current CU. Although described in relation to video decoder 300 (FIGS. 1 and 5), it should be understood that other devices may be configured to perform a method similar to the method of FIGS. 7.

[0164] Видеодекодер 300 может принимать энтропийно кодированные данные для текущего блока, к примеру, энтропийно кодированную информацию прогнозирования и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Видеодекодер 300 может энтропийно декодировать энтропийно кодированные данные для того, чтобы определять информацию прогнозирования для текущего блока и воспроизводить коэффициенты остаточного блока (372). Видеодекодер 300 может прогнозировать текущий блок (374), например, с использованием режима взаимно-внутреннего прогнозирования согласно технологиям этого раскрытия сущности, как указано посредством информации прогнозирования для текущего блока, чтобы вычислять блок прогнозирования для текущего блока. Видеодекодер 300 затем может обратно сканировать воспроизведенные коэффициенты (376), чтобы создавать блок квантованных коэффициентов преобразования. Видеодекодер 300 затем может обратно квантовать и обратно преобразовывать коэффициенты для того, чтобы формировать остаточный блок (378). Видеодекодер 300 может, в конечном счете, декодировать текущий блок посредством комбинирования блока прогнозирования и остаточного блока (380).[0164] Video decoder 300 may receive entropy encoded data for the current block, eg, entropy encoded prediction information and entropy encoded data for coefficients of a residual block corresponding to the current block (370). Video decoder 300 may entropy decode the entropy encoded data to determine prediction information for the current block and reproduce coefficients of the residual block (372). Video decoder 300 may predict the current block (374), for example, using an inter-intra prediction mode according to the techniques of this disclosure, as indicated by the prediction information for the current block, to calculate a prediction block for the current block. Video decoder 300 may then backscan the reproduced coefficients (376) to create a block of quantized transform coefficients. Video decoder 300 can then dequantize and deconvert the coefficients to generate a residual block (378). Video decoder 300 may ultimately decode the current block by combining a prediction block and a residual block (380).

[0165] Таким образом, способ по фиг. 7 представляет пример способа, включающего в себя формирование блока взаимного прогнозирования для текущего блока видеоданных; формирование блока внутреннего прогнозирования для текущего блока видеоданных; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодирование (т.е. декодирование) текущего блока с использованием блока прогнозирования.[0165] Thus, the method of FIG. 7 represents an example of a method including generating an inter-prediction block for a current video data block; generating an internal prediction block for the current block of video data; applying a first weight coefficient to the inter-prediction block and a second weight coefficient to the intra-prediction block; combining the first weighted inter-prediction block and the second weighted intra-prediction block to form a prediction block for the current block; and encoding (ie, decoding) the current block using the prediction block.

[0166] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования (кодирования или декодирования) видеоданных согласно технологиям этого раскрытия сущности. Для целей примера и пояснения, способ по фиг. 8 поясняется относительно видеодекодера 300 по фиг. 1 и 5, хотя видеокодер 200 по фиг. 1 и 4 или другие устройства кодирования видео могут осуществлять этот или аналогичный способ. Способ по фиг. 8 может осуществляться посредством видеокодера 200 при прогнозировании текущего блока цветности, например, на этапе 350 способа по фиг. 6, либо посредством видеодекодера 300 при прогнозировании текущего блока цветности, например, на этапе 374 по фиг. 7.[0166] FIG. 8 is a flowchart illustrating an exemplary method for encoding (encoding or decoding) video data according to the technologies of this disclosure. For purposes of example and explanation, the method of FIG. 8 is explained with respect to the video decoder 300 of FIG. 1 and 5, although video encoder 200 of FIG. 1 and 4 or other video encoding devices may implement this or a similar method. The method according to FIG. 8 may be performed by video encoder 200 in predicting the current chrominance block, for example, at step 350 of the method of FIG. 6, or by video decoder 300 when predicting the current chrominance block, for example, at step 374 of FIG. 7.

[0167] Первоначально, видеодекодер 300 формирует блок взаимного прогнозирования для текущего блока цветности (400). Видеодекодер 300 также может формировать блок внутреннего прогнозирования для текущего блока цветности (402). Видеодекодер 300 затем может определять блок яркости, соответствующий блоку цветности (404), например, блок яркости, который совместно размещается с блоком цветности в массиве яркости.[0167] Initially, video decoder 300 generates an inter-prediction block for the current chrominance block (400). Video decoder 300 may also generate an intra prediction block for the current chrominance block (402). Video decoder 300 may then determine a luma block corresponding to the chrominance block (404), for example, a luma block that is co-located with the chrominance block in the luma array.

[0168] Видеодекодер 300 затем может определять режимы прогнозирования соседних блоков по отношению к блоку яркости (406). Например, видеодекодер 300 может определять режимы прогнозирования верхнего соседнего блока 142 и левого соседнего блока 144 по фиг. 3A, правого верхнего соседнего блока 148 и левого нижнего соседнего блока 150 по фиг. 3B и т.п. согласно другим примерам соседних блоков, как показано на фиг. 3A-3F. Видеодекодер 300 также может определять число внутренне прогнозированных соседних блоков по отношению к блоку яркости (408). Альтернативно, видеодекодер 300 может определять число взаимно прогнозированных соседних блоков по отношению к блоку яркости.[0168] Video decoder 300 can then determine neighboring block prediction modes relative to the luminance block (406). For example, video decoder 300 may determine the prediction modes of the top neighbor block 142 and the left neighbor block 144 of FIG. 3A, the upper right adjacent block 148 and the lower left adjacent block 150 of FIG. 3B, etc. according to other examples of adjacent blocks, as shown in FIG. 3A-3F. Video decoder 300 may also determine the number of internally predicted neighboring blocks relative to the luminance block (408). Alternatively, video decoder 300 may determine the number of mutually predicted neighboring blocks with respect to the luminance block.

[0169] Видеодекодер 300 также может определять весовые коэффициенты, которые должны применяться к блоку взаимного прогнозирования и блоку внутреннего прогнозирования, согласно числу внутренне прогнозированных соседних блоков по отношению к блоку яркости (410). Если предусмотрено большее число взаимно прогнозированных блоков, чем внутренне прогнозированных блоков, видеодекодер 300 может определять то, что весовой коэффициент, который должен применяться к блоку взаимного прогнозирования, превышает весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования. Например, весовой коэффициент, который должен применяться к блоку взаимного прогнозирования, может быть равным 3, и весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования, может быть равным 1. Если число блоков внутреннего прогнозирования превышает число блоков взаимного прогнозирования, видеодекодер 300 может определять то, что весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования, превышает весовой коэффициент, который должен применяться к блоку взаимного прогнозирования. Например, весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования, может быть равным 3, и весовой коэффициент, который должен применяться к блоку взаимного прогнозирования, может быть равным 1. Если числа блоков внутреннего и взаимного прогнозирования являются идентичными, весовые коэффициенты могут быть равными, например, 2 для каждого из них.[0169] Video decoder 300 may also determine weights to be applied to the inter-prediction block and the intra-prediction block according to the number of intra-predicted neighboring blocks with respect to the luminance block (410). If there are more inter-prediction blocks than intra-prediction blocks, video decoder 300 may determine that the weight to be applied to the inter-prediction block is greater than the weight to be applied to the intra-prediction block. For example, the weight to be applied to the inter-prediction block may be 3, and the weight to be applied to the intra-prediction block may be 1. If the number of intra-prediction blocks exceeds the number of inter-prediction blocks, video decoder 300 may determine that the weight to be applied to the intra prediction block is greater than the weight to be applied to the inter prediction block. For example, the weight to be applied to the intra prediction block may be 3, and the weight to be applied to the inter prediction block may be 1. If the numbers of intra and inter prediction blocks are identical, the weights may be equal eg 2 for each of them.

[0170] Видеодекодер 300 затем может комбинировать блок взаимного прогнозирования и блок внутреннего прогнозирования с использованием весовых коэффициентов, чтобы формировать блок прогнозирования для текущего блока цветности (412). Видеодекодер 300 затем может кодировать текущий блок цветности с использованием блока прогнозирования (414).[0170] Video decoder 300 may then combine the inter-prediction block and the intra-prediction block using weights to generate a prediction block for the current chrominance block (412). Video decoder 300 may then encode the current chrominance block using a prediction block (414).

[0171] Таким образом, способ по фиг. 8 представляет пример способа кодирования видеоданных, при этом способ содержит формирование блока взаимного прогнозирования для текущего блока цветности видеоданных; формирование блока внутреннего прогнозирования для текущего блока цветности видеоданных; определение числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определение первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодирование текущего блока цветности с использованием блока прогнозирования.[0171] Thus, the method of FIG. 8 represents an example of a method for encoding video data, the method comprising generating an inter-prediction block for a current chrominance block of video data; generating an internal prediction block for the current color block of video data; determining the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are intra-prediction encoded; determining a first weight coefficient and a second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; applying a first weight coefficient to the inter-prediction block and a second weight coefficient to the intra-prediction block; combining the first weighted inter-prediction block and the second weighted intra-prediction block to form a prediction block for the current chrominance block; and encoding the current chrominance block using the prediction block.

[0172] Определенные технологии этого раскрытия сущности обобщаются в нижеприведенных примерах.[0172] Certain techniques of this disclosure are summarized in the examples below.

[0173] Пример 1: Способ кодирования видеоданных, при этом способ содержит: формирование блока взаимного прогнозирования для текущего блока видеоданных; формирование блока внутреннего прогнозирования для текущего блока видеоданных; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодирование текущего блока с использованием блока прогнозирования.[0173] Example 1: A method for encoding video data, the method comprising: generating an inter-prediction block for a current block of video data; generating an internal prediction block for the current block of video data; applying a first weight coefficient to the inter-prediction block and a second weight coefficient to the intra-prediction block; combining the first weighted inter-prediction block and the second weighted intra-prediction block to form a prediction block for the current block; and encoding the current block using the prediction block.

[0174] Пример 2: Способ по примеру 1, в котором кодирование текущего блока содержит декодирование текущего блока, содержащее: декодирование остаточного блока для текущего блока; и комбинирование выборок остаточного блока с выборками блока прогнозирования.[0174] Example 2: The method of Example 1, wherein encoding the current block comprises decoding the current block, comprising: decoding a residual block for the current block; and combining the samples of the residual block with the samples of the prediction block.

[0175] Пример 3: Способ по любому из примеров 1 и 2, в котором кодирование текущего блока содержит кодирование текущего блока, содержащее: вычитание выборок блока прогнозирования из выборок текущего блока, чтобы формировать остаточный блок; и кодирование остаточного блока.[0175] Example 3: The method as in any one of Examples 1 and 2, wherein the encoding of the current block comprises encoding the current block comprising: subtracting prediction block samples from the current block samples to form a residual block; and encoding the residual block.

[0176] Пример 4: Способ по любому из примеров 1-3, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно числу внутренне кодированных соседних блоков по отношению к текущему блоку.[0176] Example 4: The method as in any one of Examples 1-3, further comprising determining the first weight coefficient and the second weight coefficient according to the number of internally coded neighboring blocks with respect to the current block.

[0177] Пример 5: Способ по примеру 4, в котором соседние блоки включают в себя верхний соседний блок.[0177] Example 5: The method of Example 4, wherein the adjacent blocks include an upper adjacent block.

[0178] Пример 6: Способ по любому из примеров 4 и 5, в котором соседние блоки включают в себя левый соседний блок.[0178] Example 6: The method of any one of Examples 4 and 5, wherein the adjacent blocks include a left adjacent block.

[0179] Пример 7: Способ по любому из примеров 4-6, в котором соседние блоки включают в себя правый верхний соседний блок.[0179] Example 7: The method of any one of Examples 4-6, wherein the adjacent blocks include a right upper adjacent block.

[0180] Пример 8: Способ по любому из примеров 4-7, в котором соседние блоки включают в себя левый нижний соседний блок.[0180] Example 8: The method as in any one of Examples 4-7, wherein the adjacent blocks include a lower left adjacent block.

[0181] Пример 9: Способ по любому из примеров 4-8, в котором соседние блоки включают в себя левый верхний соседний блок.[0181] Example 9: The method of any one of Examples 4-8, wherein the adjacent blocks include a left upper adjacent block.

[0182] Пример 10: Способ по любому из примеров 4-9, дополнительно содержащий определение соседних блоков согласно высоте текущего блока и ширине текущего блока.[0182] Example 10: The method as in any one of Examples 4-9, further comprising determining adjacent blocks according to the height of the current block and the width of the current block.

[0183] Пример 11: Способ по примеру 10, в котором когда высота и ширина равны, соседние блоки включают в себя правый верхний соседний блок и левый нижний соседний блок.[0183] Example 11: The method of Example 10, wherein when the height and width are equal, the adjacent blocks include a right upper adjacent block and a left lower adjacent block.

[0184] Пример 12: Способ по примеру 11, в котором соседние блоки дополнительно включают в себя верхний соседний блок и левый соседний блок.[0184] Example 12: The method of Example 11, wherein the adjacent blocks further include an upper adjacent block and a left adjacent block.

[0185] Пример 13: Способ по примеру 12, в котором соседние блоки дополнительно включают в себя левый верхний соседний блок.[0185] Example 13: The method of Example 12, wherein the adjacent blocks further include a left upper adjacent block.

[0186] Пример 14: Способ по любому из примеров 10-13, в котором, когда высота и ширина отличаются, соседние блоки включают в себя правый верхний соседний блок и левый нижний соседний блок.[0186] Example 14: The method as in any one of Examples 10-13, wherein, when the height and width are different, the adjacent blocks include a right upper adjacent block and a left lower adjacent block.

[0187] Пример 15: Способ по примеру 10, в котором, когда высота и ширина равны, соседние блоки являются симметричными вдоль размеров по ширине и высоте текущего блока, а когда высота и ширина не равна, соседние блоки являются асимметричными вдоль размеров по ширине и высоте текущего блока.[0187] Example 15: The method of Example 10, in which, when the height and width are equal, adjacent blocks are symmetrical along the width and height dimensions of the current block, and when the height and width are not equal, adjacent blocks are asymmetrical along the width and height dimensions height of the current block.

[0188] Пример 16: Способ по примеру 15, в котором, когда ширина превышает высоту, соседние блоки включают в себя правый верхний соседний блок и левый соседний блок, а когда высота превышает ширину, соседние блоки включают в себя верхний соседний блок и левый нижний соседний блок.[0188] Example 16: The method of Example 15, wherein when the width exceeds the height, the adjacent blocks include a right upper adjacent block and a left adjacent block, and when the height exceeds the width, the adjacent blocks include an upper adjacent block and a lower left adjacent block.

[0189] Пример 17: Способ по любому из примеров 4-16, дополнительно содержащий определение того, что один из соседних блоков, который кодируется с внутриблочным копированием либо кодируется на основе ссылок на текущие картинки, представляет собой взаимно кодированный блок.[0189] Example 17: The method of any one of Examples 4-16, further comprising determining that one of the adjacent blocks that is encoded with intra-block copy or encoded based on current picture references is a cross-encoded block.

[0190] Пример 18: Способ по любому из примеров 4-16, дополнительно содержащий определение того, что один из соседних блоков, который кодируется с внутриблочным копированием либо кодируется на основе ссылок на текущие картинки, представляет собой внутренне кодированный блок.[0190] Example 18: The method of any one of Examples 4-16, further comprising determining that one of the adjacent blocks that is encoded with intra-block copy or encoded based on references to current pictures is an intra-encoded block.

[0191] Пример 19: Способ по любому из примеров 4-18, дополнительно содержащий определение того, что один из соседних блоков, который взаимно-внутренне кодируется, представляет собой взаимно кодированный блок.[0191] Example 19: The method of any one of Examples 4-18, further comprising determining that one of the adjacent blocks that is inter-intra-encoded is an inter-encoded block.

[0192] Пример 20: Способ по любому из примеров 4-18, дополнительно содержащий определение того, что один из соседних блоков, который взаимно-внутренне кодируется, представляет собой внутренне кодированный блок.[0192] Example 20: The method of any one of Examples 4-18, further comprising determining that one of the adjacent blocks that is inter-intra-coded is an intra-coded block.

[0193] Пример 21: Способ по любому из примеров 4-20, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первый весовой коэффициент, когда все соседние блоки внутренне кодируются.[0193] Example 21: The method as in any one of Examples 4-20, wherein determining the first weight and the second weight comprises selecting the second weight to be greater than the first weight when all adjacent blocks are internally encoded.

[0194] Пример 22: Способ по любому из примеров 4-21, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как превышающего второй весовой коэффициент, когда, по меньшей мере, один из соседних блоков не кодируется внутренне.[0194] Example 22: The method as in any one of Examples 4-21, wherein determining the first weight and the second weight comprises selecting the first weight to be greater than the second weight when at least one of the adjacent blocks is not internally encoded.

[0195] Пример 23: Способ по любому из примеров 4-22, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного второму весовому коэффициенту, когда только один из соседних блоков внутренне кодируется.[0195] Example 23: The method as in any one of Examples 4-22, wherein determining the first weight and the second weight comprises selecting the first weight to be equal to the second weight when only one of the adjacent blocks is internally encoded.

[0196] Пример 24: Способ по любому из примеров 4-23, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 1 и второго весового коэффициента как равного 3, когда левый верхний соседний блок, правый верхний соседний блок и левый нижний соседний блок в текущий блок внутренне кодируются.[0196] Example 24: The method as in any one of Examples 4-23, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient as equal to 1 and the second weight coefficient as equal to 3 when the upper left adjacent block, the upper right adjacent block and the lower left adjacent block in the current block are internally encoded.

[0197] Пример 25: Способ по любому из примеров 4-23, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 3 и второго весового коэффициента как равного 5, когда левый верхний соседний блок, правый верхний соседний блок и левый нижний соседний блок в текущий блок внутренне кодируются.[0197] Example 25: The method as in any one of Examples 4-23, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient as equal to 3 and the second weight coefficient as equal to 5 when the upper left adjacent block, the upper right adjacent block and the lower left adjacent block in the current block are internally encoded.

[0198] Пример 26: Способ по любому из примеров 4-25, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 2 и второго весового коэффициента как равного 2, когда, по меньшей мере, один из левого верхнего соседнего блока, правого верхнего соседнего блока или левого нижнего соседнего блока по отношению к текущему блоку внутренне кодируется.[0198] Example 26: The method as in any one of Examples 4-25, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient as equal to 2 and the second weight coefficient as equal to 2 when at least one of the left top adjacent block, top right neighbor block, or bottom left neighbor block to the current block is internally encoded.

[0199] Пример 27: Способ по любому из примеров 4-25, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 4 и второго весового коэффициента как равного 4, когда, по меньшей мере, один из левого верхнего соседнего блока, правого верхнего соседнего блока или левого нижнего соседнего блока по отношению к текущему блоку внутренне кодируется.[0199] Example 27: The method as in any one of Examples 4-25, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient as equal to 4 and the second weight coefficient as equal to 4 when at least one of the left top adjacent block, top right neighbor block, or bottom left neighbor block to the current block is internally encoded.

[0200] Пример 28: Способ по любому из примеров 4-27, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 3 и второго весового коэффициента как равного 1, когда ни один из левого верхнего соседнего блока, правого верхнего соседнего блока и левого нижнего соседнего блока по отношению к текущему блоку не кодируется внутренне.[0200] Example 28: The method as in any one of Examples 4-27, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient as equal to 3 and the second weight coefficient as equal to 1 when none of the upper left adjacent block, the upper right adjacent block and the lower left adjacent block with respect to the current block are not internally encoded.

[0201] Пример 29: Способ по любому из примеров 4-27, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 5 и второго весового коэффициента как равного 3, когда ни один из левого верхнего соседнего блока, правого верхнего соседнего блока и левого нижнего соседнего блока по отношению к текущему блоку не кодируется внутренне.[0201] Example 29: The method as in any one of Examples 4-27, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient as equal to 5 and the second weight coefficient as equal to 3 when none of the upper left adjacent block, the upper right adjacent block and the lower left adjacent block with respect to the current block are not internally encoded.

[0202] Пример 30: Способ по любому из примеров 4-29, в котором определение первого весового коэффициента и второго весового коэффициента содержит копирование первого весового коэффициента и второго весового коэффициента из одного из соседних блоков, который многогипотезно внутренне кодируется.[0202] Example 30: The method as in any one of Examples 4-29, wherein determining the first weight and the second weight comprises copying the first weight and the second weight from one of the adjacent blocks that is multi-hypothesis internally encoded.

[0203] Пример 31: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первое отношение, когда только один из соседних блоков внутренне кодируется.[0203] Example 31: The method as in any one of Examples 4-30, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the second weight coefficient to be greater than the first ratio when only one of the adjacent blocks is internally encoded.

[0204] Пример 32: Способ по примеру 31, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.[0204] Example 32: The method of Example 31, wherein the second weighting factor is 3 and the first weighting factor is 1.

[0205] Пример 33: Способ по примеру 31, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.[0205] Example 33: The method of Example 31, wherein the second weighting factor is 5 and the first weighting factor is 3.

[0206] Пример 34: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как превышающего второе отношение, когда только один из соседних блоков внутренне кодируется.[0206] Example 34: The method as in any one of Examples 4-30, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the first weight coefficient to be greater than the second ratio when only one of the adjacent blocks is internally encoded.

[0207] Пример 35: Способ по примеру 34, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.[0207] Example 35: The method of Example 34, wherein the first weighting factor is 3 and the second weighting factor is 1.

[0208] Пример 36: Способ по примеру 34, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.[0208] Example 36: The method of Example 34, wherein the first weighting factor is 5 and the second weighting factor is 3.

[0209] Пример 37: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первое отношение, когда ни один из соседних блоков не кодируется внутренне.[0209] Example 37: The method as in any one of Examples 4-30, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the second weight coefficient to be greater than the first ratio when none of the adjacent blocks are internally encoded.

[0210] Пример 38: Способ по примеру 37, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.[0210] Example 38: The method of Example 37, wherein the second weighting factor is 3 and the first weighting factor is 1.

[0211] Пример 39: Способ по примеру 37, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.[0211] Example 39: The method of Example 37, wherein the second weighting factor is 5 and the first weighting factor is 3.

[0212] Пример 40: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первое отношение, когда, по меньшей мере, один из соседних блоков прогнозируется с использованием внутреннего DC-режима или планарного режима.[0212] Example 40: The method as in any one of Examples 4-30, wherein determining the first weight coefficient and the second weight coefficient comprises selecting the second weight coefficient to be greater than the first ratio when at least one of the adjacent blocks is predicted using an internal DC -mode or planar mode.

[0213] Пример 41: Способ по примеру 40, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.[0213] Example 41: The method of Example 40, wherein the second weighting factor is 3 and the first weighting factor is 1.

[0214] Пример 42: Способ по примеру 40, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.[0214] Example 42: The method of Example 40, wherein the second weighting factor is 5 and the first weighting factor is 3.

[0215] Пример 43: Способ по любому из примеров 1-42, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно блоку сигналов яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.[0215] Example 43: The method as in any one of Examples 1-42, further comprising determining a first weight and a second weight according to a luminance signal block of one of the adjacent blocks, when one of the adjacent blocks has a single luminance and chroma coding tree or a dual tree enabled brightness and color coding.

[0216] Пример 44: Способ по любому из примеров 1-43, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно блоку сигналов цветности одного из соседних блоков, когда один из соседних блоков имеет активированное сдвоенное дерево кодирования яркости и цветности.[0216] Example 44: The method as in any one of Examples 1-43, further comprising determining a first weight and a second weight according to a chroma block of one of the adjacent blocks when one of the adjacent blocks has a dual luma and chroma coding tree enabled.

[0217] Пример 45: Способ по любому из примеров 1-44, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно номеру взаимного прогнозирования индексированного блока объединения.[0217] Example 45: The method as in any one of Examples 1-44, further comprising determining the first weight coefficient and the second weight coefficient according to the inter-prediction number of the indexed merge block.

[0218] Пример 46: Способ по примеру 45, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда индексированный блок объединения представляет собой бипрогнозирование.[0218] Example 46: The method of Example 45, wherein determining the first weight coefficient and the second weight coefficient comprises setting the first weight coefficient higher than the second weight coefficient when the indexed combine block is a bi-prediction.

[0219] Пример 47: Способ по примеру 46, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.[0219] Example 47: The method of Example 46, wherein the first weighting factor is 3 and the second weighting factor is 1.

[0220] Пример 48: Способ по примеру 46, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.[0220] Example 48: The method of Example 46, wherein the first weighting factor is 5 and the second weighting factor is 3.

[0221] Пример 49: Способ по любому из примеров 46-48, в котором определение первого весового коэффициента и второго весового коэффициента содержит определение первого весового коэффициента и второго весового коэффициента согласно одному из примеров 4-42, когда индексированный блок объединения представляет собой унипрогнозирование.[0221] Example 49: The method of any one of Examples 46-48, wherein the determination of the first weight coefficient and the second weight coefficient comprises the determination of the first weight coefficient and the second weight coefficient according to one of Examples 4-42, when the indexed combine block is a uniprediction.

[0222] Пример 50: Способ по примеру 45, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда индексированный блок объединения представляет собой унипрогнозирование.[0222] Example 50: The method of Example 45, wherein determining the first weight coefficient and the second weight coefficient comprises setting the first weight coefficient higher than the second weight coefficient when the indexed combine block is a uniprediction.

[0223] Пример 51: Способ по примеру 50, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.[0223] Example 51: The method of Example 50, wherein the first weighting factor is 3 and the second weighting factor is 1.

[0224] Пример 52: Способ по примеру 50, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.[0224] Example 52: The method of Example 50, wherein the first weighting factor is 5 and the second weighting factor is 3.

[0225] Пример 53: Способ по любому из примеров 1-52, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно размеру текущего блока.[0225] Example 53: The method as in any one of Examples 1-52, further comprising determining a first weighting factor and a second weighting factor according to the size of the current block.

[0226] Пример 54: Способ по примеру 53, в котором размер текущего блока содержит минимум ширины текущего блока и высоты текущего блока.[0226] Example 54: The method of Example 53, wherein the size of the current block contains the minimum of the width of the current block and the height of the current block.

[0227] Пример 55: Способ по примеру 53, в котором размер текущего блока содержит максимум ширины текущего блока и высоты текущего блока.[0227] Example 55: The method of Example 53, wherein the size of the current block contains the maximum of the width of the current block and the height of the current block.

[0228] Пример 56: Способ по примеру 53, в котором размер текущего блока содержит произведение ширины текущего блока и высоты текущего блока.[0228] Example 56: The method of Example 53, wherein the size of the current block comprises the product of the width of the current block and the height of the current block.

[0229] Пример 57: Способ по примеру 53, в котором размер текущего блока содержит сумму ширины текущего блока и высоты текущего блока.[0229] Example 57: The method of Example 53, wherein the size of the current block contains the sum of the width of the current block and the height of the current block.

[0230] Пример 58: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда размер блока выше предварительно заданного порогового значения.[0230] Example 58: The method as in any one of Examples 53-57, wherein determining the first weight coefficient and the second weight coefficient comprises setting the first weight coefficient higher than the second weight coefficient when the block size is higher than a predetermined threshold value.

[0231] Пример 59: Способ по примеру 58, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.[0231] Example 59: The method of Example 58, wherein the first weighting factor is 3 and the second weighting factor is 1.

[0232] Пример 60: Способ по примеру 58, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.[0232] Example 60: The method of Example 58, wherein the first weighting factor is 5 and the second weighting factor is 3.

[0233] Пример 61: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание второго весового коэффициента выше первого весового коэффициента, когда размер блока выше предварительно заданного порогового значения.[0233] Example 61: The method as in any one of Examples 53-57, wherein determining the first weight coefficient and the second weight coefficient comprises setting the second weight coefficient higher than the first weight coefficient when the block size is higher than a predetermined threshold value.

[0234] Пример 62: Способ по примеру 61, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.[0234] Example 62: The method of Example 61, wherein the second weighting factor is 3 and the first weighting factor is 1.

[0235] Пример 63: Способ по примеру 61, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.[0235] Example 63: The method of Example 61, wherein the second weighting factor is 5 and the first weighting factor is 3.

[0236] Пример 64: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда размер блока ниже предварительно заданного порогового значения.[0236] Example 64: The method as in any one of Examples 53-57, wherein determining the first weight coefficient and the second weight coefficient comprises setting the first weight coefficient above the second weight coefficient when the block size is below a predetermined threshold value.

[0237] Пример 65: Способ по примеру 64, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.[0237] Example 65: The method of Example 64, wherein the first weighting factor is 3 and the second weighting factor is 1.

[0238] Пример 66: Способ по примеру 64, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.[0238] Example 66: The method of Example 64, wherein the first weighting factor is 5 and the second weighting factor is 3.

[0239] Пример 67: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание второго весового коэффициента выше первого весового коэффициента, когда размер блока ниже предварительно заданного порогового значения.[0239] Example 67: The method as in any one of Examples 53-57, wherein determining the first weight coefficient and the second weight coefficient comprises setting the second weight coefficient higher than the first weight coefficient when the block size is below a predetermined threshold value.

[0240] Пример 68: Способ по примеру 67, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.[0240] Example 68: The method of Example 67, wherein the second weighting factor is 3 and the first weighting factor is 1.

[0241] Пример 69: Способ по примеру 67, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.[0241] Example 69: The method of Example 67, wherein the second weighting factor is 5 and the first weighting factor is 3.

[0242] Пример 70: Способ по любому из примеров 1-69, дополнительно содержащий кодирование данных потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.[0242] Example 70: The method of any one of Examples 1-69, further comprising encoding data of a bit stream representing the first weight and the second weight.

[0243] Пример 71: Способ по примеру 70, в котором данные потока битов содержат, по меньшей мере, одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.[0243] Example 71: The method of Example 70, wherein the bitstream data comprises at least one of a sequence parameter set, a picture parameter set, an adaptation parameter set, a video parameter set, a picture header, a slice header, a tile header, or a header block.

[0244] Пример 72: Устройство для кодирования видеоданных, причем устройство содержит одно или более средств для осуществления способа по любому из примеров 1-71.[0244] Example 72: An apparatus for encoding video data, the apparatus comprising one or more means for implementing the method of any one of Examples 1-71.

[0245] Пример 73: Устройство по примеру 72, в котором одно или более средств содержат один или более процессоров, реализованных в схеме.[0245] Example 73: The apparatus of Example 72, wherein the one or more means comprise one or more processors implemented in the circuit.

[0246] Пример 74: Устройство по примеру 72, дополнительно содержащее дисплей, выполненный с возможностью отображать декодированные видеоданные.[0246] Example 74: The apparatus of Example 72 further comprising a display configured to display decoded video data.

[0247] Пример 75: Устройство по примеру 72, при этом устройство содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.[0247] Example 75: The device of Example 72, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver, or a set-top box.

[0248] Пример 76: Устройство по примеру 72, дополнительно содержащее запоминающее устройство, выполненное с возможностью сохранять видеоданные.[0248] Example 76: The apparatus of Example 72 further comprising a storage device configured to store video data.

[0249] Пример 77: Устройство для кодирования видеоданных, при этом устройство содержит: средство для формирования блока взаимного прогнозирования для текущего блока видеоданных; средство для формирования блока внутреннего прогнозирования для текущего блока видеоданных; средство для применения первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; средство для комбинирования первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и средство для кодирования текущего блока с использованием блока прогнозирования.[0249] Example 77: An apparatus for encoding video data, the apparatus comprising: means for generating an inter-prediction block for a current block of video data; means for generating an internal prediction block for the current block of video data; means for applying a first weight to the inter-prediction block and a second weight to the intra-prediction block; means for combining the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current block; and means for encoding the current block using the prediction block.

[0250] Пример 78: Машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют процессору осуществлять способ по любому из примеров 1-71.[0250] Example 78: A computer-readable storage medium having stored instructions that, when executed, instruct a processor to carry out the method of any of Examples 1-71.

[0251] Следует признавать то, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.[0251] It is 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 steps or events described are required to practical implementation of technologies). Additionally, in certain examples, steps or events may be executed concurrently, such as through multithreading, interrupt processing, or across multiple processors, rather than sequentially.

[0252] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполняться посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любую среду, которая упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя машиночитаемый носитель.[0252] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted, as one or more instructions or code, on a computer-readable medium and executed by a hardware processing unit. Computer-readable media may include computer-readable 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 location to another, such as according to a communications protocol. Thus, computer-readable media may 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 to retrieve instructions, code and/or data structures to implement the technologies described in this disclosure. The computer program product may include a machine-readable medium.

[0253] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.[0253] By way of example, and not limitation, these computer readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk storage device or other magnetic storage devices, flash memory or any other medium that can be used to store required program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is correctly called a machine-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 cable, 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 non-volatile tangible storage media. Disk and disc as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, wherein disc ) typically reproduce data magnetically, while discs (discs) typically reproduce data optically using lasers. Combinations of the above should also be included among machine-readable media.

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

[0255] Технологии этого раскрытия сущности могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.[0255] 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 a set of ICs (eg, a chipset). Various components, modules, or blocks are described in this disclosure to highlight the functional aspects of devices configured to implement the disclosed technologies, but do not necessarily require implementation through various hardware modules. Conversely, as described above, various modules may be combined into a codec hardware module or provided through a set of interoperable hardware modules including one or more processors as described above in combination with appropriate software and/or firmware.

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

Claims (90)

1. Способ кодирования видеоданных, при этом способ содержит этапы, на которых:1. A method for encoding video data, the method comprising the steps of: формируют блок взаимного прогнозирования для текущего блока цветности видеоданных;forming a mutual prediction block for the current color block of video data; формируют блок внутреннего прогнозирования для текущего блока цветности видеоданных;forming an internal prediction block for the current color block of video data; определяют число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;determining the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; определяют первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;determining a first weight coefficient and a second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; применяют первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования;applying a first weight coefficient to the inter-prediction block and a second weight coefficient to the intra-prediction block; комбинируют первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; иcombining the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; And кодируют текущий блок цветности с использованием блока прогнозирования.encode the current chrominance block using a prediction block. 2. Способ по п. 1, в котором определение числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит этап, на котором определяют то, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.2. The method of claim 1, wherein determining the number of neighboring blocks that are intra-prediction encoded comprises determining that the number of neighboring blocks that are intra-prediction encoded excludes neighboring blocks that are predicted using intra-block copying or combined intra-cross forecasting. 3. Способ по п. 1, в котором определение числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит этап, на котором определяют то, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.3. The method of claim 1, wherein determining the number of neighboring blocks that are intra prediction encoded comprises determining that the number of neighboring blocks that are intra prediction encoded excludes neighboring blocks that are predicted using a combined mutual -internal forecasting. 4. Способ по п. 1, в котором определение первого весового коэффициента и второго весового коэффициента дополнительно содержит этап, на котором определяют первый весовой коэффициент и второй весовой коэффициент согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.4. The method of claim 1, wherein determining the first weight coefficient and the second weight coefficient further comprises determining the first weight coefficient and the second weight coefficient according to the luminance block of one of the neighboring blocks when one of the neighboring blocks has a single coding tree activated luminance and chrominance or a dual luminance and chrominance coding tree. 5. Способ по п. 1, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.5. The method of claim 1, wherein the adjacent blocks include an upper adjacent block and a left adjacent block. 6. Способ по п. 1, в котором определение первого весового коэффициента и второго весового коэффициента содержит этап, на котором определяют первый весовой коэффициент и второй весовой коэффициент согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.6. The method of claim 1, wherein determining the first weight coefficient and the second weight coefficient comprises determining the first weight coefficient and the second weight coefficient according to whether the indexed merge block is predicted using unidirectional prediction or bidirectional prediction. 7. Способ по п. 1, в котором определение первого весового коэффициента и второго весового коэффициента содержит этап, на котором определяют первый весовой коэффициент и второй весовой коэффициент согласно размеру текущего блока цветности.7. The method of claim 1, wherein determining the first weight coefficient and the second weight coefficient comprises determining the first weight coefficient and the second weight coefficient according to the size of the current chromaticity block. 8. Способ по п. 1, дополнительно содержащий этап, на котором кодируют данные потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.8. The method of claim 1, further comprising encoding data of a bit stream representing the first weight coefficient and the second weight coefficient. 9. Способ по п. 8, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.9. The method of claim 8, wherein the bitstream data comprises at least one of a sequence parameter set, a picture parameter set, an adaptation parameter set, a video parameter set, a picture header, a slice header, a tile header, or a block header. 10. Способ по п. 1, в котором кодирование текущего блока цветности содержит этап, на котором декодируют текущий блок цветности, содержащий этапы, на которых:10. The method of claim 1, wherein encoding the current chrominance block comprises decoding the current chrominance block comprising the steps of: декодируют остаточный блок для текущего блока цветности; иdecoding a residual block for the current chrominance block; And комбинируют выборки остаточного блока с выборками блока прогнозирования.combining the samples of the residual block with the samples of the prediction block. 11. Способ по п. 1, в котором кодирование текущего блока цветности содержит этап, на котором кодируют текущий блок цветности, содержащий этапы, на которых:11. The method of claim 1, wherein encoding the current chrominance block comprises encoding the current chrominance block comprising the steps of: вычитают выборки блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; иsubtracting the prediction block samples from the current chrominance block samples to form a residual block; And кодируют остаточный блок.encode the residual block. 12. Устройство для кодирования видеоданных, при этом устройство содержит:12. A device for encoding video data, wherein the device contains: запоминающее устройство для сохранения видеоданных; иa storage device for storing video data; And один или более процессоров, реализованных в схеме и выполненных с возможностью:one or more processors implemented in the circuit and configured to: формировать блок взаимного прогнозирования для текущего блока цветности видеоданных;generate a mutual prediction block for the current color block of video data; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных;generate an internal prediction block for the current color block of video data; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;determine the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;determine the first weight coefficient and the second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования;apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; иcombine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; And кодировать текущий блок цветности с использованием блока прогнозирования.encode the current chrominance block using a prediction block. 13. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять то, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.13. The apparatus of claim 12, wherein the one or more processors are configured to determine that the number of neighboring blocks that are encoded with intra-prediction excludes neighboring blocks that are predicted using intra-block copying or combined intra-inter prediction. 14. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.14. The apparatus of claim 12, wherein the one or more processors are configured to determine that the number of neighboring blocks that are encoded with intra prediction excludes neighboring blocks that are predicted using combined inter-intra prediction. 15. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять первый весовой коэффициент и второй весовой коэффициент согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.15. The apparatus of claim 12, wherein the one or more processors are configured to determine the first weight and the second weight according to a luminance block of one of the adjacent blocks when one of the adjacent blocks has a single luma and chrominance coding tree or a dual coding tree enabled brightness and color. 16. Устройство по п. 12, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.16. The apparatus of claim 12, wherein the adjacent blocks include an upper adjacent block and a left adjacent block. 17. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять первый весовой коэффициент и второй весовой коэффициент согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.17. The apparatus of claim 12, wherein the one or more processors are configured to determine the first weight coefficient and the second weight coefficient according to whether the indexed merge block is predicted using unidirectional prediction or bidirectional prediction. 18. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять первый весовой коэффициент и второй весовой коэффициент согласно размеру текущего блока цветности.18. The apparatus of claim 12, wherein the one or more processors are configured to determine the first weight coefficient and the second weight coefficient according to the size of the current chroma block. 19. Устройство по п. 12, в котором один или более процессоров дополнительно выполнены с возможностью кодировать данные потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.19. The apparatus of claim 12, wherein the one or more processors are further configured to encode data of a bitstream representing the first weight and the second weight. 20. Устройство по п. 19, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.20. The apparatus of claim 19, wherein the bitstream data comprises at least one of a sequence parameter set, a picture parameter set, an adaptation parameter set, a video parameter set, a picture header, a slice header, a tile header, or a block header. 21. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью декодировать текущий блок цветности и, чтобы декодировать текущий блок цветности, один или более процессоров выполнены с возможностью:21. The apparatus of claim 12, wherein one or more processors are configured to decode the current chroma block and, to decode the current chroma block, the one or more processors are configured to: декодировать остаточный блок для текущего блока цветности; иdecode the residual block for the current chrominance block; And комбинировать выборки остаточного блока с выборками блока прогнозирования.combine samples from the residual block with samples from the prediction block. 22. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью кодировать текущий блок цветности и, чтобы кодировать текущий блок цветности, один или более процессоров выполнены с возможностью:22. The apparatus of claim 12, wherein one or more processors are configured to encode the current chroma block and, to encode the current chroma block, the one or more processors are configured to: вычитать выборки блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; иsubtract the prediction block samples from the current chrominance block samples to form a residual block; And кодировать остаточный блок.encode the remainder block. 23. Машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют процессору:23. A computer-readable storage medium having stored instructions that, when executed, instruct a processor to: формировать блок взаимного прогнозирования для текущего блока цветности видеоданных;generate a mutual prediction block for the current color block of video data; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных;generate an internal prediction block for the current color block of video data; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;determine the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block, which are encoded with intra prediction; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;determine the first weight coefficient and the second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования;apply a first weight to the inter-prediction block and a second weight to the intra-prediction block; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; иcombine the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; And кодировать текущий блок цветности с использованием блока прогнозирования.encode the current chrominance block using a prediction block. 24. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять число соседних блоков, которые кодированы с внутренним прогнозированием, содержат инструкции, которые инструктируют процессору определять, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.24. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to determine the number of neighboring blocks that are intra-prediction encoded comprise instructions that instruct the processor to determine that the number of neighboring blocks that are intra-prediction encoded excludes the neighboring ones. blocks that are predicted using intra-block copying or combined intra-cross prediction. 25. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять число соседних блоков, которые кодированы с внутренним прогнозированием, содержат инструкции, которые инструктируют процессору определять, что число соседних блоков, которые внутренне прогнозируются, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.25. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to determine the number of neighboring blocks that are intra-predicted encoded comprise instructions that instruct the processor to determine that the number of neighboring blocks that are internally predicted excludes the neighboring blocks, which are predicted using combined inter-intraforecasting. 26. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент дополнительно, содержат инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.26. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to determine the first weight and the second weight further comprise instructions that instruct the processor to determine the first weight and the second weight according to a luminance block of one of the adjacent blocks, when one of the adjacent blocks has a single luma-chroma tree or a dual luma-chroma tree activated. 27. Машиночитаемый носитель хранения данных по п. 23, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.27. The computer-readable storage medium of claim 23, wherein the adjacent blocks include an upper adjacent block and a left adjacent block. 28. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент, содержат инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.28. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to determine the first weight and the second weight comprise instructions that instruct the processor to determine the first weight and the second weight according to whether the indexed merge block is predicted with using unidirectional forecasting or bidirectional forecasting. 29. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент, содержат инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент согласно размеру текущего блока цветности.29. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to determine the first weight and the second weight comprise instructions that instruct the processor to determine the first weight and the second weight according to the size of the current chroma block. 30. Машиночитаемый носитель хранения данных по п. 23, дополнительно содержащий инструкции, которые инструктируют процессору кодировать данные потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.30. The computer-readable storage medium of claim 23, further comprising instructions that instruct the processor to encode data of a bitstream representing the first weight and the second weight. 31. Машиночитаемый носитель хранения данных по п. 30, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.31. The computer-readable storage medium of claim 30, wherein the bitstream data comprises at least one of a sequence parameter set, a picture parameter set, an adaptation parameter set, a video parameter set, a picture header, a slice header, a tile header, or a block header. 32. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору кодировать текущий блок цветности, содержат инструкции, которые инструктируют процессору декодировать текущий блок цветности, причем они содержат инструкции, которые инструктируют процессору:32. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to encode the current chrominance block comprise instructions that instruct the processor to decode the current chroma block, wherein the instructions comprise instructions that instruct the processor: декодировать остаточный блок для текущего блока цветности; иdecode the residual block for the current chrominance block; And комбинировать выборки остаточного блока с выборками блока прогнозирования.combine samples from the residual block with samples from the prediction block. 33. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору кодировать текущий блок цветности, содержат инструкции, которые инструктируют процессору кодировать текущий блок цветности, причем они содержат инструкции, которые инструктируют процессору:33. The computer-readable storage medium of claim 23, wherein the instructions that instruct the processor to encode the current chrominance block comprise instructions that instruct the processor to encode the current chroma block, wherein the instructions comprise instructions that instruct the processor: вычитать выборки блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; иsubtract the prediction block samples from the current chrominance block samples to form a residual block; And кодировать остаточный блок.encode the remainder block. 34. Устройство для кодирования видеоданных, при этом устройство содержит:34. A device for encoding video data, wherein the device contains: средство для формирования блока взаимного прогнозирования для текущего блока цветности видеоданных;means for generating a mutual prediction block for the current chrominance block of video data; средство для формирования блока внутреннего прогнозирования для текущего блока цветности видеоданных;means for generating an internal prediction block for the current chrominance block of video data; средство для определения числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;means for determining the number of neighboring blocks with respect to the luma block corresponding to the current chrominance block that are intra-prediction encoded; средство для определения первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;means for determining a first weight coefficient and a second weight coefficient according to the number of neighboring blocks that are intra prediction encoded; средство для применения первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования;means for applying a first weight to the inter-prediction block and a second weight to the intra-prediction block; средство для комбинирования первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; иmeans for combining the first weighted inter-prediction block and the second weighted intra-prediction block to generate a prediction block for the current chrominance block; And средство для кодирования текущего блока цветности с использованием блока прогнозирования.means for encoding the current chrominance block using a prediction block. 35. Устройство по п. 34, в котором средство для определения числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит средство для определения того, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.35. The apparatus of claim 34, wherein the means for determining the number of neighboring blocks that are intra-prediction encoded comprises means for determining that the number of neighboring blocks that are intra-prediction encoding excludes neighboring blocks that are predicted using intra-block copying. or combined intra-cross forecasting. 36. Устройство по п. 34, в котором средство для определения числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит средство для определения того, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.36. The apparatus of claim 34, wherein the means for determining the number of neighboring blocks that are intra prediction encoded comprises means for determining that the number of neighboring blocks that are intra prediction encoded excludes neighboring blocks that are predicted using a combined mutual -internal forecasting. 37. Устройство по п. 34, в котором средство для определения первого весового коэффициента и второго весового коэффициента дополнительно содержит средство для определения первого весового коэффициента и второго весового коэффициента согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.37. The apparatus of claim 34, wherein the means for determining the first weight coefficient and the second weight coefficient further comprises means for determining the first weight coefficient and the second weight coefficient according to a luminance block of one of the adjacent blocks when one of the adjacent blocks has a single coding tree activated luminance and chrominance or a dual luminance and chrominance coding tree. 38. Устройство по п. 34, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.38. The apparatus of claim 34, wherein the adjacent blocks include an upper adjacent block and a left adjacent block. 39. Устройство по п. 34, в котором средство для определения первого весового коэффициента и второго весового коэффициента содержит средство для определения первого весового коэффициента и второго весового коэффициента согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.39. The apparatus of claim 34, wherein the means for determining the first weight coefficient and the second weight coefficient comprises means for determining the first weight coefficient and the second weight coefficient according to whether the indexed combine block is predicted using unidirectional prediction or bidirectional prediction. 40. Устройство по п. 34, в котором средство для определения первого весового коэффициента и второго весового коэффициента содержит средство для определения первого весового коэффициента и второго весового коэффициента согласно размеру текущего блока цветности.40. The apparatus of claim 34, wherein the means for determining the first weight coefficient and the second weight coefficient comprises means for determining the first weight coefficient and the second weight coefficient according to the size of the current chroma block. 41. Устройство по п. 34, дополнительно содержащее средство для кодирования данных потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.41. The apparatus of claim 34, further comprising means for encoding data of a bit stream representing the first weight coefficient and the second weight coefficient. 42. Устройство по п. 41, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.42. The apparatus of claim 41, wherein the bitstream data comprises at least one of a sequence parameter set, a picture parameter set, an adaptation parameter set, a video parameter set, a picture header, a slice header, a tile header, or a block header. 43. Устройство по п. 34, в котором средство для кодирования текущего блока цветности содержит средство для декодирования текущего блока цветности, содержащее:43. The apparatus of claim 34, wherein the means for encoding the current chrominance block comprises means for decoding the current chroma block, comprising: средство для декодирования остаточного блока для текущего блока цветности; иmeans for decoding a residual block for the current chrominance block; And средство для комбинирования выборок остаточного блока с выборками блока прогнозирования.means for combining the residual block samples with the prediction block samples. 44. Устройство по п. 34, в котором средство для кодирования текущего блока цветности содержит средство для кодирования текущего блока цветности, содержащее:44. The apparatus of claim 34, wherein the means for encoding the current chroma block comprises means for encoding the current chrominance block comprising: средство для вычитания выборок блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; иmeans for subtracting samples of the prediction block from samples of the current chrominance block to form a residual block; And средство для кодирования остаточного блока. means for encoding the residual block.
RU2021123044A 2019-02-07 2020-02-05 Intra-inter prediction mode for video data RU2803896C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/802,515 2019-02-07
US16/781,751 2020-02-04

Publications (2)

Publication Number Publication Date
RU2021123044A RU2021123044A (en) 2023-03-07
RU2803896C2 true RU2803896C2 (en) 2023-09-21

Family

ID=

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8208557B2 (en) * 2007-07-31 2012-06-26 Samsung Electronics Co., Ltd. Video encoding and decoding method and apparatus using weighted prediction
KR20130029694A (en) * 2011-09-15 2013-03-25 주식회사 아이벡스피티홀딩스 Method for generating chroma prediction block in intra mode
WO2013155028A1 (en) * 2012-04-09 2013-10-17 Vid Scale, Inc. Weighted prediction parameter signaling for video coding
US9374578B1 (en) * 2013-05-23 2016-06-21 Google Inc. Video coding using combined inter and intra predictors
RU2604669C2 (en) * 2011-06-28 2016-12-10 Самсунг Электроникс Ко., Лтд. Method and apparatus for predicting chroma components of image using luma components of image
WO2017043816A1 (en) * 2015-09-10 2017-03-16 엘지전자(주) Joint inter-intra prediction mode-based image processing method and apparatus therefor
WO2019006105A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Improved intra prediction in video coding

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8208557B2 (en) * 2007-07-31 2012-06-26 Samsung Electronics Co., Ltd. Video encoding and decoding method and apparatus using weighted prediction
RU2604669C2 (en) * 2011-06-28 2016-12-10 Самсунг Электроникс Ко., Лтд. Method and apparatus for predicting chroma components of image using luma components of image
KR20130029694A (en) * 2011-09-15 2013-03-25 주식회사 아이벡스피티홀딩스 Method for generating chroma prediction block in intra mode
WO2013155028A1 (en) * 2012-04-09 2013-10-17 Vid Scale, Inc. Weighted prediction parameter signaling for video coding
US9374578B1 (en) * 2013-05-23 2016-06-21 Google Inc. Video coding using combined inter and intra predictors
WO2017043816A1 (en) * 2015-09-10 2017-03-16 엘지전자(주) Joint inter-intra prediction mode-based image processing method and apparatus therefor
WO2019006105A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Improved intra prediction in video coding

Similar Documents

Publication Publication Date Title
WO2018132710A1 (en) Coding video data using derived chroma mode
WO2021202881A1 (en) General constraint information syntax in video coding
US11290726B2 (en) Inter-intra prediction mode for video data
US20220377350A1 (en) Intra block copy prediction restrictions in video coding
EP4122197A1 (en) Independent subpicture signaling in video coding
US20220201322A1 (en) Multiple hypothesis prediction for video coding
US11991387B2 (en) Signaling number of subblock merge candidates in video coding
EP4085623A1 (en) Chroma transform skip and joint chroma coding enabled block in video coding
WO2020072928A1 (en) Intra block copy prediction restrictions in video coding
EP4186235A1 (en) Deblocking filter parameter signaling
WO2021055773A1 (en) Reference picture constraint for decoder side motion refinement and bi-directional optical flow
CA3197884A1 (en) Multiple hypothesis prediction for video coding
TW202232954A (en) Most probable modes for intra prediction for video coding
RU2803896C2 (en) Intra-inter prediction mode for video data
CA3141934A1 (en) Dc intra mode prediction in video coding
RU2817294C2 (en) Prediction in internal dc mode when encoding video
US20230336716A1 (en) Intra chroma mode list construction for video coding
US20230336713A1 (en) Methods for adaptive signaling of maximum number of merge candidates in multiple hypothesis prediction
WO2023200561A1 (en) Methods for adaptive signaling of maximum number of merge candidates in multiple hypothesis prediction
WO2023200560A1 (en) Intra chroma mode list construction for video coding
EP4315850A1 (en) Adaptively coding motion information for multiple hypothesis prediction for video coding
WO2024081546A1 (en) Coding video data using adaptive affine block prediction
WO2024015514A1 (en) Decoder side motion vector refinement for affine motion model
WO2024054507A1 (en) Intra prediction fusion with reduced complexity in video coding
WO2020219898A1 (en) Size constraint for triangular prediction unit mode