АФФИННОЕ ЛИНЕЙНОЕ ВЗВЕШЕННОЕ ВНУТРЕННЕЕ ПРОГНОЗИРОВАНИЕ ПРИ КОДИРОВАНИИ ВИДЕО Российский патент 2024 года по МПК H04N19/11 H04N19/159 H04N19/176 

Описание патента на изобретение RU2816748C2

[0001] Данная заявка испрашивает приоритет заявки на патент (США) номер 16/867208, поданной 5 мая 2020 года, которая испрашивает приоритет предварительной заявки на патент (США) номер 62/845790, поданной 9 мая 2019 года, и предварительной заявки на патент (США) номер 62/864320, поданной 20 июня 2019 года, содержание каждой из которых полностью содержится в данном документе по ссылке.

Область техники, к которой относится изобретение

[0002] Данное раскрытие сущности относится к кодированию видео и декодированию видео.

Уровень техники

[0003] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства видеоконференц-связи, устройства потоковой передачи видео и т.п. Цифровые видеоустройства реализуют такие технологии кодирования видео, как технологии кодирования видео, описанные в стандартах, заданных посредством стандартов MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), ITU-T H.265/стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.

[0004] Технологии кодирования видео включают в себя пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, видеослайс (например, видеокадр или часть видеокадра) может сегментироваться на видеоблоки, которые также могут называться "единицами дерева кодирования (CTU)", "единицами кодирования (CU)" и/или "узлами кодирования". Видеоблоки во внутреннем (I-) слайсе кадра кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном кадре. Видеоблоки во взаимно кодированном (P- или B-) слайсе кадра могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном кадре или временное прогнозирование относительно опорных выборок в других опорных кадрах. Кадры могут называться "кадрами", и опорные кадры могут называться "опорными кадрами".

Сущность изобретения

[0005] В общем, это раскрытие сущности описывает технологии для внутреннего прогнозирования, включающие в себя извлечение и передачу в служебных сигналах режимов для линейного взвешенного внутреннего прогнозирования. Например, в одном примере, это раскрытие сущности описывает видеокодер, такой как видеокодер или видеодекодер, который выполняет процесс извлечения наиболее вероятных режимов (MPM), который извлекает один или более MPM для текущего блока, который не кодируется с использованием аффинного линейного взвешенного внутреннего прогнозирования (ALWIP). MPM для текущего блока могут представлять собой режимы внутреннего прогнозирования, определенные, с наибольшей вероятностью, для использования для кодирования текущего блока. В качестве части выполнения процесса MPM-извлечения, видеокодер определяет то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. На основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, видеокодер определяет то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Видеокодер кодирует текущий блок на основе одного из MPM для текущего блока.

[0006] В одном примере, это раскрытие сущности описывает способ кодирования видеоданных, при этом способ содержит: выполнение процесса извлечения наиболее вероятных режимов (MPM), который извлекает один или более MPM для текущего блока видеоданных, при этом текущий блок не кодируется с использованием аффинного линейного взвешенного внутреннего прогнозирования (ALWIP), и выполнение процесса MPM-извлечения содержит: определение того, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок; и на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок: определение того, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию; и включение режима внутреннего прогнозирования, соответствующего значению по умолчанию, в качестве одного из одного или более MPM; и кодирование текущего блока на основе одного из MPM для текущего блока.

[0007] В другом примере, это раскрытие сущности описывает устройство для кодирования видеоданных, причем устройство содержит: запоминающее устройство для того, чтобы сохранять видеоданные; и один или более процессоров, реализованных в схеме, причем один или более процессоров выполнены с возможностью: выполнять процесс извлечения наиболее вероятных режимов (MPM), который извлекает один или более MPM для текущего блока видеоданных, при этом текущий блок не кодируется с использованием аффинного линейного взвешенного внутреннего прогнозирования (ALWIP), и выполнение процесса MPM-извлечения содержит: определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок; и на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок: определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию; и включать режим внутреннего прогнозирования, соответствующий значениям по умолчанию, в качестве одного из одного или более MPM; и код текущий блок на основе одного из MPM для текущего блока.

[0008] В другом примере, это раскрытие сущности описывает устройство для кодирования видеоданных, причем устройство содержит: средство для выполнения процесса извлечения наиболее вероятных режимов (MPM), который извлекает один или более MPM для текущего блока видеоданных, при этом текущий блок не кодируется с использованием аффинного линейного взвешенного внутреннего прогнозирования (ALWIP), и средство для выполнения процесса MPM-извлечения содержит: средство для определения того, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок; и средство для определения, на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, того, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, и включения режима внутреннего прогнозирования, соответствующего значению по умолчанию, в качестве одного из одного или более MPM; и средство для кодирования текущего блока на основе одного из MPM для текущего блока.

[0009] В другом примере, это раскрытие сущности описывает считываемый компьютером носитель данных, хранящий инструкции, которые при выполнении инструктируют одному или более процессоров: выполнять процесс извлечения наиболее вероятных режимов (MPM), который извлекает один или более MPM для текущего блока видеоданных, при этом текущий блок не кодируется с использованием аффинного линейного взвешенного внутреннего прогнозирования (ALWIP), и выполнение процесса MPM-извлечения содержит: определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок; и на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок: определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию; и включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM; и код текущий блок на основе одного из MPM для текущего блока.

[0010] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания, чертежей и формулы изобретения.

Краткое описание чертежей

[0011] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может выполнять технологии этого раскрытия сущности.

[0012] Фиг. 2 является блок-схемой, иллюстрирующей пример внутреннего прогнозирования со стрелками, указывающими на опорные выборки.

[0013] Фиг. 3 является концептуальной схемой примера прямоугольного блока 8×4, в котором "более близкие" опорные выборки не используются, но более далекие опорные выборки могут использоваться вследствие ограничения направления внутреннего прогнозирования быть в диапазоне от -135 градусов до 45 градусов.

[0014] Фиг. 4 является концептуальной схемой, иллюстрирующей широкие углы (-1 в-10 и 67-76), проиллюстрированные в дополнение к 65 угловым режимам.

[0015] Фиг. 5A, 5B и 5C являются иллюстрациями процессов преобразования режима для режимов внутреннего прогнозирования за пределами диапазона диагональных направлений.

[0016] Фиг. 6 является концептуальной схемой, иллюстрирующей широкие углы (-1 в-14 и 67-80) в тестовой VVC-модели 3 (VTM3) за пределами режимов 2 и 66 всего для 93 угловых режимов.

[0017] Фиг. 7 является таблицей, предоставляющей спецификацию углов внутреннего прогнозирования.

[0018] Фиг. 8 является иллюстрацией опорных выборок из нескольких опорных линий, которые могут использоваться для внутреннего прогнозирования блока кодирования.

[0019] Фиг. 9 является концептуальной схемой, иллюстрирующей пример разделения блоков 4×8 и 8×4.

[0020] Фиг. 10 является концептуальной схемой, иллюстрирующей пример разделения всех блоков за исключением 4×8, 8×4 и 4×4.

[0021] Фиг. 11 является концептуальной схемой, иллюстрирующей пример процесса аффинного линейного взвешенного внутреннего прогнозирования (ALWIP) для блока 8×8.

[0022] Фиг. 12 является таблицей, иллюстрирующей число параметров матрицы и параметров смещения для каждого ALWIP-типа в стандарте универсального кодирования видео рабочий проект 4 (VVC WD4).

[0023] Фиг. 13 является концептуальной схемой, иллюстрирующей примерные соседние блоки, используемые для того, чтобы извлекать наиболее вероятные ALWIP-режимы (MPM) для текущего блока в соответствии с одной или более технологий этого раскрытия сущности.

[0024] Фиг. 14A и 14B являются концептуальными схемами, иллюстрирующими примерную структуру в виде дерева квадрантов и двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).

[0025] Фиг. 15 является блок-схемой, иллюстрирующей примерный видеокодер, который может выполнять технологии этого раскрытия сущности.

[0026] Фиг. 16 является блок-схемой, иллюстрирующей примерный видеодекодер, который может выполнять технологии этого раскрытия сущности.

[0027] Фиг. 17 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока.

[0028] Фиг. 18 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных.

[0029] Фиг. 19 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования видеоданных в соответствии с одной или более технологий этого раскрытия сущности.

[0030] Фиг. 20 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования блока сигналов цветности в соответствии с одной или более технологий этого раскрытия сущности.

Подробное описание изобретения

[0031] Аффинное линейное взвешенное внутреннее прогнозирование (ALWIP) представляет собой форму внутреннего прогнозирования, в которой блок прогнозирования формируется посредством понижающей дискретизации опорных выборок блока, умножения вектора понижающе дискретизированных опорных выборок на матрицу и суммирования вектора суммирования вектора сдвига, преобразования результирующих выборочных значений в предварительно определенные позиции в блоке прогнозирования и выполнения линейной интерполяции для выборочных значений в блоке прогнозирования, чтобы определять выборочные значения для оставшихся позиций в блоке прогнозирования. Использование ALWIP может приводить к лучшим эффективностям кодирования для некоторых типов блоков, но технологии регулярного внутреннего прогнозирования могут приводить к лучшим эффективностям кодирования, чем ALWIP, для других типов блоков. Таким образом, некоторые блоки в кадре могут кодироваться с использованием ALWIP, и некоторые блоки в кадре могут кодироваться с использованием технологий регулярного внутреннего прогнозирования, таких как режим планарного внутреннего прогнозирования, режим внутреннего DC-прогнозирования или режим направленного внутреннего прогнозирования. Хотя вышеприведенный пример описывает несколько этапов для ALWIP, некоторые реализации могут выбирать исключать один или более вышеуказанных этапов, и другие реализации могут включать другие этапы в процесс извлечения. Тем не менее, базовая идея в ALWIP заключается в умножении вектора выборок, извлекаемых из опорных выборок, на матрицу (или в эквивалентной операции).

[0032] Чтобы повышать эффективность передачи служебных сигналов режима внутреннего прогнозирования (например, режима планарного, DC- или направленного внутреннего прогнозирования), видеокодер (например, видеокодер или видеодекодер) может выполнять процесс извлечения наиболее вероятных режимов (MPM), который извлекает один или более MPM для текущего блока видеоданных. Каждый из MPM может представлять собой режим внутреннего прогнозирования. Если оптимальный режим внутреннего прогнозирования для текущего блока представляет собой один из MPM, индекс, указывающий один из MPM, может передаваться в служебных сигналах в потоке битов. Если оптимальный режим внутреннего прогнозирования для текущего блока не представляет собой один из MPM, индекс, указывающий один из не-MPM-режимов внутреннего прогнозирования, может передаваться в служебных сигналах. Поскольку имеется меньше MPM, чем не-MPM-режимов внутреннего прогнозирования, индекс, указывающий MPM, может кодироваться с использованием значительно меньшего числа битов, чем индекс, указывающий один из не-MPM-режимов внутреннего прогнозирования. Таким образом, использование процесса MPM-извлечения может увеличивать эффективность кодирования для некоторых блоков.

[0033] Видеокодер может извлекать MPM на основе режимов внутреннего прогнозирования блоков, которые граничат с текущим блоком. Например, если левый соседний блок кодируется с использованием режима внутреннего DC-прогнозирования, видеокодер может определять то, что один из MPM представляет собой режим внутреннего DC-прогнозирования. Тем не менее, в процессе MPM-извлечения, если один из соседних блоков кодируется с использованием ALWIP, видеокодер выполняет процесс, который использует данные преобразования, которые преобразуют ALWIP-параметры соседнего блока в один из режимов направленного внутреннего прогнозирования. ALWIP-параметры включают в себя коэффициенты матрицы и вектор сдвига. Видеокодер затем может использовать определенный режим направленного внутреннего прогнозирования в качестве одного из MPM.

[0034] Сохранение данных преобразования увеличивает требования по хранению данных видеокодеров и видеодекодеров. Увеличенные требования по хранению данных могут увеличивать затраты и сложность видеокодеров и видеодекодеров. Кроме того, операции поиска, которые выполняются для того, чтобы использовать данные преобразования, требуют времени, что может замедлять процессы кодирования и декодирования. Дополнительно, блок прогнозирования, сформированный с использованием режима внутреннего прогнозирования, определенного с использованием данных преобразования, представляет собой только аппроксимацию блока прогнозирования, который должен формироваться, если использованы ALWIP-параметры соседнего блока. Эта аппроксимация может снижать эффективность кодирования.

[0035] Технологии этого раскрытия сущности могут разрешать одну или более таких проблем. Например, как описано в примере этого раскрытия сущности, видеокодер (например, видеокодер или видеодекодер) может выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока видеоданных. В этом примере, текущий блок не кодируется с использованием ALWIP. В качестве части выполнения процесса MPM-извлечения, видеокодер может определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. На основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, видеокодер может определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Соответственно, видеокодер может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из MPM. Видеокодер может кодировать текущий блок на основе одного из MPM для текущего блока.

[0036] Посредством использования режима внутреннего прогнозирования, соответствующего значению по умолчанию, в качестве одного из MPM, когда соседний блок ALWIP-кодируется, видеокодер может исключать необходимость сохранять данные преобразования. Исключение необходимости сохранять данные преобразования может уменьшать требования по хранению данных видеокодера, что позволяет сокращать затраты и сложность видеокодера. Кроме того, исключение использования данных преобразования может ускорять процессы кодирования и декодирования посредством исключения операций поиска, предусмотренных при использовании данных преобразования.

[0037] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 100 кодирования и декодирования видео, которая может выполнять технологии этого раскрытия сущности. Технологии этого раскрытия сущности, в общем, направлены на кодирование (кодирование и/или декодирование) видеоданных. В общем, видеоданные включают в себя любые данные для обработки видео. Таким образом, видеоданные могут включать в себя необработанное некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как служебные данные.

[0038] Как показано на фиг. 1, система 100 включает в себя исходное устройство 102, которое предоставляет кодированные видеоданные, которые должны декодироваться и отображаться посредством целевого устройства 116, в этом примере. В частности, исходное устройство 102 предоставляет видеоданные в целевое устройство 116 через считываемый компьютером носитель 110. Исходное устройство 102 и целевое устройство 116 могут включать в себя любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, мобильные устройства, такие как телефонные трубки (к примеру, смартфоны) и планшетные компьютеры, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео и т.п. В некоторых случаях, исходное устройство 102 и целевое устройство 116 могут оснащаться возможностями беспроводной связи и в силу этого могут называться "устройствами беспроводной связи".

[0039] В примере по фиг. 1, исходное устройство 102 включает в себя видеоисточник 104, запоминающее устройство 106, видеокодер 200 и интерфейс 108 вывода. Целевое устройство 116 включает в себя интерфейс 122 ввода, видеодекодер 300, запоминающее устройство 120 и устройство 118 отображения. В соответствии с этим раскрытием сущности, видеокодер 200 исходного устройства 102 и видеодекодер 300 целевого устройства 116 могут быть выполнены с возможностью применять технологии для выполнения внутреннего прогнозирования, включающие в себя извлечение и передачу в служебных сигналах режимов для линейного взвешенного внутреннего прогнозирования. Таким образом, исходное устройство 102 представляет пример устройства кодирования видео, в то время как целевое устройство 116 представляет пример устройства декодирования видео. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 102 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 116 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.

[0040] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для выполнения внутреннего прогнозирования, включающие в себя извлечение и передачу в служебных сигналах режимов для линейного взвешенного внутреннего прогнозирования. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие сущности обозначает устройство "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, исходное устройство 102 и целевое устройство 116 могут работать практически симметрично таким образом, что каждое из исходного устройства 102 и целевого устройства 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между исходным устройством 102 и целевым устройством 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.

[0041] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию кадров (также называемых "кадрами") видеоданных в видеокодер 200, который кодирует данные для кадров. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и генерируемого компьютером видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или генерируемые компьютером видеоданные. Видеокодер 200 может перекомпоновывать кадры из порядка приема (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на считываемый компьютером носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.

[0042] Запоминающее устройство 106 исходного устройства 102 и запоминающее устройство 120 целевого устройства 116 представляют запоминающие устройства общего назначения. В некотором примере, запоминающие устройства 106, 120 могут сохранять необработанные видеоданные, например, необработанное видео из видеоисточника 104 и необработанные декодированные видеоданные из видеодекодера 300. Дополнительно или альтернативно, запоминающие устройства 106, 120 могут сохранять программные инструкции, выполняемые, например, посредством видеокодера 200 и видеодекодера 300, соответственно. Хотя запоминающее устройство 106 и запоминающее устройство 120 показаны отдельно от видеокодера 200 и видеодекодера 300 в этом примере, следует понимать, что видеокодер 200 и видеодекодер 300 также могут включать в себя внутренние запоминающие устройства для функционально аналогичных или эквивалентных целей. Кроме того, запоминающие устройства 106, 120 могут сохранять кодированные видеоданные, например, выводимые из видеокодера 200 и вводимые в видеодекодер 300. В некоторых примерах, части запоминающих устройств 106, 120 могут выделяться в качестве одного или более видеобуферов, например, чтобы сохранять необработанные, декодированные и/или кодированные видеоданные.

[0043] Считываемый компьютером носитель 110 может представлять любой тип носителя или устройства, допускающего транспортировку кодированных видеоданных из исходного устройства 102 в целевое устройство 116. В одном примере, считываемый компьютером носитель 110 представляет среду связи, чтобы обеспечивать возможность исходному устройству 102 передавать кодированные видеоданные непосредственно в целевое устройство 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Интерфейс 108 вывода может модулировать передаваемый сигнал, включающий в себя кодированные видеоданные, и интерфейс 122 ввода может демодулировать принимаемый сигнал передачи, согласно стандарту связи, такому как протокол беспроводной связи. Среда связи может включать в себя любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр либо одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 102 в целевое устройство 116.

[0044] В некоторых примерах, считываемый компьютером носитель 110 может включать в себя устройство 112 хранения данных. Исходное устройство 102 может выводить кодированные данные из интерфейса 108 вывода в устройство 112 хранения данных. Аналогично, целевое устройство 116 может осуществлять доступ к кодированным данным из устройства 112 хранения данных через интерфейс 122 ввода. Устройство 112 хранения данных может включать в себя любые из множества распределенных или локально доступных носителей данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители данных для сохранения кодированных видеоданных.

[0045] В некоторых примерах, считываемый компьютером носитель 110 может включать в себя файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированные видеоданные, сформированные посредством исходного устройства 102. Исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или в другое промежуточное устройство хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.

[0046] Интерфейс 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 ввода.

[0047] Технологии этого раскрытия сущности могут применяться к кодированию видео в поддержку любых из множества мультимедийных вариантов применения, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель данных, декодирование цифрового видео, сохраненного на носителе данных, или другие варианты применения.

[0048] Интерфейс 122 ввода целевого устройства 116 принимает кодированный поток битов видео из считываемого компьютером носителя 110 (например, среды связи, устройства 112 хранения данных, файлового сервера 114 и т.п.). Кодированный поток битов видео может включать в себя служебную информацию, заданную посредством видеокодера 200, которая также используется посредством видеодекодера 300, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку видеоблоков либо других кодированных единиц (например, слайсов, кадров, групп кадров, последовательностей и т.п.). Устройство 118 отображения отображает декодированные кадры декодированных видеоданных пользователю. Устройство 118 отображения может представлять любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.

[0049] Хотя не показано на фиг. 1, в некоторых примерах, видеокодер 200 и видеодекодер 300 могут быть интегрированы с аудиокодером и/или аудиодекодером и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать мультимедийные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).

[0050] Видеокодер 200 и видеодекодер 300 могут реализовываться как любая из множества надлежащих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), как дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо как любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом считываемом компьютером носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 200 и видеодекодера 300 может быть включен в один или более кодеров, или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 200 и/или видеодекодер 300, может включать в себя интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.

[0051] Видеокодер 200 и видеодекодер 300 могут работать согласно стандарту кодирования видео, такому как ITU-T H.265, также называемому "стандартом высокоэффективного кодирования видео (HEVC)", либо его расширениям, таким как расширения кодирования многовидового видео и/или масштабируемого кодирования видео. Альтернативно, видеокодер 200 и видеодекодер 300 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт объединенной исследовательской группы тестовой модели (JEM) или ITU-T H.266, также называемый "универсальным кодированием видео (VVC)". Проект VVC-стандарта описывается в работе авторов Bross и др. "Versatile Video Coding (Draft 4)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13-ая конференция: Марракеш, MA, 9-18 января 2019 года, JVET-M1001 (далее "VVC WD4"). Проект VVC-стандарта описывается в работе авторов Bross и др. "Versatile Video Coding (Draft 5)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14 конференция: Женева, CH, 19-27 марта 2019 года, JVET-N1001-v5 (далее "VVC-проект 5"). Главная цель VVC состоит в том, чтобы предоставлять существенное повышение производительности сжатия по сравнению с существующим HEVC-стандарт, что способствует развертыванию более высококачественных услуг передачи видео и новых вариантов применения, таких как всенаправленное иммерсивное мультимедиа на 360° и видео с расширенным динамическим диапазоном (HDR). Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования.

[0052] В общем, видеокодер 200 и видеодекодер 300 могут выполнять кодирование кадров на основе блоков. Термин "блок", в общем, означает структуру, включающую в себя данные, которые должны обрабатываться (например, кодироваться, декодироваться или иным образом использоваться в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, видеокодер 200 и видеодекодер 300 могут кодировать видеоданные, представленные в YUV- (например, Y, Cb, Cr) формате. Таким образом, вместо кодирования данных красного цвета, зеленого цвета и синего цвета (RGB) для выборок кадра, видеокодер 200 и видеодекодер 300 могут кодировать компоненты яркости и цветности, при этом компоненты цветности могут включать в себя компоненты цветности оттенков красного цвета и оттенков синего цвета. В некоторых примерах, видеокодер 200 преобразует принимаемые RGB-отформатированные данные в YUV-представление до кодирования, и видеодекодер 300 преобразует YUV-представление в RGB-формат. Альтернативно, модули предварительной и постобработки (не показаны) могут выполнять эти преобразования.

[0053] Это раскрытие сущности, в общем, может означать кодирование (например, кодирование и декодирование) кадров, которое включает в себя процесс кодирования или декодирования данных кадра. Аналогично, это раскрытие сущности может означать кодирование блоков кадра, которое включает в себя процесс кодирования или декодирования данных для блоков, например, прогнозное кодирование и/или остаточное кодирование. Кодированный поток битов видео, в общем, включает в себя последовательность значений для синтаксических элементов, представляющих решения по кодированию (например, режимы кодирования) и сегментацию кадров на блоки. Таким образом, ссылки на кодирование кадра или блока, в общем, должны пониматься как кодирование значений для синтаксических элементов, формирующих кадр или блок.

[0054] HEVC задает различные блоки, включающие в себя единицы кодирования (CU), единицы прогнозирования (PU) и единицы преобразования (TU). Согласно HEVC, видеокодер (такой как видеокодер 200) сегментирует единицу дерева кодирования (CTU) на CU согласно структуре в виде дерева квадрантов. Таким образом, видеокодер сегментирует CTU и CU на четыре равных неперекрывающихся квадрата, и каждый узел дерева квадрантов имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут называться "узлами-листьями", и CU таких узлов-листьев могут включать в себя одну или более PU и/или одну или более TU. Видеокодер дополнительно может сегментировать PU и TU. Например, в HEVC, остаточное дерево квадрантов (RQT) представляет сегментацию TU. В HEVC, PU представляют данные взаимного прогнозирования, в то время как TU представляют остаточные данные. CU, которые внутренне прогнозируются, включают в себя информацию внутреннего прогнозирования, такую как индикатор внутреннего режима.

[0055] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (такой как видеокодер 200) сегментирует кадр на множество CTU. Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, такие как разделение между CU, PU и TU HEVC. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на основе дерева квадрантов, и второй уровень, сегментированный согласно сегментации на основе двоичного дерева. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).

[0056] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT). Сегмент троичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного дерева разделяет блок на три субблока без разделения исходного блока по центру. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.

[0057] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут использовать одну QTBT- или MTT-структуру для того, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, видеокодер 200 и видеодекодер 300 могут использовать две или более QTBT- или MTT-структур, к примеру, одну QTBT/MTT-структуру для компонента яркости и другую QTBT/MTT-структуру для обоих компонентов цветности (либо две QTBT/MTT-структуры для соответствующих компонентов цветности).

[0058] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать сегментацию на основе дерева квадрантов, QTBT-сегментацию, MTT-сегментацию либо другие структуры сегментации. Для целей пояснения, описание технологий этого раскрытия сущности представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия сущности также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на основе дерева квадрантов или другие типы сегментации.

[0059] Это раскрытие сущности может использовать "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.

[0060] Видеокодер 200 кодирует видеоданные для CU, представляющих информацию прогнозирования и/или остаточную информацию и другую информацию. Информация прогнозирования указывает то, как CU должна прогнозироваться, чтобы формировать блок прогнозирования для CU. Остаточная информация, в общем, представляет последовательные выборочные разности между выборками CU до кодирования и прогнозным блоком.

[0061] Чтобы прогнозировать CU, видеокодер 200, в общем, может формировать прогнозный блок для CU через взаимное прогнозирование или внутреннее прогнозирование. Взаимное прогнозирование, в общем, означает прогнозирование CU из данных одного или более ранее кодированных кадров, тогда как внутреннее прогнозирование, в общем, означает прогнозирование CU из ранее кодированных данных идентичного кадра. Чтобы выполнять взаимное прогнозирование, видеокодер 200 может формировать прогнозный блок с использованием одного или более векторов движения. Видеокодер 200, в общем, может выполнять поиск движения для того, чтобы идентифицировать опорный блок, который тесно совпадает с CU, например, с точки зрения разностей между CU и опорным блоком. Видеокодер 200 может вычислять разностный показатель с использованием суммы абсолютных разностей (SAD), суммы квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратических разностей (MSD) или других таких вычислений разности, чтобы определять то, совпадает или нет опорный блок тесно с текущей CU. В некоторых примерах, видеокодер 200 может прогнозировать текущую CU с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.

[0062] Некоторые примеры JEM и VVC также предоставляют аффинный режим компенсации движения, который может считаться режимом взаимного прогнозирования. В аффинном режиме компенсации движения, видеокодер 200 может определять два или более векторов движения, которые представляют непоступательное движение в пространстве, такое как увеличение или уменьшение масштаба, вращение, перспективное движение или другие типы нерегулярного движения.

[0063] Чтобы выполнять внутреннее прогнозирование, видеокодер 200 может выбирать режим внутреннего прогнозирования для того, чтобы формировать прогнозный блок. Некоторые примеры JEM и VVC предоставляют шестьдесят семь режимов внутреннего прогнозирования, включающих в себя различные направленные режимы, а также планарный режим и DC-режим. В общем, видеокодер 200 выбирает режим внутреннего прогнозирования, который описывает соседние выборки относительно текущего блока (например, блока CU), из которых можно прогнозировать выборки текущего блока. Такие выборки, в общем, могут находиться выше, выше и слева или слева от текущего блока в идентичном кадре с текущим блоком, при условии, что видеокодер 200 кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).

[0064] В общем, видеокодер, такой как видеокодер 200 или видеодекодер 300, может формировать блок прогнозирования с использованием планарного режима в качестве градиента, оцененного из соседних выборок. Например, в VVC WD4, видеокодер может формировать блок прогнозирования с использованием режима планарного внутреннего прогнозирования следующим образом.

8.3.4.2.5. Спецификация режима INTRA_PLANAR внутреннего прогнозирования

Вводы в этот процесс представляют собой следующее:

- переменная nTbW, указывающая ширину блока преобразования,

- переменная nTbH, указывающая высоту блока преобразования,

- соседние выборки p[x][y], с x=-1, y=-1...nTbH и x=0...nTbW, y=-1.

Выводы этого процесса представляют собой прогнозированные выборки predSamples[x][y], с x=0...nTbW-1, y=0...nTbH-1.

Переменные nW и nH извлекаются следующим образом:

nW=Max(nTbW, 2) (8-115)

nH=Max(nTbH, 2) (8-116)

Значения прогнозных выборок predSamples[x][y], с x=0...nTbW-1 и y=0...nTbH-1, извлекаются следующим образом:

predV[x][y]=((nH-1-y)*p[x][-1]+(y+1)*p[-1][nTbH])<<Log2 (nW) 8-117)

predH[x][y]=((nW-1-x)*p[-1][y]+(x+1)*p[nTbW][-1])<<Log2 (nH) (8-118)

predSamples[x][y]=(predV[x][y]+predH[x][y]+nW*nH)>>(Log2(nW)+Log2(nH)+1) (8-119)

[0065] Видеокодер 200 кодирует данные, представляющие режим прогнозирования для текущего блока. Например, для режимов взаимного прогнозирования, видеокодер 200 может кодировать данные, представляющие то, какой из различных доступных режимов взаимного прогнозирования используется, а также информацию движения для соответствующего режима. Для однонаправленного или двунаправленного взаимного прогнозирования, например, видеокодер 200 может кодировать векторы движения с использованием усовершенствованного прогнозирования векторов движения (AMVP) или режима объединения. Видеокодер 200 может использовать аналогичные режимы для того, чтобы кодировать векторы движения для аффинного режима компенсации движения.

[0066] После прогнозирования, такого как внутреннее прогнозирование или взаимное прогнозирование блока, видеокодер 200 может вычислять остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют последовательные выборочные разности между блоком и блоком прогнозирования для блока, сформированные с использованием соответствующего режима прогнозирования. Видеокодер 200 может применять одно или более преобразований к остаточному блоку для того, чтобы формировать преобразованные данные в области преобразования вместо выборочной области. Например, видеокодер 200 может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным видеоданным. Дополнительно, видеокодер 200 может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неразделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Видеокодер 200 формирует коэффициенты преобразования через применение одного или более преобразований.

[0067] Как отмечено выше, после преобразований для того, чтобы формировать коэффициенты преобразования, видеокодер 200 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты преобразования, обеспечивая дополнительное сжатие. Посредством выполнения процесса квантования, видеокодер 200 может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, видеокодер 200 может округлять n-битовое значение в меньшую сторону до m-битового значения во время квантования, где n больше m. В некоторых примерах, для того чтобы выполнять квантование, видеокодер 200 может выполнять побитовый сдвиг вправо значения, которое должно квантоваться.

[0068] После квантования, видеокодер 200 может сканировать коэффициенты преобразования, формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может проектироваться с возможностью размещать коэффициенты преобразования с более высокой энергией (и в силу этого с более низкой частотой) в начале вектора и размещать коэффициенты преобразования с более низкой энергией (и в силу этого с более высокой частотой) в конце вектора. В некоторых примерах, видеокодер 200 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, с тем чтобы формировать преобразованный в последовательную форму вектор, и затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, видеокодер 200 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для того, чтобы формировать одномерный вектор, видеокодер 200 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному двоичному арифметическому кодированию (CABAC). Видеокодер 200 также может энтропийно кодировать другие синтаксические элементы, описывающие метаданные, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 300 при декодировании видеоданных. Чтобы выполнять CABAC, видеокодер 200 может назначать контекст в контекстной модели символу, который должен передаваться.

[0069] Как упомянуто выше, видеокодер 200 и видеодекодер 300 могут применять CABAC-кодирование и декодирование к значениям синтаксических элементов. Чтобы применять CABAC-кодирование к синтаксическому элементу, видеокодер 200 может осуществлять бинаризацию значения синтаксического элемента, чтобы формировать последовательность одного или более битов, которые упоминаются как "бины". Помимо этого, видеокодер 200 может идентифицировать контекст кодирования, который может упоминаться просто как "контекст". Контекст кодирования может идентифицировать вероятности бинов, имеющих конкретные значения. Например, контекст кодирования может указывать вероятность в 0,7 кодирования бина со значением 0 и вероятность в 0,3 кодирования бина со значением 1. После идентификации контекста кодирования видеокодер 200 может разделять интервал на нижний подынтервал и верхний подынтервал. Один из подынтервалов может быть ассоциирован со значением 0, и другой подынтервал может быть ассоциирован со значением 1. Ширины подынтервалов могут быть пропорциональными вероятностям, указываемым для ассоциированных значений посредством идентифицированного контекста кодирования. Если бин синтаксического элемента имеет значение, ассоциированное с нижним подынтервалом, кодированное значение может быть равным нижней границе нижнего подынтервала. Если аналогичный бин синтаксического элемента имеет значение, ассоциированное с верхним подынтервалом, кодированное значение может быть равным нижней границе верхнего подынтервала. Чтобы кодировать следующий бин синтаксического элемента, видеокодер 200 может повторять эти этапы, причем интервал представляет собой подынтервал, ассоциированный со значением кодированного бита. Когда видеокодер 200 повторяет эти этапы для следующего бина, видеокодер 200 может использовать модифицированные вероятности на основе вероятностей, указываемых посредством идентифицированного контекста кодирования и фактических значений кодируемых бинов.

[0070] Когда видеодекодер 300 выполняет CABAC-декодирование для значения синтаксического элемента, видеодекодер 300 может идентифицировать контекст кодирования. Видеодекодер 300 затем может разделять интервал на нижний подынтервал и верхний подынтервал. Один из подынтервалов может быть ассоциирован со значением 0, и другой подынтервал может быть ассоциирован со значением 1. Ширины подынтервалов могут быть пропорциональными вероятностям, указываемым для ассоциированных значений посредством идентифицированного контекста кодирования. Если кодированное значение находится в нижнем подынтервале, видеодекодер 300 может декодировать бин, имеющий значение, ассоциированное с нижним подынтервалом. Если кодированное значение находится в верхнем подынтервале, видеодекодер 300 может декодировать бин, имеющий значение, ассоциированное с верхним подынтервалом. Чтобы декодировать следующий бин синтаксического элемента, видеодекодер 300 может повторять эти этапы, причем интервал представляет собой подынтервал, который содержит кодированное значение. Когда видеодекодер 300 повторяет эти этапы для следующего бина, видеодекодер 300 может использовать модифицированные вероятности на основе вероятностей, указываемых посредством идентифицированного контекста кодирования и декодированных бинов. Видеодекодер 300 затем может осуществлять дебинаризацию бинов, чтобы восстанавливать значение синтаксического элемента.

[0071] В некоторых случаях, видеокодер 200 может кодировать бины с использованием обходного CABAC-кодирования. Может быть вычислительно менее дорогим выполнять обходное CABAC-кодирование для бина, чем выполнять регулярное CABAC-кодирование для бина. Дополнительно, выполнение обходного CABAC-кодирования может обеспечивать более высокую степень параллелизации и пропускную способность. Бины, кодированные с использованием обходного CABAC-кодирования, могут упоминаться как "обходные бины ". Группирование обходных бинов может увеличивать пропускную способность видеокодера 200 и видеодекодера 300. Механизм обходного CABAC-кодирования может кодировать несколько бинов в одном цикле, тогда как регулярный механизм CABAC-кодирования может кодировать только один бин в цикле. Механизм обходного CABAC-кодирования может быть более простым, поскольку механизм обходного CABAC-кодирования не выбирает контексты и может допускать вероятность в 1/2 для обоих символов (0 и 1). Следовательно, при обходном CABAC-кодировании, интервалы разбиваются непосредственно напополам.

[0072] Видеокодер 200 дополнительно может формировать синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе кадров и синтаксические данные на основе последовательностей, 300, например, в заголовке кадра, заголовке блока, заголовке слайса, либо другие синтаксические данные, к примеру, набор параметров последовательности (SPS), набор параметров кадра (PPS) или набор параметров видео (VPS). Видеодекодер 300 аналогично может декодировать такие синтаксические данные для того, чтобы определять то, как декодировать соответствующие видеоданные.

[0073] Таким образом, видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные, например, синтаксические элементы, описывающие сегментацию кадра на блоки (например, CU), и информацию прогнозирования и/или остаточную информацию для блоков. В конечном счете, видеодекодер 300 может принимать поток битов и декодировать кодированные видеоданные.

[0074] В общем, видеодекодер 300 выполняет взаимообратный процесс относительно процесса, выполняемого посредством видеокодера 200, чтобы декодировать кодированные видеоданные потока битов. Например, видеодекодер 300 может декодировать значения для синтаксических элементов потока битов с использованием CABAC способом, практически аналогичным, хотя и взаимообратным, относительно процесса CABAC-кодирования видеокодера 200. Синтаксические элементы могут задавать информацию сегментацию для сегментации кадра на CTU и сегментации каждой CTU согласно соответствующей структуре сегментации, такой как QTBT-структура, чтобы задавать CU CTU. Синтаксические элементы дополнительно могут задавать информацию прогнозирования и остаточную информацию для блоков (например, CU) видеоданных.

[0075] Остаточная информация может представляться, например, посредством квантованных коэффициентов преобразования. Видеодекодер 300 может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для того, чтобы воспроизводить остаточный блок для блока. Видеодекодер 300 использует передаваемый в служебных сигналах режим прогнозирования (внутреннее или взаимное прогнозирование) и связанную информацию прогнозирования (например, информацию движения для взаимного прогнозирования) для того, чтобы формировать прогнозный блок для блока. Видеодекодер 300 затем может комбинировать блок прогнозирования и остаточный блок (на основе каждой выборки), чтобы воспроизводить исходный блок. Видеодекодер 300 может выполнять дополнительную обработку, такую как выполнение процесса удаления блочности, чтобы уменьшать визуальные артефакты вдоль границ блока.

[0076] Внутреннее прогнозирование заключает в себе режим DC-прогнозирования, режим планарного прогнозирования и направленные (или угловые) режимы прогнозирования. Направленное прогнозирование для квадратных блоков использует направления от -135 градусов до 45 градусов текущего блока в тестовой VVC-модели 2 (VTM2) (работа авторов J. Chen, Y. Ye, S. Kim "Algorithm description for Versatile Video Coding and Test Model 2 (VTM2)", 11-ая JVET-конференция, Любляна, SI, июль 2018 года, JVET-K1002), как проиллюстрировано на фиг. 2. Фиг. 2 является блок-схемой, иллюстрирующей пример внутреннего прогнозирования со стрелками, указывающими на опорные выборки.

[0077] В VTM2, блочная структура, используемая для указания блока прогнозирования для внутреннего прогнозирования, не ограничивается квадратом (ширина w=высота h). Прямоугольные или неквадратные блоки прогнозирования (w>h или w<h) могут увеличивать эффективность кодирования на основе характеристик контента.

[0078] В таких прямоугольных блоках, ограничение направления внутреннего прогнозирования рамками от -135 градусов до 45 градусов может приводить к ситуациям, когда более далекие опорные выборки используются, а не более близкие опорные выборки для внутреннего прогнозирования. Данное проектное решение с большой вероятностью имеет влияние на эффективность кодирования; более полезно иметь диапазон ограничений, ослабленных таким образом, что более близкие опорные выборки (за пределами угла от -135 до 45 градусов) могут использоваться для прогнозирования. Пример такого случая приводится на фиг. 3. Фиг. 3 является концептуальной схемой примера прямоугольного блока 8×4, в котором "более близкие" опорные выборки (верхний правый пунктирный круг 502) не используются, но более далекие опорные выборки (левый нижний пунктирный круг 504) могут использоваться вследствие ограничения направления внутреннего прогнозирования диапазоном от -135 градусов до 45 градусов. Фиг. 4 является иллюстрацией широких углов, которые приспосабливаются в VTM2.

[0079] Во время 12-ой JVET-конференции, модификация широкоугольного внутреннего прогнозирования приспособлена в VTM3 (см. работу авторов L. Zhao, X. Zhao, S. Liu, X. Li "CE3-related: Unification of angular intra prediction for square and non-square blocks",12-ая JVET-конференция, Макао SAR, CN, октябрь 2018 года, JVET-L0279; работу авторов J. Chen, Y. Ye, S. Kim "Algorithm description for Versatile Video Coding and Test Model 3 (VTM3)", 12-ая JVET-конференция, Макао SAR, CN, октябрь 2018 года, JVET-L1002; работу авторов B. Bross, J. Chen, S. Liu "Versatile Video Coding (Draft 3)", 12-ая JVET-конференция, Макао SAR, CN, октябрь 2018 год, JVET-L1001). Это приспособление включает в себя две модификации, чтобы унифицировать угловое внутреннее прогнозирование для квадратных и неквадратных блоков. Во-первых, направления углового прогнозирования модифицируются, чтобы покрывать диагональные направления всех форм блоков. Во-вторых, все угловые направления остаются в пределах диапазона между левым нижним диагональным направлением и правым верхним диагональным направлением для всех соотношений сторон блоков (квадратных и неквадратных), как проиллюстрировано на фиг. 5A-5C. Фиг. 5A, 5B и 5C являются иллюстрациями процессов преобразования режима для режимов внутреннего прогнозирования за пределами диапазона диагональных направлений. Фиг. 5A иллюстрирует квадратный блок, который не требует повторного преобразования угловых режимов. Фиг. 5B иллюстрирует повторное преобразование угловых режимов для горизонтального неквадратного блока. Фиг. 5C иллюстрирует повторное преобразование угловых режимов для вертикального неквадратного блока.

[0080] Помимо этого, число опорных выборок в верхней опорной строке и в левом опорном столбце ограничивается 2*ширина+1 и 2*высота+1 для всех форм блоков. Иллюстрация более широких углов, которые приспосабливаются в VTM3, предоставляется на фиг. 6. Фиг. 6 является концептуальной схемой, иллюстрирующей широкие углы (-1 - -14 и 67-80) в тестовой VVC-модели 3 (VTM3) за пределами режимов 2 и 66 всего для 93 угловых режимов. Хотя VTM3 задает 95 режимов, для любого размера блока разрешаются только 67 режимов. Точные режимы, которые разрешаются, зависят от отношения ширины блока в высоту. Это задается посредством ограничения диапазона режима для определенных размеров блоков.

[0081] Таблица 1, показанная на фиг. 7, указывает таблицу преобразования между режимом внутреннего прогнозирования (predModeIntra) и угловым параметром intraPredAngle в VTM3 (JVET-L1001). Угловые режимы, соответствующие диагоналям неквадратных блоков, обозначаются с помощью подчеркивания. Вертикальные и горизонтальные режимы обозначаются с помощью курсива. Диагональные режимы для квадратных блоков обозначаются с помощью подчеркивания и курсива. Диагональные режимы для блока имеют угол, равный углу для линии между левым нижним и правым верхним углами блока или левым верхним и правым нижним углами блока. В этом раскрытии сущности, угловые режимы с положительным значением intraPredAngle упоминаются как положительные угловые режимы (индекс режима<18 или>50), в то время как угловые режимы с отрицательным значением intraPredAngle упоминаются как отрицательные угловые режимы (индекс режима>18 и<50).

[0082] Обратный угловой параметр invAngle извлекается на основе intraPredAngle следующим образом:

invAngle=Round (2-1)

[0083] Следует отметить, что значения intraPredAngle, которые являются кратными числами 32 (0, 32, 64, 128, 256, 512) соответствуют прогнозированию из недробных опорных выборок массива, как и в случае в VTM3-спецификации.

[0084] Таблица 2, ниже, показывает диагональные режимы (т.е. режимы диагонального внутреннего прогнозирования) для блоков, имеющих различные соотношения сторон.

Таблица 2. Диагональные режимы, соответствующие различным соотношениям сторон блоков.

Соотношение сторон блока (ширина/высота) Диагональные режимы 1 (квадратное) 2, 34, 66 2 8, 28, 72 4 12, 24, 76 8 14, 22, 78 16 16, 20, 80 1/2 -6, 40, 60 1/4 -10, 44, 56 1/8 -12, 46, 54 1/16 -14, 48, 52

[0085] Выборки в окружении блока кодирования используются для внутреннего прогнозирования блока. Типично, линии восстановленных опорных выборок, которые являются ближайшими к левой и верхней границам блока кодирования, используются в качестве опорных выборок для внутреннего прогнозирования. Тем не менее, VVC WD4 также обеспечивает возможность другим выборкам в окружении блока кодирования использоваться в качестве опорных выборок. Фиг. 8 иллюстрирует линии опорных выборок, которые могут использоваться для внутреннего прогнозирования. В примере по фиг. 8, линии опорных выборок обозначаются с использованием множественного индекса опорной линии (MRLIdx). Для каждого блока кодирования, индекс передается в служебных сигналах, который указывает опорную линию, которая используется.

[0086] Значение передаваемого в служебных сигналах индекса может отличаться от MRLIdx, указываемого посредством передаваемого в служебных сигналах индекса. Например, в VVC WD4, только опорные линии с MRLIdx, равным 0, 1 и 3, могут использоваться. В VVC WD4, передаваемый в служебных сигналах индекс для опорной линии, используемой для кодирования блока (значения 0, 1 и 2 указывают линии с MRLIdx 0, 1 и 3, соответственно), кодируется с усеченным унарным кодовым словом. Планарные и DC-режимы не используются, когда MRLIdx>0. В более поздней версии VVC, может использоваться MRLIdx, равный 0, 1 и 2, и DC-режимы могут использоваться, когда MRLIdx>0.

[0087] Чтобы обеспечивать большую эффективность процесса передачи в служебных сигналах режимов внутреннего прогнозирования, видеокодер 200 и видеодекодер 300 могут идентифицировать один или более режимов внутреннего прогнозирования как "наиболее вероятные режимы (MPM)" для блока. Если режим внутреннего прогнозирования блока представляет собой один из MPM для блока, индекс для MPM передается в служебных сигналах. Если режим внутреннего прогнозирования блока не представляет собой один из представляет собой один из MPM для блока, индекс для одного из не-MPM-режимов внутреннего прогнозирования для блока может передаваться в служебных сигналах. Поскольку типично имеется гораздо меньше MPM для блока, чем не-MPM-режимов внутреннего прогнозирования, индекс для MPM может передаваться в служебных сигналах с использованием меньшего числа битов, чем индекс для не-MPM-режима внутреннего прогнозирования. Нижеприведенный текст из VVC WD4 в примере процесса для определения режима внутреннего прогнозирования, который определяет MPM для блока.

Вводы в этот процесс представляют собой следующее:

- местоположение (xCb, yCb) сигнала яркости, указывающее левую верхнюю выборку текущего блока кодирования сигналов яркости относительно левой верхней выборки сигнала яркости текущего кадра,

- переменная cbWidth, указывающая ширину текущего блока кодирования в выборках сигнала яркости,

- переменная cbHeight, указывающая высоту текущего блока кодирования в выборках сигнала яркости.

В этом процессе, режим IntraPredModeY[xCb][yCb] внутреннего прогнозирования сигналов яркости извлекается.

Таблица 8-1 указывает значение для режима внутреннего прогнозирования IntraPredModeY[xCb][yCb] и ассоциированных названий.

Таблица 8. Спецификация режима внутреннего прогнозирования и ассоциированных названий

Режим внутреннего прогнозирования Ассоциированное название 0 INTRA_PLANAR 1 INTRA_DC 2...66 INTRA_ANGULAR2...INTRA_ANGULAR66 81...83 INTRA_LT_CCLM, INTRA_L_CCLM, INTRA_T_CCLM

Примечание: Режимы INTRA_LT_CCLM, INTRA_L_CCLM и INTRA_T_CCLM внутреннего прогнозирования являются применимыми только к компонентам сигнала цветности.

IntraPredModeY[xCb][yCb] извлекается посредством следующих упорядоченных этапов:

Соседние местоположения (xNbA, yNbA) и (xNbB, yNbB) задаются равными (xCb-1, yCb+cbHeight-1) и (xCb+cbWidth-1, yCb-1), соответственно.

Для замены X посредством A или посредством B, переменные candIntraPredModeX извлекаются следующим образом:

- Процесс извлечения доступности для блока, как указано в разделе 6.4.X [Ed. (BB): Процесс проверки доступности соседних блоков, подлежит уточнению], активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xNbX, yNbX), в качестве вводов, и вывод назначается availableX.

- Возможный вариант candIntraPredModeX режима внутреннего прогнозирования извлекается следующим образом:

- Если одно или более следующих условий представляют собой "истина", candIntraPredModeX задается равным INTRA_PLANAR.

- Переменная availableX равна "ложь".

CuPredMode[xNbX][yNbX] не равно MODE_INTRA, и ciip_flag[xNbX][yNbX] не равен 1.

pcm_flag[xNbX][yNbX] равен 1.

X равен B, и yCb-1 меньше ((yCb>>CtbLog2SizeY)<<CtbLog2SizeY).

В противном случае, candIntraPredModeX задается равным IntraPredModeY[xNbX][yNbX].

Переменные ispDefaultMode1 и ispDefaultMode2 задаются следующим образом:

Если IntraSubPartitionsSplitType равен ISP_HOR_SPLIT, ispDefaultMode1 задается равным INTRA_ANGULAR18, и ispDefaultMode2 задается равным INTRA_ANGULAR5.

В противном случае, ispDefaultMode1 задается равным INTRA_ANGULAR50, и ispDefaultMode2 задается равным INTRA_ANGULAR63.

candModeList[x] с x=0...5 извлекается следующим образом:

- Если candIntraPredModeB равен candIntraPredModeA, и candIntraPredModeA превышает INTRA_DC, candModeList[x] с x=0...5 извлекается следующим образом:

Если IntraLumaRefLineIdx[xCb][yCb] равен 0, и IntraSubPartitionsSplitType равен ISP_NO_SPLIT, применимо следующее:

candModeList[0]=candIntraPredModeA (8-8)

candModeList[1]=INTRA_PLANAR (8-9)

candModeList[2]=INTRA_DC (8-10)

candModeList[3]=2+(candIntraPredModeA+60)%64) (8-11)

candModeList[4]=2+((candIntraPredModeA-1)%64) (8-12)

candModeList[5]=2+(candIntraPredModeA+60)%64) (8-13)

Иначе (IntraLumaRefLineIdx[xCb][yCb] не равен 0, или IntraSubPartitionsSplitType не равен ISP_NO_SPLIT), применимо следующее:

candModeList[0]=candIntraPredModeA (8-14)

candModeList[1]=2+(candIntraPredModeA+61)%64) (8-15)

candModeList[2]=2+((candIntraPredModeA-1)%64) (8-16)

Если одно из следующих условий представляет собой "истина":

IntraSubPartitionsSplitType равен ISP_HOR_SPLIT, и candIntraPredModeA меньше INTRA_ANGULAR34,

IntraSubPartitionsSplitType равен ISP_VER_SPLIT, и candIntraPredModeA превышает или равен INTRA_ANGULAR34,

IntraLumaRefLineIdx[xCb][yCb] не равен 0,

Применимо следующее:

candModeList[3]=2+(candIntraPredModeA+60)%64) (8-17)

candModeList[4]=2+(candIntraPredModeA%64) (8-18)

candModeList[5]=2+(candIntraPredModeA+59)%64) (8-19)

Иначе, применимо следующее:

candModeList[3]=ispDefaultMode1 (8-20)

candModeList[4]=ispDefaultMode2 (8-21)

candModeList[5]=INTRA_DC (8-22)

В противном случае, если candIntraPredModeB не равен candIntraPredModeA, и candIntraPredModeA или candIntraPredModeB превышает INTRA_DC, применимо следующее:

Переменные minAB и maxAB извлекаются следующим образом:

minAB=Min(candIntraPredModeA, candIntraPredModeB) (8-23)

maxAB=Max(candIntraPredModeA, candIntraPredModeB) (8-24)

- Если candIntraPredModeA и candIntraPredModeB больше INTRA_DC, candModeList[x] с x=0...4 извлекается следующим образом:

candModeList[0]=candIntraPredModeA (8-25)

candModeList[1]=candIntraPredModeB (8-26)

Если IntraLumaRefLineIdx[xCb][yCb] равен 0, и IntraSubPartitionsSplitType равен ISP_NO_SPLIT, применимо следующее:

candModeList[2]=INTRA_DC (8-27)

candModeList[3]=INTRA_DC (8-28)

- Если maxAB minAB находится в диапазоне 2-62, включительно, применимо следующее:

candModeList[4]=2+((maxAB+61)%64) (8-29)

candModeList[5]=2+((maxAB-1)%64) (8-30)

Иначе, применимо следующее:

candModeList[4]=2+((maxAB+60)%64) (8-31)

candModeList[5]=2+((maxAB)%64) (8-32)

Иначе (IntraLumaRefLineIdx[xCb][yCb] не равен 0, или IntraSubPartitionsSplitType не равен ISP_NO_SPLIT), применимо следующее:

Когда IntraSubPartitionsSplitType не равен ISP_NO_SPLIT, и abs (candIntraPredModeB-ispDefaultMode1) меньше abs (candIntraPredModeA-ispDefaultMode1), применимо следующее:

candModeList[0]=candIntraPredModeB (8-33)

candModeList[1]=candIntraPredModeA (8-34)

Если maxAB-minAB равен 1, применимо следующее:

candModeList[2]=2+(minAB+61)%64) (8-35)

candModeList[3]=2+((maxAB+61)%64) (8-36)

candModeList[4]=2+(minAB+60)%64) (8-37)

candModeList[5]=2+(maxAB%64) (8-38)

Иначе, если maxAB-minAB равен 2, применимо следующее:

candModeList[2]=2+((minAB-1)%64) (8-39)

candModeList[3]=2+(minAB+61)%64) (8-40)

candModeList[4]=2+((maxAB-1)%64) (8-41)

candModeList[5]=2+(minAB+60)%64) (8-42)

Иначе, если maxAB-minAB превышает 61, применимо следующее:

candModeList[2]=2+((minAB-1)%64) (8-43)

candModeList[3]=2+((maxAB+61)%64) (8-44)

candModeList[4]=2+(minAB%64) (8-45)

candModeList[5]=2+((maxAB+60)%64) (8-46)

Иначе, применимо следующее:

candModeList[2]=2+(minAB+61)%64) (8-47)

candModeList[3]=2+((minAB-1)%64) (8-48)

candModeList[4]=2+((maxAB+61)%64) (8-49)

candModeList[5]=2+((maxAB-1)%64) (8-50)

- В противном случае (candIntraPredModeA или candIntraPredModeB превышает INTRA_DC), candModeList[x] с x=0...5 извлекается следующим образом:

Если IntraLumaRefLineIdx[xCb][yCb] равен 0, и IntraSubPartitionsSplitType равен ISP_NO_SPLIT, применимо следующее:

candModeList[0]=candIntraPredModeA (8-51)

candModeList[1]=candIntraPredModeB (8-52)

candModeList[2]=1-minAB (8-53)

candModeList[3]=2+((maxAB+61)%64) (8-54)

candModeList[4]=2+((maxAB-1)%64) (8-55)

candModeList[5]=2+((maxAB+60)%64) (8-56)

В противном случае, если IntraLumaRefLineIdx[xCb][yCb] не равен 0, применимо следующее:

candModeList[0]=maxAB (8-57)

candModeList[1]=2+((maxAB+61)%64) (8-58)

candModeList[2]=2+((maxAB-1)%64) (8-59)

candModeList[3]=2+((maxAB+60)%64) (8-60)

candModeList[4]=2+(maxAB%64) (8-61)

candModeList[5]=2+(maxAB+59)%64) (8-62)

Иначе (IntraSubPartitionsSplitType не равен ISP_NO_SPLIT), применимо следующее:

candModeList[0]=INTRA_PLANAR (8-63)

candModeList[1]=maxAB (8-64)

candModeList[2]=2+((maxAB+61)%64) (8-65)

candModeList[3]=2+((maxAB-1)%64) (8-66)

candModeList[4]=2+((maxAB+60)%64) (8-67)

candModeList[5]=2+(maxAB%64) (8-68)

Иначе, применимо следующее:

Если IntraLumaRefLineIdx[xCb][yCb] равен 0, и IntraSubPartitionsSplitType равен ISP_NO_SPLIT, применимо следующее:

candModeList[0]=candIntraPredModeA (8-69)

candModeList[1]=(candModeList[0]==INTRA_PLANAR)? INTRA_DC: (8-70)

INTRA_PLANAR

candModeList[2]=INTRA_ANGULAR50 (8-71)

candModeList[3]=INTRA_ANGULAR18 (8-72)

candModeList[4]=INTRA_ANGULAR46 (8-73)

candModeList[5]=INTRA_ANGULAR54 (8-74)

В противном случае, если IntraLumaRefLineIdx[xCb][yCb] не равен 0, применимо следующее:

candModeList[0]=INTRA_ANGULAR50 (8-75)

candModeList[1]=INTRA_ANGULAR18 (8-76)

candModeList[2]=INTRA_ANGULAR2 (8-77)

candModeList[3]=INTRA_ANGULAR34 (8-78)

candModeList[4]=INTRA_ANGULAR66 (8-79)

candModeList[5]=INTRA_ANGULAR26 (8-80)

В противном случае, если IntraSubPartitionsSplitType равен ISP_HOR_SPLIT, применимо следующее:

candModeList[0]=INTRA_PLANAR (8-81)

candModeList[1]=INTRA_ANGULAR18 (8-82)

candModeList[2]=INTRA_ANGULAR25 (8-83)

candModeList[3]=INTRA_ANGULAR10 (8-84)

candModeList[4]=INTRA_ANGULAR65 (8-85)

candModeList[5]=INTRA_ANGULAR50 (8-86)

В противном случае, если IntraSubPartitionsSplitType равен ISP_VER_SPLIT, применимо следующее:

candModeList[0]=INTRA_PLANAR (8-87)

candModeList[1]=INTRA_ANGULAR50 (8-88)

candModeList[2]=INTRA_ANGULAR43 (8-89)

candModeList[3]=INTRA_ANGULAR60 (8-90)

candModeList[4]=INTRA_ANGULAR3 (8-91)

candModeList[5]=INTRA_ANGULAR18 (8-92)

IntraPredModeY[xCb][yCb] извлекается посредством применения следующей процедуры:

- Если intra_luma_mpm_flag[xCb][yCb] равен 1, IntraPredModeY[xCb][yCb] задается равным candModeList[intra_luma_mpm_idx[xCb][yCb]].

- В противном случае, IntraPredModeY[xCb][yCb] извлекается посредством применения следующих упорядоченных этапов:

Когда candModeList[i] превышает candModeList[j] для i=0...4 и для каждого i, j=(i+1)...5, оба значения переставляются следующим образом:

(candModeList[i], candModeList[j])=Swap(candModeList[i], candModeList[j]) (8-93)

IntraPredModeY[xCb][yCb] извлекается посредством следующих упорядоченных этапов:

IntraPredModeY[xCb][yCb] задается равным intra_luma_mpm_remainder[xCb][yCb].

Для i, равного 0-5, включительно, когда IntraPredModeY[xCb][yCb] превышает или равен candModeList[i], значение IntraPredModeY[xCb][yCb] постепенно увеличивается на единицу.

Переменная IntraPredModeY[x][y] с x=xCb...xCb+cbWidth-1 и y=yCb...yCb+cbHeight-1 задается равной IntraPredModeY[xCb][yCb].

[0088] Кодирование внутренних субсегментов (ISP) (см. работу авторов S. De Luxán Hernández, V. George, J. Ma, T. Nguyen, H. Schwarz, D. Marpe, T. Wiegand (HHI) "CE3: Intra Sub-Partitions Coding Mode", JVET-M0102) представляет собой способ, посредством которого блок кодирования разбивается на два или четыре субблока. Каждый субблок в блоке восстанавливается в порядке декодирования перед восстановлением последующего субблока в порядке декодирования. В VVC WD4, ISP применяется только к блокам кодирования сигналов яркости. Опорные выборки для кодированных блоков ISP ограничены тем, что они исходят из опорной линии, которая является ближайшей к блоку кодирования (например, MRLIdx=0, как показано на фиг. 8). Примеры разбиения показаны на фиг. 9 и фиг. 10.

[0089] Один бит используется для того, чтобы передавать в служебных сигналах то, разбивается или нет блок кодирования на ISP, и второй бит используется для того, чтобы указывать тип разбиения: горизонтальный или вертикальный. На основе используемого внутреннего режима и типа разбиения, могут использоваться два различных класса порядков обработки, которые упоминаются как нормальный и измененный на противоположное порядок. В нормальном порядке, первый субсегмент, который должен обрабатываться, представляет собой субсегмент, содержащий левую верхнюю выборку CU и затем продолжающий вниз (горизонтальное разбиение) или вправо (вертикальное разбиение). С другой стороны, обратный порядок обработки либо начинается с субсегмента, содержащего левую нижнюю выборку CU (горизонтальное разбиение), и продолжается вверх, либо начинается с субсегмента, содержащего правую верхнюю выборку CU, и продолжается влево (вертикальное разбиение).

[0090] Варьирование ISP, которая использует только нормальный порядок обработки, используется в JVET WD4. Следует отметить, что термины "субблок" и "субсегменты" используются взаимозаменяемо в этом документе и оба означают блоки, полученные посредством сегментации блока кодирования с использованием ISP.

[0091] Некоторый синтаксис и семантика, ассоциированная с ISP в JVET WD4, показаны ниже, при этом релевантным синтаксисом заключается в теги <!>...</!>

Синтаксическая таблица единицы кодирования

coding_unit(x0, y0, cbWidth, cbHeight, treeType) { Дескриптор ... } else { if(treeType==SINGLE_TREE | | treeType==DUAL_TREE_LUMA) { if((y0% CtbSizeY)>0) intra_luma_ref_idx[x0][y0] ae(v) <!>if (intra_luma_ref_idx[x0][y0]==0 andand
(cbWidth<=MaxTbSizeY | | cbHeight<=MaxTbSizeY) andand
(cbWidth*cbHeight>MinTbSizeY*MinTbSizeY))
intra_subpartitions_mode_flag[x0][y0] ae(v) if(intra_subpartitions_mode_flag[x0][y0]==1 andand
cbWidth<=MaxTbSizeY andand cbHeight<=MaxTbSizeY)
intra_subpartitions_split_flag[x0][y0] ae(v)</!> if(intra_luma_ref_idx[x0][y0]==0 andand
intra_subpartitions_mode_flag[x0][y0]==0)
intra_luma_mpm_flag[x0][y0] ae(v) if(intra_luma_mpm_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ae(v) ...

Синтаксическая таблица дерева преобразования

transform_tree(x0, y0, tbWidth, tbHeight, treeType) { Дескриптор <!>InferTuCbfLuma=1 if(IntraSubPartSplitType==NO_ISP_SPLIT) {</!> if(tbWidth>MaxTbSizeY | | tbHeight>MaxTbSizeY){ trafoWidth=(tbWidth>MaxTbSizeY)? (tbWidth/2): tbWidth trafoHeight=(tbHeight>MaxTbSizeY)? (tbHeight/2): tbHeight transform_tree(x0, y0, trafoWidth, trafoHeight) if(tbWidth>MaxTbSizeY) transform_tree(x0+trafoWidth, y0, trafoWidth, trafoHeight, treeType) if(tbHeight>MaxTbSizeY) transform_tree(x0, y0+trafoHeight, trafoWidth, trafoHeight, treeType) if(tbWidth>MaxTbSizeY andand tbHeight>MaxTbSizeY) transform_tree(x0+trafoWidth, y0+trafoHeight, trafoWidth, trafoHeight, treeType) } else { transform_unit(x0, y0, tbWidth, tbHeight, treeType, 0) } <!>} else if(IntraSubPartitionsSplitType==ISP_HOR_SPLIT) { trafoHeight=tbHeight/NumIntraSubPartitions for(partIdx=0; partIdx<NumIntraSubPartitions; partIdx++) transform_unit(x0, y0+trafoHeight*partIdx, tbWidth, trafoHeight, treeType, partIdx) }else if(IntraSubPartitionsSplitType==ISP_VER_SPLIT){ trafoWidth=tbWidth/NumIntraSubPartitions for(partIdx=0; partIdx<NumIntraSubPartitions; partIdx++) transform_unit(x0+trafoWidth*partIdx, y0, trafoWidth, tbHeight, treeType, partIdx) }</!> }

Семантика единицы кодирования

<!>intra_subpartitions_mode_flag[x0][y0], равный 1, указывает то, что текущая единица внутреннего кодирования сегментируется на субсегменты блока прямоугольного преобразования NumIntraSubPartitions [x0][y0]; intra_subpartitions_mode_flag[x0][y0], равный 0, указывает то, что текущая единица внутреннего кодирования не сегментируется на субсегменты блока прямоугольного преобразования. Когда intra_subpartitions_mode_flag[x0][y0] не присутствует, он может логически выводиться как равный 0.

intra_subpartitions_split_flag[x0][y0] указывает то, является тип разбиения внутренних субсегментов горизонтальным или вертикальным. Когда intra_subpartitions_mode_flag[x0][y0] не присутствует, он логически выводится равным 0. Переменная IntraSubPartitionsSplitType указывает тип разбиения, используемого для текущего блока кодирования сигналов яркости, как проиллюстрировано в таблице 2-3. IntraSubPartitionsSplitType извлекается следующим образом:

- Если intra_subpartitions_mode_flag[x0][y0] равен 0, IntraSubPartitionsSplitType задается равным 0.

- Иначе IntraSubPartitionsSplitType задается равным 1+intra_subpartitions_split_flag [x0][y0].

Таблица 2-3. Ассоциирование названий в IntraSubPartitionsSplitType

IntraSubPartitionsSplitType Название IntraSubPartitionsSplitType 0 ISP_NO_SPLIT 1 ISP_HOR_SPLIT 2 ISP_VER_SPLIT

Переменная NumIntraSubPartitions указывает число субсегментов блока преобразования, на которые разделяется внутренний блок кодирования сигналов яркости. NumIntraSubPartitions извлекается следующим образом:

- Если IntraSubPartitionsSplitType равен ISP_NO_SPLIT, NumIntraSubPartitions задается равным 1.

- Иначе, если одно из следующих условий представляет собой "истина", NumIntraSubPartitions задается равным 2:

cbWidth равен 4, и cbHeight равен 8,

cbWidth равен 8, и cbHeight равен 4.

- Иначе, NumIntraSubPartitions задается равным 4.</!>

[0092] Аффинное линейное взвешенное внутреннее прогнозирование (ALWIP) (например, описанное в работе авторов J. Pfaff и др. "Affine linear weighted intra prediction (CE3-4.1, CE3-4.2)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14-я конференция: Женева, CH, 19-27 марта 2019 года, документ JVET-N0217 (далее "JVET-N0217")), формирует прогнозирование блока (т.е. блок прогнозирования) из соседних опорных выборок с использованием аффинной линейной модели прогнозирования со взвешиванием. Соседние выборки сначала обрабатываются (например, в некоторых случаях, соседние выборки понижающе дискретизируются) и обработанные (например, понижающе дискретизированные) выборки затем используются для того, чтобы извлекать (с использованием аффинной модели) набор уменьшенных выборок, который напоминает промежуточную понижающе дискретизированную версию прогнозированных выборок. Конечное прогнозирование получается посредством повышающей дискретизации (при необходимости) промежуточных значений. Следует отметить, что ALWIP также может упоминаться как матричное внутреннее прогнозирование (MIP).

[0093] Пример ALWIP-процесса приводится на фиг. 11. ALWIP-процесс по фиг. 11 может выполняться посредством видеокодера 200 и видеодекодера 300. Опорные выборки блока (также называемые "граничными выборками") понижающе дискретизируются, чтобы получать уменьшенные граничные выборки. Векторное представление граничных выборок, bdryred, умножается на матрицу Ak, и член bk смещения/сдвига суммируется, чтобы получать понижающе дискретизированную версию прогнозированного блока, predred. Конечное прогнозирование получается посредством повышающей дискретизации этих прогнозированных выборок predred наряду с граничными выборками. Матрица Ak и вектор bk смещения/сдвига выбираются на основе значения режима, указываемого для блока. Комбинация матрицы Ak и вектора bk смещения/сдвига может упоминаться в данном документе как "ALWIP-режим".

[0094] Извлечение промежуточных прогнозированных выборок использует аффинную линейную модель прогнозирования со взвешиванием. Три типа (т.е. ALWIP-типа) задаются, и число извлекаемых промежуточных выборок отличается для каждого типа следующим образом:

1) 4×4 для размеров с шириной и высотой, равными 4. Другими словами, предусмотрено 16 промежуточных выборок для блоков, имеющих размеры 4×4.

2) 8×8 для размеров с шириной и высотой, меньшими или равными 8, за исключением случаев, когда ширина и высота равны 4 (т.е. блоки 4×8, 8×4 и 8×8). Другими словами, предусмотрено 64 промежуточных выборок для блоков, имеющих размеры HxW, где 4<H≤8 и 4<W≤8 или H=4 и 4<W≤8 или W=4 и 4<H≤8

3) 16×16 для блоков, в которых, по меньшей мере, одно из ширины и высоты превышает 8. Другими словами, предусмотрено 256 промежуточных выборок для блоков, имеющих размеры HxW, причем или H>8 или W>8.

В каждом из этих трех случаев, используются различные числа ALWIP-режимов: 35, 19 и 11, соответственно. Другими словами, для ALWIP-типа 1, предусмотрено 35 различных доступных ALWIP-режимов; для ALWIP-типа 2, предусмотрено 19 различных доступных ALWIP-режимов; и для ALWIP-типа 3, предусмотрено 11 различных доступных ALWIP-режимов. Каждый из различных ALWIP-режимов может соответствовать различной комбинации матрицы Ak и значения bk смещения/сдвига.

[0095] Передача служебных сигналов для ALWIP включает в себя:

a) Флаг (alwip_flag), чтобы указывать то, что текущий блок кодируется с помощью ALWIP.

b) Когда текущий блок кодируется с помощью ALWIP, другой флаг передается в служебных сигналах, чтобы указывать то, кодируется текущий блок с помощью наиболее вероятного ALWIP-режима (MPM) или нет.

a. Если блок кодируется с помощью ALWIP-MPM-режима, MPM-индекс передается в служебных сигналах. Извлечение ALWIP-MPM-режима описывается в этом раскрытии сущности ниже.

b. Иначе, индекс для значения оставшегося режима передается в служебных сигналах. Значение оставшегося режима указывает ALWIP-режим, отличный от ALWIP-MPM-режима.

[0096] alwip_flag контекстно кодируется с четырьмя разрешенными контекстами:

- Если ширина блока>2*высота, или высота>2*ширина, используется контекст 3.

- Иначе, используется контекст ctxId, причем ctxId извлекается следующим образом:

o Инициализация ctxId равным 0.

o Если левый соседний блок кодируется с помощью ALWIP, ctxId++ (т.е. приращение ctxId).

o Если вышележащий соседний блок кодируется с помощью ALWIP, ctxId++.

[0097] Извлечение ALWIP-MPM-режимов заключает в себе следующие этапы:

1) LeftIntraMode и AboveIntraMode инициализируются равными -1.

2) Если левый соседний блок внутренне кодируется:

a. Если левый соседний блок кодируется с помощью ALWIP-режима L (т.е. если левый соседний блок кодируется с помощью ALWIP, пусть ALWIP-режим левого соседнего блока обозначается как L):

i. Если L имеет идентичный ALWIP-тип с текущим блоком, то LeftIntraMode задается равным L.

b. В противном случае, если левый соседний блок не кодируется с помощью ALWIP-режима, внутренний режим левого соседнего блока преобразуется в ALWIP-режим идентичного типа с текущим блоком и назначается LeftIntraMode.

3) Если вышележащий соседний блок внутренне кодируется:

a. Если вышележащий соседний блок кодируется с помощью ALWIP-режима A (т.е. если вышележащий соседний блок кодируется с помощью ALWIP, пусть ALWIP-режим вышележащего соседнего блока обозначается как A):

i. Если A имеет идентичный ALWIP-тип с текущим блоком, то AboveIntraMode задается равным A.

b. В противном случае, если вышележащий соседний блок не кодируется с помощью ALWIP-режима, внутренний режим вышележащего соседнего блока преобразуется в ALWIP-режим идентичного типа с текущим блоком и назначается AboveIntraMode.

4) MPM затем извлекаются на основе LeftIntraMode и AboveIntraMode. Другими словами, первый ALWIP-MPM задается равным LeftIntraMode, и второй ALWIP-MPM задается равным AboveIntraMode. Если LeftIntraMode остается равным -1, или AboveIntraMode остается равным -1, соответствующие MPM являются недоступными.

В остальной части документа, блоки, кодированные с помощью ALWIP, могут упоминаться как ALWIP-кодированные блоки или ALWIP-блоки; другие блоки (например, блоки, кодированные с помощью регулярного внутреннего прогнозирования, внутренних субсегментов или нескольких опорных линий), могут упоминаться как не-ALWIP-блоки.

[0098] Возникает несколько проблем в проектировании ALWIP (т.е. MIP). Например, извлечение контекстов флага, указывающего то, кодируется ли текущий блок с использованием ALWIP-режима (например, alwip_flag), использует значения alwip_flag из левого и вышележащих соседних блоков. Значение alwip_flag вышележащего соседнего блока используется, даже когда вышележащий соседний блок принадлежит другой CTU-строке. Это создает дополнительные требования по хранению. Например, если r означает CTU-границу между текущей CTU-строкой и предыдущей CTU-строкой, alwip_flag всех блоков из предыдущей CTU-строки, которая совместно использует границу r, должен сохраняться. В худшем сценарии блоков 4×4 в 4K-кадре, требуемое число байтов должно составлять 3840/4 (число блоков) x 1 (биты в расчете на значение флага)=120 байтов. Предоставление хранения для alwip_flag значений всех блоков из предыдущей CTU-строки увеличивает требования по хранению видеокодера 200 и видеодекодера 300, за счет этого потенциально увеличивая затраты и сложность видеокодера 200 и видеодекодера 300.

[0099] В другом примере проблемы с проектированием ALWIP, предусмотрено 35 матриц/режимов, указываемых для блоков 4×4. Эти 35 матриц/режимов представляют почти 25% параметров, необходимых для ALWIP. Эффективность сжатия при активации ALWIP-блоков 4×4 составляет почти 0,05%, и требуемая емкость хранения составляет приблизительно 2 КБ (чтобы сохранять 35 матриц и векторов смещения/сдвига). Таким образом, нагрузка по хранению данных в реализациях кодера/декодера является чрезмерной для полученной эффективности. Фиг. 12 является таблицей, иллюстрирующей число параметров матрицы и параметров смещения для каждого ALWIP-типа в VVC WD4.

[0100] Во время извлечения наиболее вероятных режимов (MPM) не-ALWIP-блоков, внутренний режим, используемый для левого и вышележащих соседних блоков, проверяется и используется, если доступный. Например, при извлечении ALWIP-MPM-режимов, видеокодер (например, видеокодер 200 и видеодекодер 300) определяет то, доступен или нет левый соседний блок, и если да, видеокодер определяет то, внутренне кодируется ли левый соседний блок, и если да, видеокодер определяет то, кодируется ли левый соседний блок с использованием ALWIP-режима. Аналогично, видеокодер также определяет то, доступен или нет вышележащий соседний блок, и если да, видеокодер определяет то, внутренне кодируется ли вышележащий соседний блок, и если да, видеокодер определяет то, кодируется ли вышележащий соседний блок с использованием ALWIP-режима. Для не-ALWIP-блоков (т.е. блоков, не кодированных с использованием ALWIP-режима), значения режима соответствуют режимам углового внутреннего прогнозирования или режимам внутреннего планарного/DC-прогнозирования. Кроме тривиальных случаев, один набор коэффициентов матрицы (например, набор коэффициентов матрицы для ALWIP-режима), используемый в ALWIP, может не соответствовать ни одному из внутренних режимов, используемых в не-ALWIP-блоках. ALWIP в данный момент использует первую таблицу преобразования, чтобы аппроксимировать преобразование ALWIP-матрицы в один из внутренних режимов. Это аппроксимированное значение в таком случае считается внутренним режимом соседнего блока, который должен используется при MPM-извлечении не-ALWIP-блока. Другими словами, когда левый соседний блок кодируется с использованием не-ALWIP-режима внутреннего прогнозирования, видеокодер (например, видеокодер 200 или видеодекодер 300) задает первый ALWIP-MPM равным аппроксимированному значению для левого соседнего блока. Аналогично, когда вышележащий соседний блок кодируется с использованием не-ALWIP-режима внутреннего прогнозирования, видеокодер задает второй ALWIP-MPM равным аппроксимированному значению для вышележащего соседнего блока. Это может приводить к неэффективному сжатию, например, вследствие ошибки в аппроксимации. Кроме того, таблица преобразования требует дополнительной емкости хранения и добавляет операции поиска в процессе MPM-извлечения. Дополнительная емкость хранения повышает затраты и сложность видеокодера 200 и видеодекодера 300. Дополнительные операции поиска могут замедлять процессы кодирования и декодирования.

[0101] Эта проблема также может применяться к прямому режиму (DM) сигнала цветности, при этом внутренний режим, используемый для блока сигналов цветности, копируется из совместно размещенного внутреннего блока. Когда совместно размещенный внутренний блок представляет собой кодированный ALWIP, первая таблица преобразования используется для того, чтобы извлекать DM-режим для сигналов цветности из блочной ALWIP-матрицы/режима. Другими словами, блок сигналов яркости, совместно размещаемый с блоком сигналов цветности, может кодироваться с использованием ALWIP-режима, но блок сигналов цветности не может кодироваться с использованием никакого ALWIP-режима. Таким образом, если блок сигналов цветности должен кодироваться с использованием DM-режима для сигналов цветности, в котором режим внутреннего прогнозирования блока сигналов яркости унаследован посредством блока сигналов цветности, для видеокодера (например, видеокодера 200 или видеодекодера 300) может быть необходимым преобразовываться из ALWIP-режима блока сигналов яркости в не-ALWIP-режим внутреннего прогнозирования для использования в блоке сигналов цветности. Это преобразование является аппроксимацией, которая может уменьшать эффективность кодирования. Кроме того, это преобразование может требовать дополнительной емкости хранения для таблицы преобразования и может добавлять операции поиска, что может увеличивать затраты и сложность видеокодера и может замедлять процессы кодирования и декодирования.

[0102] Аналогично примерам в предыдущих параграфах, во время MPM-извлечения ALWIP-блока, внутренние режимы из левого и вышележащего соседних блоков проверяются и используются, если доступны. Когда соседний блок представляет собой не-ALWIP-блок, внутренний режим не-ALWIP-блока может не соответствовать матрицам/режимам, используемым посредством ALWIP-блока. Другими словами, различные ALWIP-режимы, доступные для использования с текущим блоком в зависимости от размера текущего блока и внутреннего режима вышележащего или левого соседнего блока относительно текущего блока, могут не соответствовать ни одному из ALWIP-режимов, доступных для использования с текущим блоком. Следовательно, вторая таблица преобразования используется для того, чтобы преобразовывать внутренний режим не-ALWIP-блока в матрицу/режим ALWIP-блока. Это может приводить к неэффективности при сжатии. Кроме того, вторая таблица преобразования требует дополнительной емкости хранения и добавляет операции поиска в процессе MPM-извлечения. Если соседний блок кодируется с комбинированным внутренним/взаимным режимом (CIIP), соседний блок считается (например, посредством видеокодера 200 и видеодекодера 300) невнутренне кодированным режимом и помечается как недоступный. Если соседний блок кодируется с режимом внутриблочного копирования (IBC), блок считается невнутренне кодированным режимом и помечается как недоступный.

[0103] Это раскрытие сущности описывает технологии, которые могут улучшать проектирование ALWIP-режима. Технологии этого раскрытия сущности позволяют сокращать затраты и сложность видеокодеров, таких как видеокодер 200 и видеодекодер 300, и позволяют увеличивать скорость процессов кодирования и декодирования. Технологии и примеры этого раскрытия сущности могут использоваться посредством видеокодера 200 и видеодекодера 300 отдельно или в любой комбинации.

[0104] В соответствии с первой технологией этого раскрытия сущности, когда вышележащий соседний блок принадлежит CTU, отличной от CTU текущего блока (т.е. блока, который в данный момент кодирует видеокодер (например, видеокодер 200 или видеодекодер 300)), вышележащий соседний блок считается недоступным для целей извлечения контекста для alwip_flag. Например, процесс извлечения контекста для alwip_flag может модифицироваться следующим образом, при этом теги <!>...</!> указывают суммирования:

alwip_flag контекстно кодируется с четырьмя разрешенными контекстами:

- Если ширина блока>2*высота, или высота>2*ширина, используется контекст 3.

- Иначе, используется контекст ctxId, причем ctxId извлекается следующим образом:

o Инициализация ctxId равным 0

o Если левый соседний блок кодируется с помощью ALWIP, ctxId++.

o Если вышележащий соседний блок кодируется с помощью ALWIP <!> и вышележащий соседний блок находится в идентичной CTU с текущим блоком </!>, ctxId++

Таким образом, в этом примере, видеокодер 200 и видеодекодер 300 могут исключать необходимость сохранять данные, указывающие то, кодируются или нет блоки в CTU-строке выше CTU-строки, содержащей текущий блок, с использованием ALWIP-режима. Исключение необходимости сохранять такие данные может сокращать затраты и сложность видеокодера 200 и видеодекодера 300.

[0105] В некоторых примерах, значение alwip_flag из вышележащей CTU-строки может логически выводиться равным конкретному значению (например, 0) для целей извлечения контекста alwip_flag для текущего блока. Другими словами, видеокодер 200 и видеодекодер 300 могут допускать, что значения alwip_flag для вышележащих соседних блоков, которые находятся в вышележащей CTU-строке, имеют идентичное конкретное значение. Таким образом, видеокодер 200 и видеодекодер 300 могут исключать необходимость сохранять данные, указывающие то, кодируются или нет блоки в CTU-строке выше CTU-строки, содержащей текущий блок, с использованием ALWIP-режима, с результирующими потенциальными уменьшениями затрат и сложности для видеокодера 200 и видеодекодера 300.

[0106] Таким образом, в соответствии с примером первой технологии этого раскрытия сущности, видеокодер (например, видеокодер 200 или видеодекодер 300) может определять контекст для синтаксического ALWIP-элемента (например, alwip_flag). В этом примере, синтаксический ALWIP-элемент указывает то, кодируется ли текущий блок с помощью ALWIP. Кроме того, в этом примере, вышележащий соседний блок определяется как недоступный для определения контекста на основе вышележащего соседнего блока, находящегося в другой CTU из текущего блока, при этом вышележащий соседний блок представляет собой вышележащий соседний узел относительно текущего блока. В этом примере, видеокодер может кодировать синтаксический ALWIP-элемент на основе контекста. Например, видеокодер может использовать контекст в CABAC-кодировании синтаксического ALWIP-элемента.

[0107] В соответствии со второй технологией этого раскрытия сущности, вводится ограничение, чтобы деактивировать ALWIP для блоков с меньшим конкретного порогового значения ширины, wT и высоты, hT. Другими словами, стандарт кодирования видео (например, VVC и т.д.) может налагать ограничение, которое деактивирует ALWIP для блоков, которые имеют ширину, меньшую пороговой ширины, или высоту, меньшую пороговой высоты. Таким образом, стандарт кодирования видео может указывать то, что блоки, имеющие ширины, меньшие wT, и высоты, меньшие hT, не могут кодироваться с использованием ALWIP. Например, ограничение может предоставлять то, то ALWIP деактивируется для блоков с ширинами, меньшими 8, и высотами, меньшими 8. В некоторых примерах, связанные с помощью ALWIP синтаксические элементы преобразуются и согласуются на основе таких ограничений по размерам блоков. Как отмечено выше, например, относительно фиг. 12, кодирование небольших блоков с помощью ALWIP может приводить к высоким требованиям по хранению, но к относительно умеренным выигрышам по эффективности кодирования. Введение этого ограничения может сокращать число параметров, которые видеокодер 200 и видеодекодер 300, возможно, должны сохранять, чтобы реализовывать ALWIP, за счет этого потенциально уменьшая сложность и затраты видеокодера 200 и видеодекодера 300. Таким образом, в соответствии со второй технологией этого раскрытия сущности, может налагаться ограничение, которое деактивирует ALWIP для блоков, которые имеют ширины, меньшие пороговой ширины (например, 8), или высоты, меньшие пороговой высоты (например, 8).

[0108] В соответствии с третьей технологией этого раскрытия сущности, когда ALWIP-кодированный соседний блок рассматривается/тестируется в MPM-извлечении не-ALWIP-кодированного блока, соседний блок может считаться недоступным (или взаимно кодированным), и/или значение внутреннего режима такого соседнего блока может логически выводиться в качестве конкретного значения (например, планарный режим, DC-режим или другой режим внутреннего прогнозирования) для MPM-извлечения не-ALWIP-кодированного блока. Для простоты пояснения, это раскрытие сущности может упоминать конкретное значение в качестве значения по умолчанию. Таким образом, видеокодер 200 и видеодекодер 300 могут исключать необходимость сохранять таблицу преобразования, чтобы преобразовывать ALWIP-режимы в не-ALWIP-режимы внутреннего прогнозирования, и могут исключать операции поиска для таблиц преобразования. Это позволяет уменьшать требования по хранению видеокодера 200 и видеодекодера 300, что позволяет сокращать затраты и сложность видеокодера 200 и видеодекодера 300.

[0109] Таким образом, в соответствии с третьей технологией этого раскрытия сущности, видеокодер (например, видеокодер 200 или видеодекодер 300) может выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока, который не кодируется с использованием ALWIP. В качестве части выполнения процесса MPM-извлечения, видеокодер может определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. На основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, видеокодер может определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию. Видеокодер затем может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM. Если соседний блок не ALWIP-кодируется, видеокодер может определять то, что один или более MPM включают в себя режим внутреннего прогнозирования соседнего блока. Видеокодер может кодировать (например, кодировать или декодировать) текущий блок на основе одного из MPM для текущего блока или на основе другого режима внутреннего прогнозирования.

[0110] Кроме того, в некоторых примерах, когда блок сигналов цветности кодируется с помощью DM-режима (т.е. режим внутреннего прогнозирования блока сигналов цветности унаследован из совместно размещенного блока сигналов яркости), и совместно размещенный блок сигналов яркости (или более конкретно, блок сигналов яркости, используемый для того, чтобы извлекать DM-режим блока сигналов цветности) кодируется с помощью ALWIP, внутренний режим совместно размещенного блока может определяться, например, логически выводиться в качестве значения по умолчанию (например, планарный). Таким образом, видеокодер 200 и видеодекодер 300 могут исключать необходимость сохранять таблицу преобразования, чтобы преобразовывать ALWIP-режимы в не-ALWIP-режимы внутреннего прогнозирования, и могут исключать операции поиска для таблиц преобразования. Это позволяет уменьшать требования по хранению видеокодера 200 и видеодекодера 300, что позволяет сокращать затраты и сложность видеокодера 200 и видеодекодера 300.

[0111] Таким образом, в некоторых примерах, в которых блок сигналов цветности кодируется с помощью DM-режима, видеокодер (например, видеокодер 200 или видеодекодер 300) может определять то, кодируется ли совместно размещенный блок сигналов яркости с помощью ALWIP, причем совместно размещенный блок сигналов яркости совместно размещается с блоком сигналов цветности. На основе кодирования совместно размещенного блока сигналов яркости с помощью ALWIP, видеокодер может определять, например, логически выводить то, что режим внутреннего прогнозирования совместно размещенного блока сигналов яркости равно значению по умолчанию (например, планарный режим), к примеру, планарный режим или другой режим внутреннего прогнозирования. Видеокодер может кодировать (например, кодировать или декодировать) блок сигналов цветности с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию. Например, чтобы кодировать блок сигналов цветности с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию, видеокодер 200 может формировать блок прогнозирования с использованием режима внутреннего прогнозирования. Видеокодер 200 затем может формировать остаточные данные для блока сигналов цветности на основе выборок блока сигналов цветности и блока прогнозирования. Чтобы декодировать блок сигналов цветности с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию, видеодекодер 300 может формировать блок прогнозирования с использованием режима внутреннего прогнозирования. Видеодекодер 300 затем может восстанавливать блок сигналов цветности на основе блока прогнозирования и остаточных данных для блока сигналов цветности.

[0112] В соответствии с четвертой технологией этого раскрытия сущности, когда соседний не-ALWIP-блок используется в MPM-извлечении ALWIP-блока, соседний блок может считаться недоступным (или взаимно кодированным), и/или значение соседнего режима может назначаться значению по умолчанию для MPM-извлечения ALWIP-блока. Другими словами, когда определение ALWIP-MPM для ALWIP-кодированного блока и соседнего блока не кодируется с использованием ALWIP, видеокодер 200 и видеодекодер 300 могут считать, что соседний блок является недоступным, либо могут допускать, что соседний блок имеет режим внутреннего прогнозирования по умолчанию. Это позволяет исключать или уменьшать необходимость для видеокодера 200 и видеодекодера 300 сохранять данные преобразования, чтобы преобразовывать не-ALWIP-режимы направленного внутреннего прогнозирования в ALWIP-режимы. Исключение или уменьшение необходимости сохранять такие данные преобразования позволяет сокращать затраты и сложность видеокодера 200 и видеодекодера 300.

[0113] В некоторых примерах, если соседний блок кодируется с комбинированным внутренним/взаимным режимом (CIIP), соседний блок может считаться доступным, и ему может назначаться планарный режим или другой соответствующий не-ALWIP-режим для MPM-извлечения ALWIP-блока. Альтернативно, CIIP-режим может преобразовываться непосредственно в соответствующий ALWIP-режим, чтобы оптимизировать преимущества с точки зрения эффективности кодирования. Назначение может зависеть от размеров блока и т.д. Если соседний блок кодируется с режимом внутриблочного копирования (IBC), блок может считаться доступным, и ему может назначаться планарный режим или другой соответствующий не-ALWIP-режим для MPM-извлечения ALWIP-блока. Альтернативно, IBC-режим может преобразовываться непосредственно в соответствующий ALWIP-режим, чтобы оптимизировать преимущества с точки зрения эффективности кодирования. Назначение может зависеть от размеров блока и т.д. Преобразование CIIP-режимов и IBC-режимов непосредственно (например, во взаимосвязи "1 к 1") в конкретный режим, такой как планарный режим, может исключать или уменьшать необходимость сохранять более сложные данные преобразования. Исключение или уменьшение необходимости сохранять более сложные данные преобразования позволяет сокращать затраты и сложность видеокодера 200 и видеодекодера 300.

[0114] В соответствии с пятой технологией этого раскрытия сущности, может вводиться такое ограничение, чтобы деактивировать ALWIP для блоков с отношением ширины к высоте в 4 или 0,25. Другими словами, стандарт кодирования видео может предоставлять, что блок, имеющий отношение ширины к высоте в 4 или 0,25, может не кодироваться с использованием ALWIP. Некодирование блоков, имеющих такие отношения ширины к высоте, позволяет сокращать число ALWIP-параметров, которые видеокодер 200 и видеодекодер 300, возможно, должны сохранять, за счет этого потенциально сокращая затраты и сложность видеокодера 200 и видеодекодера 300.

[0115] Извлечение MPM-списков для ALWIP использует режимы из соседних блоков, которые являются смежными с правой верхней (например, сразу выше правой верхней выборки) и/или левой нижней выборками (например, сразу слева от левой нижней выборки) текущего блока. В некоторых примерах, соседнее местоположение, используемое для того, чтобы извлекать MPM для ALWIP, совмещается с соседним местоположением, используемым для того, чтобы извлекать MPM для регулярного внутреннего прогнозирования. Если обобщить, любой один или более блоков в окружении текущего блока могут использоваться для MPM-извлечения для ALWIP. Фиг. 13 является концептуальной схемой, иллюстрирующей примерные соседние блоки 550, 552, используемые для того, чтобы извлекать ALWIP-MPM для текущего блока 554, в соответствии с одной или более технологий этого раскрытия сущности. В примере по фиг. 13, блок A (550) представляет собой блок (верхний), смежный с правой верхней выборкой текущего блока 554. Блок L (552) представляет собой блок (левый), смежный с левой нижней выборкой текущего блока 554.

[0116] Текст нижеприведенного подробного описания из JVET-N0217 редактируется, чтобы реализовывать технологии, описанные относительно четвертой технологии этого раскрытия сущности. Изменения указываются посредством тегов <!>...</!>.

Назначение режима CIIP-кодированному блоку для MPM-извлечения ALWIP-блока

Процесс извлечения для режима аффинного линейного взвешенного внутреннего прогнозирования

Вводы в этот процесс представляют собой следующее:

- местоположение (xCb, yCb) сигнала яркости, указывающее левую верхнюю выборку текущего блока кодирования сигналов яркости относительно левой верхней выборки сигнала яркости текущего кадра,

- переменная cbWidth, указывающая ширину текущего блока кодирования в выборках сигнала яркости,

- переменная cbHeight, указывающая высоту текущего блока кодирования в выборках сигнала яркости.

В этом процессе, режим IntraPredModeY[xCb][yCb] аффинного линейного взвешенного внутреннего прогнозирования яркости извлекается.

IntraPredModeY[xCb][yCb] извлекается посредством следующих упорядоченных этапов:

1. Соседние местоположения (xNbA, yNbA) и (xNbB, yNbB) задаются равными (xCb-1, yCb) и (xCb, yCb-1), соответственно.

2. Для замены X посредством A или посредством B, переменные candIntraPredModeX извлекаются следующим образом:

- Процесс извлечения доступности для блока, как указано в разделе 6.4.X [Ed. (BB): Процесс проверки доступности соседних блоков, подлежит уточнению] активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xNbX, yNbX), в качестве вводов, и вывод назначается availableX.

- Возможный вариант candLwipModeX режима аффинного линейного взвешенного внутреннего прогнозирования извлекается следующим образом:

- Если одно или более следующих условий представляют собой "истина", candIntraPredModeX задается равным INTRA_PLANAR.

- Переменная availableX равна "ложь".

- CuPredMode[xNbX][yNbX] не равно MODE_INTRA, и ciip_flag[xNbX][yNbX] не равен 1.

pcm_flag[xNbX][yNbX] равен 1.

- X равен B, и yCb-1 меньше ((yCb>>CtbLog2SizeY)<<CtbLog2SizeY).

- В противном случае, применимо следующее:

- Процесс извлечения типа размера для блока, как указано в разделе 8.4.X.1, активируется с шириной cbWidth текущего блока кодирования в выборках сигнала яркости и высотой cbHeight текущего блока кодирования в выборках сигнала яркости в качестве ввода, и вывод назначается переменной sizeId.

- Если intra_lwip_flag[xNbX][yNbX] равен 1, процесс извлечения типа размера для блока, как указано в разделе 8.4.X.1, активируется с шириной nbWidthX соседнего блока кодирования в выборках сигнала яркости и высотой nbHeightX соседнего блока кодирования в выборках сигнала яркости в качестве ввода, и вывод назначается переменной sizeIdX.

- Если sizeId равен sizeIdX, candLwipModeX задается равным IntraPredModeY[xNbX][yNbX].

- Иначе, candLwipModeX задается равным -1.

-<!>в противном случае, если intra_lwip_flag[xNbX][yNbX] равен 0, и ciip_flag ciip_flag[xNbX][yNbX] равен 1, IntraPredModeY[xNbX][yNbX] задается равным INTRA_PLANAR, и candLwipModeX извлекается с использованием IntraPredModeY[xNbX][yNbX] и sizeId, как указано в таблице 8-X1.</!>

- Иначе, candLwipModeX извлекается с использованием IntraPredModeY[xNbX][yNbX] и sizeId, как указано в таблице 8-X1.

3. candLwipModeList[x] с x=0...2 извлекается следующим образом, с использованием lwipMpmCand[sizeId], как указано в таблице 8-X2:

- Если candLwipModeA и candLwipModeB равны -1, применимо следующее:

candLwipModeList[0]=lwipMpmCand[sizeId][0]

(8-X1)

candLwipModeList[1]=lwipMpmCand[sizeId][1]

(8-X2)

candLwipModeList[2]=lwipMpmCand[sizeId][2]

(8-X3)

- В противном случае, применимо следующее:

- Если candLwipModeA равен candLwipModeB, либо если или candLwipModeA, или candLwipModeB равно -1, применимо следующее:

candLwipModeList[0]=(candLwipModeA!=-1)? candLwipModeA: candLwipModeB (8-X4)

- Если candLwipModeList[0] равен lwipMpmCand[sizeId][0], применимо следующее:

candLwipModeList[1]=lwipMpmCand[sizeId][1]

(8-X5)

candLwipModeList[2]=lwipMpmCand[sizeId][2]

(8-X6)

- В противном случае, применимо следующее:

candLwipModeList[1]=lwipMpmCand[sizeId][0]

(8-X7)

candLwipModeList[2]=(candLwipModeList[0]!=lwipMpmCand[sizeId][1])?

lwipMpmCand[sizeId][1]: lwipMpmCand[sizeId][2]

(8-X8)

- В противном случае, применимо следующее:

candLwipModeList[0]=candLwipModeA (8-X9)

candLwipModeList[1]=candLwipModeB (8-X10)

- Если candLwipModeA и candLwipModeB не равны lwipMpmCand[sizeId][0], применимо следующее:

candLwipModeList[2]=lwipMpmCand[sizeId][0]

(8-X11)

- В противном случае, применимо следующее:

- Если candLwipModeA и candLwipModeB не равны lwipMpmCand[sizeId][1], применимо следующее:

candLwipModeList[2]=lwipMpmCand[sizeId][1]

(8-X12)

- В противном случае, применимо следующее:

candLwipModeList[2]=lwipMpmCand[sizeId][2]

(8-X13)

4. IntraPredModeY[xCb][yCb] извлекается посредством применения следующей процедуры:

- Если intra_lwip_mpm_flag[xCb][yCb] равен 1, IntraPredModeY[xCb][yCb] задается равным candLwipModeList[intra_lwip_mpm_idx[xCb][yCb]].

- В противном случае, IntraPredModeY[xCb][yCb] извлекается посредством применения следующих упорядоченных этапов:

1. Когда candModeList[i] превышает candModeList[j] для i=0...1 и для каждого i, j=(i+1)...5, оба значения переставляются следующим образом:

(candModeList[i], candModeList[j])=Swap(candModeList[i], candModeList[j]) (8-X14)

2. IntraPredModeY[xCb][yCb] извлекается посредством следующих упорядоченных этапов:

i. IntraPredModeY[xCb][yCb] задается равным intra_lwip_mpm_remainder[xCb][yCb].

ii. Для i, равного 0-2, включительно, когда IntraPredModeY[xCb][yCb] превышает или равен candLwipModeList[i], значение IntraPredModeY[xCb][yCb] постепенно увеличивается на единицу.

Переменная IntraPredModeY[x][y] с x=xCb...xCb+cbWidth-1 и y=yCb...yCb+cbHeight-1 задается равной IntraPredModeY[xCb][yCb].

8.4. X.1. Процесс извлечения для типа размера блока прогнозирования

Вводы в этот процесс представляют собой следующее:

- переменная cbWidth, указывающая ширину текущего блока кодирования в выборках сигнала яркости,

- переменная cbHeight, указывающая высоту текущего блока кодирования в выборках сигнала яркости.

Вывод этого процесса представляет собой переменную sizeId.

Переменная fixedExposureDuration извлекается следующим образом:

- Если cbWidth и cbHeight равны 4, sizeId задается равным 0.

- Иначе, если cbWidth и cbHeight меньше или равны 8, sizeId задается равным 1.

- Иначе, sizeId задается равным 2.

Таблица 8-X1. Спецификация преобразования между режимами внутреннего прогнозирования и аффинного линейного взвешенного внутреннего прогнозирования

IntraPredModeY[xNbX][yNbX] тип sizeId размера блока 0 1 2 0 17 0 5 1 17 0 1 2, 3 17 10 3 4, 5 9 10 3 6,7 9 10 3 8, 9 9 10 3 10, 11 9 10 0 12, 13 17 4 0 14, 15 17 6 0 16, 17 17 7 4 18, 19 17 7 4 20, 21 17 7 4 22, 23 17 5 5 24, 25 17 5 1 26, 27 5 0 1 28, 29 5 0 1 30, 31 5 3 1 32, 33 5 3 1 34, 35 34 12 6 36, 37 22 12 6 38, 39 22 12 6 40, 41 22 12 6 42, 43 22 14 6 44, 45 34 14 10 46, 47 34 14 10 48, 49 34 16 9 50, 51 34 16 9 52, 53 34 16 9 54, 55 34 15 9 56, 57 34 13 9 58, 59 26 1 8 60, 61 26 1 8 62, 63 26 1 8 64, 65 26 1 8 66 26 1 8

Таблица 8-X2. Спецификация возможных вариантов режимов аффинного линейного взвешенного внутреннего прогнозирования

Возможный вариант режима 0 1 2 lwipMpmCand[0] 17 34 5 lwipMpmCand[1] 0 7 16 lwipMpmCand[2] 1 4 6

[0117] Примерные изменения в тексте спецификации JVET-N0217, чтобы реализовывать пятую технологию этого раскрытия сущности обозначаются, с помощью тегов <!>...</!> ниже.

Процесс извлечения для режима аффинного линейного взвешенного внутреннего прогнозирования

Вводы в этот процесс представляют собой следующее:

- местоположение (xCb, yCb) сигнала яркости, указывающее левую верхнюю выборку текущего блока кодирования сигналов яркости относительно левой верхней выборки сигнала яркости текущего кадра,

- переменная cbWidth, указывающая ширину текущего блока кодирования в выборках сигнала яркости,

- переменная cbHeight, указывающая высоту текущего блока кодирования в выборках сигнала яркости.

В этом процессе, режим IntraPredModeY[xCb][yCb] внутреннего прогнозирования сигналов яркости извлекается.

IntraPredModeY[xCb][yCb] извлекается посредством следующих упорядоченных этапов:

1. Соседние местоположения (xNbA, yNbA) и (xNbB, yNbB) задаются равными (xCb-1, yCb<!>+cbHeight-1</!>) и (xCb<!>+cbWidth-1</!>, yCb-1), соответственно.

2. Для замены X посредством A или посредством B, переменные candIntraPredModeX извлекаются следующим образом:

- Процесс извлечения доступности для блока, как указано в разделе 6.4.X [Ed. (BB): Процесс проверки доступности соседних блоков, подлежит уточнению] активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xNbX, yNbX), в качестве вводов, и вывод назначается availableX.

- Возможный вариант candLwipModeX режима аффинного линейного взвешенного внутреннего прогнозирования извлекается следующим образом:

- Если одно или более следующих условий представляют собой "истина", candIntraPredModeX задается равным INTRA_PLANAR.

- Переменная availableX равна "ложь".

- CuPredMode[xNbX][yNbX] не равно MODE_INTRA, и ciip_flag[xNbX][yNbX] не равен 1.

pcm_flag[xNbX][yNbX] равен 1.

- X равен B, и yCb-1 меньше ((yCb>>CtbLog2SizeY)<<CtbLog2SizeY).

- В противном случае, применимо следующее:

- Процесс извлечения типа размера для блока, как указано в разделе 8.4.X.1, активируется с шириной cbWidth текущего блока кодирования в выборках сигнала яркости и высотой cbHeight текущего блока кодирования в выборках сигнала яркости в качестве ввода, и вывод назначается переменной sizeId.

- Если intra_lwip_flag[xNbX][yNbX] равен 1, процесс извлечения типа размера для блока, как указано в разделе 8.4.X.1, активируется с шириной nbWidthX соседнего блока кодирования в выборках сигнала яркости и высотой nbHeightX соседнего блока кодирования в выборках сигнала яркости в качестве ввода, и вывод назначается переменной sizeIdX.

- Если sizeId равен sizeIdX, candLwipModeX задается равным IntraPredModeY[xNbX][yNbX].

- Иначе, candLwipModeX задается равным -1.

- Иначе, candLwipModeX извлекается с использованием IntraPredModeY[xNbX][yNbX] и sizeId, как указано в таблице 8-X1.

3. candLwipModeList[x] с x=0...2 извлекается следующим образом, с использованием lwipMpmCand[sizeId], как указано в таблице 8-X2:

- Если candLwipModeA и candLwipModeB равны -1, применимо следующее:

candLwipModeList[0]=lwipMpmCand[sizeId][0]

(8-X1)

candLwipModeList[1]=lwipMpmCand[sizeId][1]

(8-X2)

candLwipModeList[2]=lwipMpmCand[sizeId][2]

(8-X3)

- В противном случае, применимо следующее:

- Если candLwipModeA равен candLwipModeB, либо если или candLwipModeA, или candLwipModeB равно -1, применимо следующее:

candLwipModeList[0]=(candLwipModeA!=-1)? candLwipModeA: candLwipModeB (8-X4)

- Если candLwipModeList[0] равен lwipMpmCand[sizeId][0], применимо следующее:

candLwipModeList[1]=lwipMpmCand[sizeId][1]

(8-X5)

candLwipModeList[2]=lwipMpmCand[sizeId][2]

(8-X6)

- В противном случае, применимо следующее:

candLwipModeList[1]=lwipMpmCand[sizeId][0]

(8-X7)

candLwipModeList[2]=(candLwipModeList[0]!=lwipMpmCand[sizeId][1])?

lwipMpmCand[sizeId][1]: lwipMpmCand[sizeId][2]

(8-X8)

- В противном случае, применимо следующее:

candLwipModeList[0]=candLwipModeA (8-X9)

candLwipModeList[1]=candLwipModeB (8-X10)

- Если candLwipModeA и candLwipModeB не равны lwipMpmCand[sizeId][0], применимо следующее:

candLwipModeList[2]=lwipMpmCand[sizeId][0]

(8-X11)

- В противном случае, применимо следующее:

- Если candLwipModeA и candLwipModeB не равны lwipMpmCand[sizeId][1], применимо следующее:

candLwipModeList[2]=lwipMpmCand[sizeId][1]

(8-X12)

- В противном случае, применимо следующее:

candLwipModeList[2]=lwipMpmCand[sizeId][2]

(8-X13)

4. IntraPredModeY[xCb][yCb] извлекается посредством применения следующей процедуры:

- Если intra_lwip_mpm_flag[xCb][yCb] равен 1, IntraPredModeY[xCb][yCb] задается равным candLwipModeList[intra_lwip_mpm_idx[xCb][yCb]].

- В противном случае, IntraPredModeY[xCb][yCb] извлекается посредством применения следующих упорядоченных этапов:

1. Когда candModeList[i] превышает candModeList[j] для i=0...1 и для каждого i, j=(i+1)...5, оба значения переставляются следующим образом:

(candModeList[i], candModeList[j])=Swap(candModeList[i], candModeList[j]) (8-X14)

2. IntraPredModeY[xCb][yCb] извлекается посредством следующих упорядоченных этапов:

i. IntraPredModeY[xCb][yCb] задается равным intra_lwip_mpm_remainder[xCb][yCb].

ii. Для i, равного 0-2, включительно, когда IntraPredModeY[xCb][yCb] превышает или равен candLwipModeList[i], значение IntraPredModeY[xCb][yCb] постепенно увеличивается на единицу.

Переменная IntraPredModeY[x][y] с x=xCb...xCb+cbWidth-1 и y=yCb...yCb+cbHeight-1 задается равной IntraPredModeY[xCb][yCb].

Таблица 8-X1. Спецификация преобразования между режимами внутреннего прогнозирования и аффинного линейного взвешенного внутреннего прогнозирования

IntraPredModeY[xNbX][yNbX] тип sizeId размера блока 0 1 2 0 17 0 5 1 17 0 1 2, 3 17 10 3 4, 5 9 10 3 6,7 9 10 3 8, 9 9 10 3 10, 11 9 10 0 12, 13 17 4 0 14, 15 17 6 0 16, 17 17 7 4 18, 19 17 7 4 20, 21 17 7 4 22, 23 17 5 5 24, 25 17 5 1 26, 27 5 0 1 28, 29 5 0 1 30, 31 5 3 1 32, 33 5 3 1 34, 35 34 12 6 36, 37 22 12 6 38, 39 22 12 6 40, 41 22 12 6 42, 43 22 14 6 44, 45 34 14 10 46, 47 34 14 10 48, 49 34 16 9 50, 51 34 16 9 52, 53 34 16 9 54, 55 34 15 9 56, 57 34 13 9 58, 59 26 1 8 60, 61 26 1 8 62, 63 26 1 8 64, 65 26 1 8 66 26 1 8

Таблица 8-X2. Спецификация возможных вариантов режимов аффинного линейного взвешенного внутреннего прогнозирования

Возможный вариант режима 0 1 2 lwipMpmCand[0] 17 34 5 lwipMpmCand[1] 0 7 16 lwipMpmCand[2] 1 4 6

[0118] Это раскрытие сущности, в общем, может относиться к "передаче в служебных сигналах" определенной информации, такой как синтаксические элементы. Термин "передача служебных сигналов", в общем, может означать передачу значений для синтаксических элементов и/или других данных, используемых для того, чтобы декодировать кодированных видеоданные. Таким образом, видеокодер 200 может передавать в служебных сигналах значения для синтаксических элементов в потоке битов. В общем, передача служебных сигналов означает формирование значения в потоке битов. Как отмечено выше, исходное устройство 102 может транспортировать поток битов в целевое устройство 116 практически в реальном времени или не в реальном времени, к примеру, что может происходить при сохранении синтаксических элементов в устройство 112 хранения данных для последующего извлечения посредством целевого устройства 116.

[0119] Фиг. 14A и 14B является концептуальной схемой, иллюстрирующей примерную структуру 130 в виде дерева квадрантов и двоичного дерева (QTBT) и соответствующую единицу 132 дерева кодирования (CTU). Сплошные линии представляют разбиение на дерево квадрантов, и пунктирные линии указывают разбиение на двоичное дерево. В каждом разбитом (т.е. нелисте) узле двоичного дерева, один флаг передается в служебных сигналах то, чтобы указывать то, какой тип разбиения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разбиение, и 1 указывает вертикальное разбиение в этом примере. Для разбиения на дерево квадрантов, нет необходимости указывать тип разбиения, поскольку узлы дерева квадрантов разбивают блок горизонтально и вертикально на 4 субблока с равным размером. Соответственно, видеокодер 200 может кодировать, а видеодекодер 300 может декодировать синтаксические элементы (к примеру, информацию разбиения) для древовидного уровня области (т.е. первого уровня) QTBT-структуры 130 (т.е. сплошные линии) и синтаксические элементы (к примеру, информацию разбиения) для древовидного уровня прогнозирования (т.е. второго уровня) QTBT-структуры 130 (т.е. пунктирные линии). Видеокодер 200 может кодировать, и видеодекодер 300 может декодировать видеоданные, такие как данные прогнозирования и преобразования, для CU, представленных посредством терминальных узлов-листьев QTBT-структуры 130.

[0120] В общем, CTU 132 по фиг. 14B может быть ассоциирована с параметрами, задающими размеры блоков, соответствующих узлам QTBT-структуры 130 на первом и втором уровнях. Эти параметры могут включать в себя CTU-размер (представляющий размер CTU 132 в выборках), минимальный размер дерева квадрантов (MinQTSize, представляющий минимальный разрешенный размер узлов-листьев дерева квадрантов), максимальный размер двоичного дерева (MaxBTSize, представляющий максимальный разрешенный размер корневых узлов двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющий максимальную разрешенную глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимальный разрешенный размер узлов-листьев двоичного дерева).

[0121] Корневой узел QTBT-структуры, соответствующей CTU, может иметь четыре дочерних узла на первом уровне QTBT-структуры, каждый из которых может сегментироваться согласно сегментации на основе дерева квадрантов. Таким образом, узлы первого уровня либо представляют собой узлы-листья (имеющие дочерние узлы), либо имеют четыре дочерних узла. Пример QTBT-структуры 130 представляет такие узлы как включающие в себя родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не превышают максимальный разрешенный размер корневых узлов двоичного дерева (MaxBTSize), они дополнительно могут сегментироваться посредством соответствующих двоичных деревьев. Разбиение на двоичное дерево одного узла может обрабатываться с помощью итераций до тех пор, пока узлы, получающиеся в результате разбиения, не достигают минимального разрешенного размера узлов-листьев двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример QTBT-структуры 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Узел-лист двоичного дерева называется "единицей кодирования (CU)", которая используется для прогнозирования (например, внутрикадрового или межкадрового прогнозирования) и преобразования, без дальнейшей сегментации. Как пояснено выше, CU также могут называться "видеоблоками" или "блоками".

[0122] В одном примере 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" и дополнительно обрабатываются согласно прогнозированию и преобразованию без дополнительной сегментации.

[0123] Фиг. 15 является блок-схемой, иллюстрирующей примерный видеокодер 200, который может выполнять технологии этого раскрытия сущности. Фиг. 15 предоставляется для целей пояснения и не должен считаться ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеокодер 200 в контексте стандартов кодирования видео, таких как стандарт HEVC-кодирования видео и разрабатываемый стандарт кодирования видео H.266. Тем не менее, технологии этого раскрытия сущности не ограничены этими стандартами кодирования видео и являются, в общем, применимыми к кодированию и декодированию видео.

[0124] В примере по фиг. 15, видеокодер 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 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.

[0125] Запоминающее устройство 230 видеоданных может сохранять видеоданные, которые должны кодироваться посредством компонентов видеокодера 200. Видеокодер 200 может принимать видеоданные, сохраненные в запоминающем устройстве 230 видеоданных, например, из видеоисточника 104 (фиг. 1). DPB 218 может выступать в качестве запоминающего устройства опорных кадров, которое сохраняет опорные видеоданные для использования при прогнозировании последующих видеоданных посредством видеокодера 200. Запоминающее устройство 230 видеоданных и DPB 218 могут формироваться посредством любых из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее устройство 230 видеоданных и DPB 218 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 230 видеоданных может быть на кристалле с другими компонентами видеокодера 200, как проиллюстрировано, или не на кристалле относительно этих компонентов.

[0126] В этом раскрытии сущности, ссылка на запоминающее устройство 230 видеоданных не должна интерпретироваться как ограниченная запоминающим устройством, внутренним для видеокодера 200, если не описывается конкретно в таком качестве, или запоминающим устройством, внешним для видеокодера 200, если не описывается конкретно в таком качестве. Наоборот, ссылка на запоминающее устройство 230 видеоданных должна пониматься как опорное запоминающее устройство, которое сохраняет видеоданные, которые видеокодер 200 принимает для кодирования (например, видеоданные для текущего блока, который должен кодироваться). Запоминающее устройство 106 по фиг. 1 также может предоставлять временное хранение выводов из различных модулей видеокодера 200.

[0127] Различные модули по фиг. 15 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.

[0128] Видеокодер 200 может включать в себя арифметико-логические устройства (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, сформированные из программируемых схем. В примерах, в которых операции видеокодера 200 выполняются с использованием программного обеспечения, выполняемого посредством программируемых схем, запоминающее устройство 106 (фиг. 1) может сохранять объектный код программного обеспечения, которое видеокодер 200 принимает и выполняет, или другое запоминающее устройство в видеокодере 200 (не показано) может сохранять такие инструкции.

[0129] Запоминающее устройство 230 видеоданных выполнено с возможностью сохранять принимаемые видеоданные. Видеокодер 200 может извлекать кадр видеоданных из запоминающего устройства 230 видеоданных и предоставлять видеоданные в модуль 204 формирования остатков и модуль 202 выбора режима. Видеоданные в запоминающем устройстве 230 видеоданных могут представлять собой необработанные видеоданные, которые должны кодироваться.

[0130] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 внутреннего прогнозирования. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули, чтобы выполнять прогнозирование видео в соответствии с другими режимами прогнозирования. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может представлять собой часть модуля 222 оценки движения и/или модуля 224 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. Например, в примере по фиг. 15, модуль 226 внутреннего прогнозирования включает в себя ALWIP-модуль 227, выполненный с возможностью выполнять ALWIP.

[0131] Модуль 202 выбора режима, в общем, координирует несколько проходов кодирования, чтобы тестировать комбинации параметров кодирования и результирующих значений искажения в зависимости от скорости передачи для таких комбинаций. Параметры кодирования могут включать в себя сегментацию CTU на CU, режимы прогнозирования для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима в конечном счете может выбирать комбинацию параметров кодирования, имеющих значения искажения в зависимости от скорости передачи, которые лучше других тестированных комбинаций.

[0132] Видеокодер 200 может сегментировать кадр, извлеченный из запоминающего устройства 230 видеоданных, на последовательность CTU и инкапсулировать одну или более CTU в слайсе. Модуль 202 выбора режима может сегментировать CTU кадра в соответствии с древовидной структурой, такой как QTBT-структура или структура в виде дерева квадрантов HEVC, описанного выше. Как описано выше, видеокодер 200 может формировать одну или более CU из сегментации CTU согласно древовидной структуре. Такая CU также, в общем, может называться "видеоблоком" или "блоком".

[0133] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 внутреннего прогнозирования) таким образом, чтобы формировать блок прогнозирования для текущего блока (например, текущей CU либо, в HEVC, перекрывающейся части PU и TU). Для взаимного прогнозирования текущего блока, модуль 222 оценки движения может выполнять поиск движения для того, чтобы идентифицировать один или более тесно совпадающих опорных блоков в одном или более опорных кадров (например, в одном или более ранее кодированных кадров, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислять значение, представляющее то, насколько аналогичным является потенциальный опорный блок относительно текущего блока, например, согласно сумме абсолютных разностей (SAD), сумме квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратическим разностям (MSD) и т.п. Модуль 222 оценки движения, в общем, может выполнять эти вычисления с использованием последовательных выборочных разностей между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, получающееся в результате этих вычислений, указывающее опорный блок, который наиболее тесно совпадает с текущим блоком.

[0134] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые задают позиции опорных блоков в опорных кадрах относительно позиции текущего блока в текущем кадре. Модуль 222 оценки движения затем может предоставлять векторы движения в модуль 224 компенсации движения. Например, для однонаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять один вектор движения, тогда как для двунаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять два вектора движения. Модуль 224 компенсации движения затем может формировать блок прогнозирования с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность в дробную часть выборки, модуль 224 компенсации движения может интерполировать значения для блока прогнозирования согласно одному или более интерполяционных фильтров. Кроме того, для двунаправленного взаимного прогнозирования, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных посредством соответствующих векторов движения, и комбинировать извлеченные данные, например, посредством последовательного выборочного усреднения или усреднения со взвешиванием.

[0135] В качестве другого примера, для внутреннего прогнозирующего кодирования или внутреннего прогнозирующего кодирования, модуль 226 внутреннего прогнозирования может формировать блок прогнозирования из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 внутреннего прогнозирования, в общем, может математически комбинировать значения соседних выборок и заполнять эти вычисленные значения в заданном направлении для текущего блока для того, чтобы формировать блок прогнозирования. В качестве другого примера, для DC-режима, модуль 226 внутреннего прогнозирования может вычислять среднее соседних выборок по отношению к текущему блоку и формировать блок прогнозирования, который включает в себя это результирующее среднее для каждой выборки блока прогнозирования.

[0136] В соответствии с одним примером третьей технологии этого раскрытия сущности, модуль 226 внутреннего прогнозирования может выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока видеоданных. В этом примере, текущий блок не кодируется с использованием ALWIP. В качестве части выполнения процесса MPM-извлечения, модуль 226 внутреннего прогнозирования может определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. На основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, модуль 226 внутреннего прогнозирования может определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Модуль 226 внутреннего прогнозирования может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM. Видеокодер 200 может кодировать текущий блок на основе одного из MPM для текущего блока или другого режима внутреннего прогнозирования. Например, в качестве части кодирования текущего блока видеокодера 200, модуль 226 внутреннего прогнозирования может использовать один из MPM или другого режима внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока.

[0137] Модуль 202 выбора режима предоставляет прогнозный блок в модуль 204 формирования остатков. Модуль 204 формирования остатков принимает необработанную некодированную версию текущего блока из запоминающего устройства 230 видеоданных и прогнозный блок из модуля 202 выбора режима. Модуль 204 формирования остатков вычисляет последовательные выборочные разности между текущим блоком и прогнозным блоком. Результирующие последовательные выборочные разности задают остаточный блок для текущего блока. В некоторых примерах, модуль 204 формирования остатков также может определять разности между выборочными значениями в остаточном блоке, чтобы формировать остаточный блок с использованием остаточной дифференциальной импульсно-кодовой модуляции (RDPCM). В некоторых примерах, модуль 204 формирования остатков может формироваться с использованием одной или более схем вычитателя, которые выполняют двоичное вычитание.

[0138] В примерах, в которых CU сегментов модуля 202 выбора режима в PU, каждая PU может быть ассоциирована с 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 для взаимного прогнозирования.

[0139] В примерах, в которых модуль выбора режима дополнительно не сегментирует CU на PU, каждая CU может быть ассоциирована с блоком кодирования сигналов яркости и соответствующими блоками кодирования сигналов цветности. Как описано выше, размер CU может означать размер блока кодирования сигналов яркости CU. Видеокодер 200 и видеодекодер 300 могут поддерживать CU-размеры в 2Nx2N, 2NxN или Nx2N.

[0140] Для других технологий кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме на основе линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, через соответствующие модули, ассоциированные с технологиями кодирования, формирует прогнозный блок для кодируемого текущего блока. В некоторых примерах, таких как кодирование в палитровом режиме, модуль 202 выбора режима может не формировать блок прогнозирования и вместо этого формировать синтаксические элементы, которые указывают способ, которым следует восстанавливать блок на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы в модуль 220 энтропийного кодирования для кодирования.

[0141] Как описано выше, модуль 204 формирования остатков принимает видеоданные для текущего блока и соответствующего блока прогнозирования. Модуль 204 формирования остатков затем формирует остаточный блок для текущего блока. Чтобы формировать остаточный блок, модуль 204 формирования остатков вычисляет последовательные выборочные разности между блоком прогнозирования и текущим блоком.

[0142] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования (называется в данном документе "блоком коэффициентов преобразования"). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может применять несколько преобразований к остаточному блоку, например, первичное преобразование и вторичное преобразование, такое как вращательное преобразование. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.

[0143] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования для того, чтобы формировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования согласно значению параметра квантования (QP), ассоциированному с текущим блоком. Видеокодер 200 (например, через модуль 202 выбора режима) может регулировать степень квантования, применяемую к блокам коэффициентов преобразования, ассоциированным с текущим блоком, посредством регулирования QP-значения, ассоциированного с CU. Квантование может вводить потери информации, и в силу этого квантованные коэффициенты преобразования могут иметь меньшую точность, чем исходные коэффициенты преобразования, сформированные посредством модуля 206 обработки преобразования.

[0144] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя потенциально с определенной степенью искажения) на основе восстановленного остаточного блока и блока прогнозирования, сформированного посредством модуля 202 выбора режима. Например, модуль 214 восстановления может суммировать выборки восстановленного остаточного блока с соответствующими выборками из блока прогнозирования, сформированного посредством модуля 202 выбора режима, чтобы формировать восстановленный блок.

[0145] Модуль 216 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 216 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев CU. Операции модуля 216 фильтрации могут пропускаться в некоторых примерах.

[0146] Видеокодер 200 сохраняет восстановленные блоки в DPB 218. Например, в примерах, в которых операции модуля 312 фильтрации не выполняются, модуль 310 восстановления может сохранять восстановленные блоки в DPB 314. В примерах, в которых операции модуля 312 фильтрации выполняются, модуль 312 фильтрации может сохранять фильтрованные восстановленные блоки в DPB 314. Например, в примерах, в которых операции модуля 216 фильтрации не требуются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, в которых операции модуля 216 фильтрации требуются, модуль 216 фильтрации может сохранять фильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорный кадр из DPB 218, сформированного из восстановленных (и потенциально фильтрованных) блоков, чтобы взаимно прогнозировать блоки последующих кодированных кадров. Помимо этого, модуль 226 внутреннего прогнозирования может использовать восстановленные блоки в DPB 218 текущего кадра, чтобы внутренне прогнозировать другие блоки в текущем кадре.

[0147] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принимаемые из других функциональных компонентов видеокодера 200. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы прогнозирования (например, информацию движения для взаимного прогнозирования или информацию внутреннего режима для внутреннего прогнозирования) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования для синтаксических элементов, которые представляют собой другой пример видеоданных, чтобы формировать энтропийно кодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), CABAC-операцию, операцию кодирования переменно-переменной (V2V) длины, операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования на основе сегментирования на интервалы вероятности (PIPE), операцию экспоненциального кодирования кодом Голомба или другой тип операции энтропийного кодирования для данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в обходном режиме, в котором синтаксические элементы не подвергаются энтропийному кодированию.

[0148] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки слайса или кадра. В частности, модуль 220 энтропийного кодирования может выводить поток битов.

[0149] Операции, описанные выше, описываются относительно блока. Такое описание должно пониматься как операции для блока кодирования сигналов яркости и/или блоков кодирования сигналов цветности. Как описано выше, в некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности CU. В некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности PU.

[0150] В некоторых примерах, операции, выполняемые относительно блока кодирования сигналов яркости, не должны повторяться для блоков кодирования сигналов цветности. В качестве одного примера, операции для того, чтобы идентифицировать вектор движения (MV) и опорный кадр для блока кодирования сигналов яркости, не должны повторяться для идентификации MV и опорного кадра для блоков сигналов цветности. Наоборот, MV для блока кодирования сигналов яркости может масштабироваться с возможностью определять MV для блоков сигналов цветности, и опорный кадр может быть идентичным. В качестве другого примера, процесс внутреннего прогнозирования может быть идентичным для блоков кодирования сигналов яркости и блоков кодирования сигналов цветности.

[0151] Видеокодер 200 представляет пример устройства, выполненного с возможностью кодировать видеоданные, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью кодировать ALWIP-технологии этого раскрытия сущности. Например, видеокодер 200 может представлять пример устройства, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока видеоданных, при этом текущий блок не кодируется с использованием ALWIP. В этом примере, один или более процессоров сконфигурированы таким образом, что в качестве части выполнения процесса MPM-извлечения, один или более процессоров определяют то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. Кроме того, один или более процессоров выполнены с возможностью, на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Один или более процессоров дополнительно могут быть выполнены с возможностью включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM. Один или более процессоров могут кодировать текущий блок на основе одного из MPM для текущего блока.

[0152] Кроме того, в некоторых примерах, в которых блок представляет собой блок сигналов цветности, кодированный с помощью DM-режима, видеокодер 200 представляет пример устройства, которое включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, выполненных с возможностью определять то, кодируется ли совместно размещенный блок сигналов яркости с помощью ALWIP. В таких примерах, совместно размещенный блок сигналов яркости совместно размещается с блоком. Кроме того, в таких примерах, один или более процессоров, на основе кодирования совместно размещенного блока сигналов яркости с помощью ALWIP, могут, например, логически выводить, то, что определять, например, логически выводить, то, что режим внутреннего прогнозирования совместно размещенного блока сигналов яркости равно значению по умолчанию. Другими словами, один или более процессоров могут определять или иначе трактовать режим внутреннего прогнозирования совместно размещенного блока сигналов яркости в качестве режима внутреннего прогнозирования по умолчанию, такого как режим планарного внутреннего прогнозирования. Один или более процессоров могут быть выполнены с возможностью кодировать блок с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию.

[0153] Фиг. 16 является блок-схемой, иллюстрирующей примерный видеодекодер 300, который может выполнять технологии этого раскрытия сущности. Фиг. 16 предоставляется для целей пояснения и не представляет собой ограничение технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеодекодер 300 согласно технологиям JEM, VVC и HEVC. Тем не менее, технологии этого раскрытия сущности могут выполняться посредством устройств кодирования видео, которые сконфигурированы для других стандартов кодирования видео.

[0154] В примере по фиг. 16, видеодекодер 300 включает в себя буферное запоминающее устройство 320 кодированных кадров (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных кадров (DPB). Любое из запоминающего CPB-устройства 320, модуля 302 энтропийного декодирования, модуля 304 обработки прогнозирования, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 может реализовываться в одном или более процессоров либо в схеме обработки. Кроме того, видеодекодер 300 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.

[0155] Модуль 304 обработки прогнозирования включает в себя модуль 316 компенсации движения и модуль 318 внутреннего прогнозирования. Модуль 304 обработки прогнозирования может включать в себя дополнительные модули для того, чтобы выполнять прогнозирование в соответствии с другими режимами прогнозирования. В качестве примера, модуль 304 обработки прогнозирования может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. Например, в примере по фиг. 16, модуль 318 внутреннего прогнозирования включает в себя ALWIP-модуль 319, который выполняет ALWIP-процесс. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.

[0156] Запоминающее 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 или не на кристалле относительно этих компонентов.

[0157] Дополнительно или альтернативно, в некоторых примерах, видеодекодер 300 может извлекать кодированные видеоданные из запоминающего устройства 120 (фиг. 1). Таким образом, запоминающее устройство 120 может сохранять данные, как пояснено выше для запоминающего CPB-устройства 320. Аналогично, запоминающее устройство 120 может сохранять инструкции, которые должны выполняться посредством видеодекодера 300, когда часть или вся функциональность видеодекодера 300 реализуется в программном обеспечении для выполнения посредством схемы обработки видеодекодера 300.

[0158] Различные модули, показанные на фиг. 16, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 15, фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.

[0159] Видеодекодер 300 может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, сформированные из программируемых схем. В примерах, в которых операции видеодекодера 300 выполняются посредством программного обеспечения, выполняющегося в программируемых схемах, размещенное на кристалле или размещенное не на кристалле запоминающее устройство может сохранять инструкции (например, объектный код) программного обеспечения, которые принимает и выполняет видеодекодер 300.

[0160] Модуль 302 энтропийного декодирования может принимать кодированные видеоданные из CPB и энтропийно декодировать видеоданные, чтобы воспроизводить синтаксические элементы. Модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут формировать декодированные видеоданные на основе синтаксических элементов, извлеченных из потока битов.

[0161] В общем, видеодекодер 300 восстанавливает кадр на поблочной основе. Видеодекодер 300 может выполнять операцию восстановления для каждого блока отдельно (причем блок, в данный момент восстанавливаемый, т.е. декодируемый, может называться "текущим блоком").

[0162] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, задающие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как параметр квантования (QP) и/или индикатор(ы) режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования для того, чтобы определять степень квантования и, аналогично, степень обратного квантования для модуля 306 обратного квантования, которая должна применяться. Модуль 306 обратного квантования, например, может выполнять операцию побитового сдвига влево, чтобы обратно квантовать квантованные коэффициенты преобразования. Модуль 306 обратного квантования в силу этого может формировать блок коэффициентов преобразования, включающий в себя коэффициенты преобразования.

[0163] После того, как модуль 306 обратного квантования формирует блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов преобразования для того, чтобы формировать остаточный блок, ассоциированный с текущим блоком. Например, модуль 308 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.

[0164] Кроме того, модуль 304 обработки прогнозирования формирует блок прогнозирования согласно синтаксическим элементам с информацией прогнозирования, которые энтропийно декодированы посредством модуля 302 энтропийного декодирования. Например, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок взаимно прогнозируется, модуль 316 компенсации движения может формировать блок прогнозирования. В этом случае, синтаксические элементы с информацией прогнозирования могут указывать опорный кадр в DPB 314, из которого можно извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорном кадре относительно местоположения текущего блока в текущем кадре. Модуль 316 компенсации движения, в общем, может выполнять процесс взаимного прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 224 компенсации движения (фиг. 15).

[0165] В качестве другого примера, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок внутренне прогнозируется, модуль 318 внутреннего прогнозирования может формировать блок прогнозирования согласно режиму внутреннего прогнозирования, указываемому посредством синтаксических элементов с информацией прогнозирования. С другой стороны, модуль 318 внутреннего прогнозирования, в общем, может выполнять процесс внутреннего прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 226 внутреннего прогнозирования (фиг. 15). Модуль 318 внутреннего прогнозирования может извлекать данные соседних выборок по отношению к текущему блоку из DPB 314.

[0166] В соответствии с одним примером третьей технологии этого раскрытия сущности, модуль 318 внутреннего прогнозирования может выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока видеоданных. В этом примере, текущий блок не кодируется с использованием ALWIP. В качестве части выполнения процесса MPM-извлечения, модуль 318 внутреннего прогнозирования может определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. На основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, модуль 318 внутреннего прогнозирования может определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Модуль 318 внутреннего прогнозирования может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM. Видеодекодер 300 может декодировать текущий блок на основе одного из MPM для текущего блока или другого режима внутреннего прогнозирования. Например, в качестве части кодирования текущего блока видеодекодера 300, модуль 318 внутреннего прогнозирования может использовать один из MPM или другого режима внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока.

[0167] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока прогнозирования и остаточного блока. Например, модуль 310 восстановления может суммировать выборки остаточного блока с соответствующими выборками блока прогнозирования для того, чтобы восстанавливать текущий блок.

[0168] Модуль 312 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 312 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.

[0169] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущего кадра для внутреннего прогнозирования и ранее декодированных кадров для последующей компенсации движения, в модуль 304 обработки прогнозирования. Кроме того, видеодекодер 300 может выводить декодированные кадры из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.

[0170] Таким образом, видеодекодер 300 представляет пример устройства декодирования видео, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью выполнять ALWIP-технологии этого раскрытия сущности. Например, видеодекодер 300 может представлять пример устройства, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока видеоданных, при этом текущий блок не кодируется с использованием ALWIP. В этом примере, один или более процессоров сконфигурированы таким образом, что в качестве части выполнения процесса MPM-извлечения, один или более процессоров определяют то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок. Кроме того, один или более процессоров выполнены с возможностью, на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Один или более процессоров могут включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM. Один или более процессоров могут декодировать текущий блок на основе одного из MPM для текущего блока.

[0171] Кроме того, в некоторых примерах, в которых блок представляет собой блок сигналов цветности, кодированный с помощью DM-режима, видеокодер 200 представляет пример устройства, которое включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, выполненных с возможностью определять то, кодируется ли совместно размещенный блок сигналов яркости с помощью ALWIP. В таких примерах, совместно размещенный блок сигналов яркости совместно размещается с блоком. Кроме того, в таких примерах, один или более процессоров, на основе кодирования совместно размещенного блока сигналов яркости с помощью ALWIP, могут определять, например, логически выводить, то, что режим внутреннего прогнозирования совместно размещенного блока сигналов яркости равно значению по умолчанию. Другими словами, один или более процессоров могут определять или иначе трактовать режим внутреннего прогнозирования совместно размещенного блока сигналов яркости в качестве режима внутреннего прогнозирования по умолчанию, такого как режим планарного внутреннего прогнозирования. Один или более процессоров могут быть выполнены с возможностью декодировать блок с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию.

[0172] Фиг. 17 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока. Текущий блок может включать в себя текущую CU. Хотя описывается относительно видеокодера 200 (фиг. 1 и 15), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 17.

[0173] В этом примере, видеокодер 200 первоначально прогнозирует текущий блок (350). Например, видеокодер 200 может формировать блок прогнозирования для текущего блока. В некоторых примерах, видеокодер 200 (например, модуль 226 внутреннего прогнозирования видеокодера 200) выполняет процесс MPM-извлечения, который извлекает один или более MPM для текущего блока. В этом примере, текущий блок не кодируется с использованием ALWIP. MPM могут включать в себя режимы внутреннего прогнозирования, и, в некоторых примерах, каждый из MPM представляет собой режим внутреннего прогнозирования. Кроме того, в этом примере, в качестве части выполнения процесса MPM-извлечения, видеокодер 200 может определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок, и, на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию. Видеокодер 200 может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM. Видеокодер 200 затем может использовать один из MPM или другого режима внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока.

[0174] Видеокодер 200 затем может вычислять остаточный блок для текущего блока (352). Чтобы вычислять остаточный блок, видеокодер 200 может вычислять разность между исходным, некодированным блоком и блоком прогнозирования для текущего блока. Видеокодер 200 затем может преобразовывать и квантовать коэффициенты преобразования остаточного блока (354).

[0175] Затем, видеокодер 200 может сканировать квантованные коэффициенты преобразования остаточного блока (356). В ходе сканирования или после сканирования, видеокодер 200 может энтропийно кодировать коэффициенты преобразования (358). Например, видеокодер 200 может кодировать коэффициенты преобразования с использованием CAVLC или CABAC. Видеокодер 200 затем может выводить энтропийно кодированные данные блока (360).

[0176] Фиг. 18 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных. Текущий блок может включать в себя текущую CU. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 16), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 18.

[0177] Видеодекодер 300 может принимать энтропийно кодированные данные для текущего блока, к примеру, энтропийно кодированную информацию прогнозирования и энтропийно кодированные данные для коэффициентов преобразования остаточного блока, соответствующего текущему блоку (370). Видеодекодер 300 может энтропийно декодировать энтропийно кодированные данные для того, чтобы определять информацию прогнозирования для текущего блока и воспроизводить коэффициенты преобразования остаточного блока (372).

[0178] Видеодекодер 300 может прогнозировать текущий блок (374), например, с использованием режима внутреннего или взаимного прогнозирования, как указано посредством информации прогнозирования для текущего блока для того, чтобы вычислять блок прогнозирования для текущего блока. В некоторых примерах, видеодекодер 300 (например, модуль 318 внутреннего прогнозирования видеодекодера 300) выполняет процесс MPM-извлечения, который извлекает один или более MPM для текущего блока. В этом примере, текущий блок не кодируется с использованием ALWIP. MPM могут включать в себя режимы внутреннего прогнозирования, и, в некоторых примерах, каждый из MPM представляет собой режим внутреннего прогнозирования. Кроме того, в этом примере, в качестве части выполнения процесса MPM-извлечения, видеодекодер 300 может определять то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок, и, на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму. Видеодекодер 300 может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию (например, планарный режим), в качестве одного из одного или более MPM. Видеодекодер 300 затем может использовать один из MPM или другого режима внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока.

[0179] Видеодекодер 300 затем может обратно сканировать воспроизведенные коэффициенты преобразования (376), чтобы создавать блок квантованных коэффициентов преобразования. Видеодекодер 300 затем может обратно квантовать коэффициенты преобразования и применять одно или более обратных преобразований к коэффициентам преобразования, чтобы формировать остаточный блок (378). Видеодекодер 300 может декодировать текущий блок посредством комбинирования блока прогнозирования и остаточного блока (380).

[0180] Фиг. 19 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования видеоданных в соответствии с одной или более технологий этого раскрытия сущности. Способ по фиг. 19 может осуществляться посредством видеокодера, такой как видеокодер 200 или видеодекодер 300.

[0181] В примере по фиг. 19, видеокодер может выполнять процесс MPM-извлечения, который извлекает один или более MPM для текущего блока видеоданных (400). В некоторых примерах, модуль 226 внутреннего прогнозирования (фиг. 15) видеокодера 200 выполняет процесс MPM-извлечения. В некоторых примерах, модуль 318 внутреннего прогнозирования (фиг. 16) видеодекодера 300 выполняет процесс MPM-извлечения. В примере по фиг. 19, текущий блок не кодируется с использованием ALWIP. MPM могут включать в себя режимы внутреннего прогнозирования, и, в некоторых примерах, каждый из MPM представляет собой режим внутреннего прогнозирования. В примерах, в которых видеокодер представляет собой видеокодер (например, видеокодер 200), видеокодер может включаться в устройство (например, исходное устройство 102), которое включает в себя камеру, которая захватывает кадр, который включает в себя текущий блок.

[0182] Кроме того, в примере по фиг. 19, выполнение процесса MPM-извлечения может включать в себя определение, посредством видеокодера, того, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок (402). Соседний блок может представлять собой вышележащий соседний блок или левый соседний блок относительно текущего блока. В некоторых примерах, видеокодер может сохранять alwip_flags для блоков текущего кадра и может использовать сохраненный alwip_flags соседнего блока, чтобы определять то, кодируется ли соседний блок с использованием ALWIP.

[0183] На основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок, видеокодер может определять то, что значение режима внутреннего прогнозирования соседнего блока равно значению по умолчанию (404). Например, видеокодер может определять (например, логически выводить) значение внутреннего режима соседнего блока в качестве конкретного значения, указывающего планарный режим. Другими словами, режим внутреннего прогнозирования, соответствующий значению по умолчанию, может представлять собой планарный режим. В других примерах, режим внутреннего прогнозирования, соответствующий значению по умолчанию, может представлять собой другой режим внутреннего прогнозирования. Видеокодер затем может включать режим внутреннего прогнозирования, соответствующий значению по умолчанию, в качестве одного из одного или более MPM для текущего блока (406).

[0184] Видеокодер может кодировать текущий блок на основе одного из MPM для текущего блока (408). Например, в примерах, в которых видеокодер представляет собой видеокодер, такой как видеокодер 200, видеокодер может кодировать текущий блок на основе одного из MPM для текущего блока. В таких примерах, видеокодер может использовать MPM, чтобы формировать блок прогнозирования для текущего блока. Видеокодер затем может использовать блок прогнозирования и выборки текущего блока, чтобы формировать остаточные данные для текущего блока. Видеокодер затем может обрабатывать остаточные данные для текущего блока, как описано в другом месте в этом раскрытии сущности, например, относительно фиг. 15. В примерах, в которых видеокодер представляет собой видеодекодер, такой как видеодекодер 300, видеодекодер может декодировать текущий блок на основе одного из MPM для текущего блока. В таких примерах, видеодекодер может использовать MPM, чтобы формировать блок прогнозирования для текущего блока. Видеодекодер затем может использовать блок прогнозирования и остаточные данные для текущего блока, чтобы восстанавливать текущий блок. Кроме того, в некоторых примерах, устройство, которое включает в себя видеодекодер, может включать в себя дисплей, который отображает кадр, который включает в себя текущий блок.

[0185] Фиг. 20 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования блока сигналов цветности в соответствии с одной или более технологий этого раскрытия сущности. В примере по фиг. 20, видеокодер (например, видеокодер 200 или видеодекодер 300) может кодировать блок сигналов цветности с использованием DM-режима.

[0186] В частности, видеокодер может определять то, кодируется ли совместно размещенный блок сигналов яркости с помощью ALWIP (450). Совместно размещенный блок сигналов яркости совместно размещается с блоком сигналов цветности. На основе кодирования совместно размещенного блока сигналов яркости с помощью ALWIP, видеокодер может определять то, что значение режима внутреннего прогнозирования совместно размещенного блока сигналов яркости равно значению по умолчанию, к примеру, значение, соответствующее планарному режиму.

[0187] Видеокодер затем может кодировать блок сигналов цветности с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию (454). Например, в примерах, в которых видеокодер представляет собой видеокодер, такой как видеокодер 200, видеокодер может формировать блок прогнозирования для блока сигналов цветности с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию. Видеокодер затем может использовать блок прогнозирования и выборки блока сигналов цветности, чтобы формировать остаточные данные для блока сигналов цветности. Видеокодер затем может обрабатывать остаточные данные для блока сигналов цветности, как описано в другом месте в этом раскрытии сущности, например, в качестве относительно фиг. 15. В примерах, в которых видеокодер представляет собой видеодекодер, такой как видеодекодер 300, видеодекодер может декодировать блок сигналов цветности на основе режима внутреннего прогнозирования, соответствующего значению по умолчанию. В таких примерах, видеодекодер может использовать режим внутреннего прогнозирования, соответствующий значению по умолчанию, чтобы формировать блок прогнозирования для блока сигналов цветности. Видеодекодер затем может использовать блок прогнозирования и остаточные данные для блока сигналов цветности, чтобы восстанавливать блок сигналов цветности. Кроме того, в некоторых примерах, устройство, которое включает в себя видеодекодер, может включать в себя дисплей, который отображает кадр, который включает в себя блок сигналов цветности.

[0188] Следующие параграфы предоставляют неограничивающий набор примеров, которые задаются в соответствии с одной или более технологий этого раскрытия сущности.

[0189] Пример 1. Способ кодирования видеоданных, при этом способ содержит: определение контекста для синтаксического элемента аффинного линейного взвешенного внутреннего прогнозирования (ALWIP), который указывает то, кодируется ли текущий блок с помощью ALWIP, при этом вышележащий соседний блок определяется как недоступный для определения контекста на основе вышележащего соседнего блока, находящегося в другой единице дерева кодирования (CTU) относительно текущего блока, при этом вышележащий соседний блок представляет собой вышележащий соседний узел относительно текущего блока; и кодирование синтаксического ALWIP-элемента на основе контекста.

[0190] Пример 2. Способ кодирования видеоданных, при этом способ содержит: кодирование набора блоков видеоданных, при этом ограничение налагается на кодирование, которое деактивирует аффинное линейное взвешенное внутреннее прогнозирование (ALWIP) для тех блоков, которые имеют ширину, меньшую пороговой ширины, или высоту, меньшую пороговой высоты.

[0191] Пример 3. Способ кодирования видеоданных, при этом способ содержит: определение того, что соседний блок для текущего блока видеоданных считается недоступным, на основе соседнего блока, кодированного с помощью аффинного линейного взвешенного внутреннего прогнозирования (ALWIP), и соседнего блока, рассматриваемого при извлечении наиболее вероятных режимов (MPM) не-ALWIP-кодированного блока видеоданных; определение MPM для текущего блока на основе доступных соседних блоков; и кодирование текущего блока на основе одного из MPM.

[0192] Пример 4. Способ кодирования видеоданных, при этом способ содержит: назначение значения по умолчанию для извлечения наиболее вероятных режимов (MPM) ALWIP-блока на основе определения того, что соседний блок для текущего блока видеоданных считается недоступным на основе соседнего блока, кодированного с неаффинным линейным взвешенным внутренним прогнозированием (ALWIP), и соседнего блока, используемого при извлечении наиболее вероятных режимов (MPM) ALWIP-кодированного блока видеоданных; и использование ALWIP для того, чтобы кодировать текущий блок.

[0193] Пример 5. Способ кодирования видеоданных, при этом способ содержит: извлечение списка наиболее вероятных режимов (MPM) для аффинного линейного взвешенного внутреннего прогнозирования (ALWIP) на основе одного или более блоков в окружении текущего блока видеоданных; и использование MPM из MPM-списка, чтобы выполнять ALWIP для того, чтобы кодировать текущий блок.

[0194] Пример 6. Способ по примеру 5, в котором один или более блоков в окружении текущего блока включают в себя первый соседний блок, который является вышерасположенным и смежным с правой верхней выборкой текущего блока, и второй соседний блок, которого является левым и смежным с левой нижней выборкой текущего блока.

[0195] Пример 7. Способ, включающий в себя способы по любой комбинации одного или более примеров 1-6.

[0196] Пример 8. Способ по любому из примеров 1-7, в котором кодирование содержит декодирование.

[0197] Пример 9. Способ по любому из примеров 1-7, в котором кодирование содержит кодирование.

[0198] Пример 10. Устройство для кодирования видеоданных, причем устройство включает в себя одно или более средств для осуществления способа по любому из примеров 1-9.

[0199] Пример 11. Устройство по примеру 10, в котором одно или более средств включают в себя один или более процессоров, реализованных в схеме.

[0200] Пример 12. Устройство по любому из примеров 10 и 11, дополнительно включающее в себя запоминающее устройство, чтобы сохранять видеоданные.

[0201] Пример 13. Устройство по любому из примеров 10-12, дополнительно включающее в себя дисплей, выполненный с возможностью отображать декодированные видеоданные.

[0202] Пример 14. Устройство по примеру 10-13, при этом устройство включает в себя одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.

[0203] Пример 15. Устройство по любому из примеров 10-14, при этом устройство включает в себя видеодекодер.

[0204] Пример 16. Устройство по любому из примеров 10-15, при этом устройство включает в себя видеокодер.

[0205] Пример 17. Считываемый компьютером носитель данных, хранящий инструкции, которые при выполнении инструктируют одному или более процессоров осуществлять способ по любому из примеров 1-7.

[0206] Пример 18. Устройство для кодирования видеоданных, причем устройство включает в себя средство для осуществления способов по любому из примеров 1-7.

[0207] Следует признавать то, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.

[0208] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по считываемому компьютером носителю и выполняться посредством аппаратного модуля обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители данных, которые соответствуют материальному носителю, такие как носители данных, или среды связи, включающие в себя любую среду, которая упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальному считываемому компьютером носителю данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.

[0209] В качестве примера, а не ограничения, эти считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть считываемым компьютером носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что считываемые компьютером носители данных и носители данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число считываемых компьютером носителей.

[0210] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термины "процессор" и "схема обработки", при использовании в данном документе могут означать любую из вышеприведенных структур или любую другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может предоставляться в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут полностью реализовываться в одной или более схем, или логических элементов.

[0211] Технологии этого раскрытия сущности могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.

[0212] Выше описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.

Похожие патенты RU2816748C2

название год авторы номер документа
ОПРЕДЕЛЕНИЕ РЕЖИМА КОДИРОВАНИЯ ЦВЕТНОСТИ НА ОСНОВЕ ВНУТРИКАДРОВОГО ПРЕДСКАЗАНИЯ НА ОСНОВЕ МАТРИЦЫ 2020
  • Дэн, Чжипинь
  • Чжан, Кай
  • Чжан, Ли
  • Лю, Хунбинь
  • Сюй, Цзичжэн
RU2815738C2
СОСТАВЛЕНИЕ СПИСКА НАИБОЛЕЕ ВЕРОЯТНЫХ РЕЖИМОВ ДЛЯ МАТРИЧНОГО ВНУТРИКАДРОВОГО ПРЕДСКАЗАНИЯ 2020
  • Дэн, Чжипинь
  • Чжан, Кай
  • Чжан, Ли
  • Лю, Хунбинь
  • Сюй, Цзичжэн
RU2815175C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ИНТРА-ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2821012C2
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2020
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2777721C1
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2024
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2825882C1
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2020
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2801266C2
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2023
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2813279C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ВЗАИМОДЕЙСТВИЯ МЕЖДУ РЕЖИМОМ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ И РЕЖИМОМ БЛОЧНОЙ ДИФФЕРЕНЦИАЛЬНОЙ ИМПУЛЬСНО-КОДОВОЙ МОДУЛЯЦИИ 2020
  • Чжао Синь
  • Ли Сян
  • Чжао Лян
  • Лю Шань
RU2779825C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2800681C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ИНТРА-ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2822448C2

Иллюстрации к изобретению RU 2 816 748 C2

Реферат патента 2024 года АФФИННОЕ ЛИНЕЙНОЕ ВЗВЕШЕННОЕ ВНУТРЕННЕЕ ПРОГНОЗИРОВАНИЕ ПРИ КОДИРОВАНИИ ВИДЕО

Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Определяют контекст для синтаксического элемента аффинного линейного взвешенного внутреннего прогнозирования, ALWIP, при этом синтаксический ALWIP-элемент указывает то, кодируется ли текущий блок видеоданных с помощью ALWIP. На основе того, что вышележащий соседний блок находится в другой единице дерева кодирования, CTU, относительно текущего блока, вышележащий соседний блок определяется как недоступный для определения контекста, значение синтаксического ALWIP-элемента для вышележащего соседнего блока используется для определения упомянутого контекста. Вышележащий соседний блок представляет собой вышележащий соседний узел относительно текущего блока, а контекст для синтаксического ALWIP-элемента идентифицирует вероятности того, что бин имеет конкретные значения. Кодируют синтаксический ALWIP-элемент на основе контекста. Выполняют процесс извлечения наиболее вероятных режимов, MPM, который извлекает один или более MPM для текущего блока, при этом текущий блок не кодируется с использованием ALWIP. 3 н. и 11 з.п. ф-лы, 23 ил.

Формула изобретения RU 2 816 748 C2

1. Способ кодирования видеоданных, при этом способ содержит этапы, на которых:

- определяют контекст для синтаксического элемента аффинного линейного взвешенного внутреннего прогнозирования, ALWIP, при этом синтаксический ALWIP-элемент указывает то, кодируется ли текущий блок видеоданных с помощью ALWIP,

при этом на основе того, что вышележащий соседний блок находится в другой единице дерева кодирования, CTU, относительно текущего блока, вышележащий соседний блок определяется как недоступный для определения контекста, значение синтаксического ALWIP-элемента для вышележащего соседнего блока используется для определения упомянутого контекста,

при этом вышележащий соседний блок представляет собой вышележащий соседний узел относительно текущего блока, при этом контекст для синтаксического ALWIP-элемента идентифицирует вероятности того, что бин имеет конкретные значения;

- кодируют синтаксический ALWIP-элемент на основе контекста;

- выполняют (400) процесс извлечения наиболее вероятных режимов, MPM, который извлекает один или более MPM для текущего блока, при этом текущий блок не кодируется с использованием ALWIP, и выполнение процесса MPM-извлечения содержит этапы, на которых:

- определяют (402) то, представляет ли соседний блок относительно текущего блока собой ALWIP-кодированный соседний блок; и

- на основе того, что соседний блок представляет собой ALWIP-кодированный соседний блок:

- включают (406) режим внутреннего прогнозирования, соответствующий значению, в качестве одного из одного или более MPM, при этом упомянутое значение режима внутреннего прогнозирования, подлежащего включению, аналогично или отличается от определенного значения режима внутреннего прогнозирования; и

- кодируют (408) текущий блок на основе одного из MPM для текущего блока.

2. Способ по п. 1, в котором режим внутреннего прогнозирования, соответствующий значению по умолчанию, представляет собой планарный режим.

3. Способ по п. 1, в котором текущий блок представляет собой первый блок, второй блок видеоданных представляет собой блок сигналов цветности, кодированный с помощью прямого режима, DM, и способ дополнительно содержит этапы, на которых:

- определяют то, кодируется ли совместно размещенный блок сигналов яркости с помощью ALWIP, причем совместно размещенный блок сигналов яркости совместно размещается со вторым блоком; и

- на основе кодирования совместно размещенного блока сигналов яркости с помощью ALWIP:

- определяют то, что значение режима внутреннего прогнозирования совместно размещенного блока сигналов яркости равно упомянутому значению по умолчанию; и

- кодируют второй блок с использованием режима внутреннего прогнозирования, соответствующего значению по умолчанию.

4. Способ по п. 3, в котором режим внутреннего прогнозирования, соответствующий значению по умолчанию, представляет собой планарный режим.

5. Способ по п. 1, в котором, если ширина текущего блока превышает двукратную высоту текущего блока или высота превышает двукратную ширину, значение, равное трем, определяют в качестве контекста для синтаксического ALWIP-элемента.

6. Способ по п. 1, в котором стандарт кодирования видео налагает ограничение, которое деактивирует ALWIP для блоков, которые имеют ширину, меньшую пороговой ширины, или высоту, меньшую пороговой высоты.

7. Способ по п. 6, в котором пороговая ширина равна 8, и пороговая высота равна 8.

8. Способ по п. 1, в котором кодирование текущего блока содержит получение кодированного текущего блока или получение декодированного текущего блока.

9. Способ по п. 8, дополнительно содержащий этап, на котором отображают кадр, который включает в себя декодированный текущий блок.

10. Способ по п. 8, дополнительно содержащий этап, на котором захватывают кадр, который включает в себя текущий блок, подлежащий использованию при получении кодированного текущего блока.

11. Устройство (200) для кодирования видеоданных, при этом устройство содержит:

- средство для определения контекста для синтаксического элемента аффинного линейного взвешенного внутреннего прогнозирования, ALWIP, при этом синтаксический ALWIP-элемент указывает то, кодируется ли текущий блок (554) видеоданных с помощью ALWIP,

при этом на основе того, что вышележащий соседний блок (550) находится в другой единице дерева кодирования, CTU, относительно текущего блока, вышележащий соседний блок (550) определяется как недоступный для определения контекста, значение синтаксического ALWIP-элемента для вышележащего соседнего блока (550) используется для определения упомянутого контекста,

при этом вышележащий соседний блок (550) представляет собой вышележащего соседа текущего блока (554), при этом контекст для синтаксического ALWIP-элемента идентифицирует вероятности того, что бин имеет конкретные значения;

- средство для кодирования синтаксического ALWIP-элемента на основе контекста;

- средство для выполнения процесса извлечения наиболее вероятных режимов, MPM, который извлекает один или более MPM для текущего блока (554), при этом текущий блок не кодируется с использованием ALWIP, и средство для выполнения процесса MPM-извлечения содержит:

- средство для определения того, что соседний блок текущего блока представляет собой ALWIP-кодируемый соседний блок; и

- средство для включения, на основе того, что соседний блок представляет собой ALWIP-кодируемый соседний блок, режима внутреннего прогнозирования, соответствующего значению, в качестве одного из одного или более MPM, при этом упомянутое значение режима внутреннего прогнозирования, подлежащего включению, аналогично или отличается от определенного значения режима внутреннего прогнозирования; и

- средство для кодирования текущего блока (554) на основе одного из MPM для текущего блока (554).

12. Устройство по п. 11, в котором режим внутреннего прогнозирования, соответствующий значению по умолчанию, представляет собой планарный режим.

13. Устройство по п. 11 или 12, дополнительно содержащее средство для выполнения способа по любому из пунктов с 3 по 10.

14. Считываемый компьютером носитель данных, хранящий инструкции, которые при выполнении инструктируют одному или более процессорам выполнять способ по любому из пунктов с 1 по 10.

Документы, цитированные в отчете о поиске Патент 2024 года RU2816748C2

HELLE P
et al
Переносная печь для варки пищи и отопления в окопах, походных помещениях и т.п. 1921
  • Богач Б.И.
SU3A1
HELLE P
et al
Переносная печь для варки пищи и отопления в окопах, походных помещениях и т.п. 1921
  • Богач Б.И.
SU3A1
SASAI H
et al
Modified Context Derivation for neighboring dependency

RU 2 816 748 C2

Авторы

Рамасубрамониан, Адарш Кришнан

Ван Дер Аувера, Герт

Фам Ван, Луонг

Карчевич, Марта

Даты

2024-04-04Публикация

2020-05-06Подача