ПОЗИЦИОННО-ЗАВИСИМОЕ КОМБИНИРОВАНИЕ С ВНУТРЕННИМ ПРОГНОЗИРОВАНИЕМ С ШИРОКОУГОЛЬНЫМ ВНУТРЕННИМ ПРОГНОЗИРОВАНИЕМ
POSITION-DEPENDENT COMBINATION WITH INTERNAL PREDICTION WITH WIDE-ANGLE INTERNAL PREDICTION

Область техники, к которой относится изобретение
[0001] Данная заявка относится к кодированию и декодированию видео. В некоторых случаях, описываются системы, оборудование, способы и машиночитаемые носители для выполнения позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC) с широкоугольным внутренним прогнозированием.
Уровень техники
[0002] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые смартфоны, устройства видеоконференц-связи, устройства потоковой передачи видео и т.п. Такие устройства обеспечивают возможность обработки и вывода видеоданных для потребления. Цифровые видеоданные включают в себя большие объемы данных, чтобы удовлетворять потребности потребителей и видеопоставщиков. Например, потребители видеоданных хотят видео самого лучшего качества, с высокой точностью воспроизведения, разрешением, частотами кадров и т.п. Как результат, большой объем видеоданных, который требуется для того, чтобы удовлетворять эти требования, налагает нагрузку на сети связи и устройства, которые обрабатывают и сохраняют видеоданные.
[0003] Цифровые видеоустройства могут реализовывать технологии кодирования видео для того, чтобы сжимать видеоданные. Кодирование видео выполняется согласно одному или более стандартов кодирования видео. Например, стандарты кодирования видео включают в себя стандарт универсального кодирования видео (VVC), стандарт высокоэффективного кодирования видео (HEVC), стандарт усовершенствованного кодирования видео (AVC), MPEG-2-стандарт кодирования, часть 2 (MPEG означает "Экспертную группу по киноизображению"), в числе других. Кодирование видео, в общем, использует способы прогнозирования (например, взаимное прогнозирование, внутреннее прогнозирование и т.п.), которые используют преимущество избыточности, присутствующей в видеоизображениях или последовательностях. Важная цель технологий кодирования видео состоит в том, чтобы сжимать видеоданные в форму, которая использует более низкую скорость передачи битов при недопущении или минимизации ухудшения качества видео. В силу постоянно появляющихся совершенствующихся услуг передачи видео, требуются технологии кодирования с более высокой эффективностью кодирования.
Сущность изобретения
[0004] В данном документе описываются технологии и системы для выполнения позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC) с широкоугольными режимами для внутреннего прогнозирования. С использованием внутреннего прогнозирования, устройство кодирования (например, видеокодер и/или видеодекодер) может формировать блок прогнозирования с использованием технологий пространственного прогнозирования на основе соседних выборок из ранее кодированных соседних блоков в идентичном кинокадре. Соседние выборки могут идентифицироваться на основе конкретного используемого режима внутреннего прогнозирования, такого как планарный режим, DC-режим и/или один из нескольких режимов направленного прогнозирования (вертикальный, горизонтальный и различные угловые режимы). Режимы направленного прогнозирования типично используют направления (или углы) приблизительно от -135 градусов приблизительно до 45 градусов относительно вертикального направления из прогнозной выборки.
[0005] В эффективных видеокодерах и/или декодерах, блочная структура, используемая для указания блока прогнозирования для внутреннего прогнозирования, не ограничивается квадратом (блок является квадратным, когда ширина (w) = высота (h)). Использование прямоугольных блоков прогнозирования (w>h или w<h) позволяет повышать эффективность кодирования на основе характеристик контента. В таких прямоугольных блоках, ограничение направления внутреннего прогнозирования в пределах от -135 градусов до 45 градусов может приводить к ситуациям, когда опорные выборки, которые находятся дальше от прогнозной выборки (прогнозируемой выборки), используются для внутреннего прогнозирования, вместо более близких опорных выборок. Данное проектное решение с большой вероятностью имеет отрицательное влияние на эффективность кодирования. Должно быть более преимущественным иметь диапазон ограничений, ослабленный таким образом, что более близкие опорные выборки (например, за пределами углов от -135 до 45 градусов) могут использоваться для внутреннего прогнозирования. Например, режимы направленного прогнозирования, которые используют направления (или углы), которые меньше -135 градусов или больше 45 градусов (называются "широкоугольными режимами") относительно вертикального направления из прогнозной выборки.
[0006] PDPC может использоваться для того, чтобы модифицировать прогнозные выборки, определенные с использованием внутреннего прогнозирования. Например, с использованием PDPC, устройство кодирования (например, видеокодер и/или видеодекодер) может определять опорные выборки, которые присутствуют в одной или более линий выше и/или слева от текущего блока, и может использовать опорные выборки для того, чтобы модифицировать прогнозные выборки, определенные с использованием внутреннего прогнозирования. Модифицированные прогнозные выборки затем могут использоваться для того, чтобы кодировать или декодировать текущий блок.
[0007] Технологии и системы, описанные в данном документе, предоставляют способы для того, чтобы выполнять PDPC, когда используются режимы широкоугольного внутреннего прогнозирования. Также описываются технологии для передачи в служебных сигналах и/или декодирования ассоциированной информации. В некоторых случаях, для кодирования, видеокодер может использовать модифицированные прогнозные выборки для того, чтобы определять остаточные значения, которые передаются в служебных сигналах в видеодекодер. В некоторых случаях, для декодирования, видеодекодер может суммировать модифицированные прогнозные выборки с принимаемыми остаточными значениями для того, чтобы восстанавливать текущий блок.
[0008] Согласно, по меньшей мере, одному примеру, предоставляется способ декодирования видеоданных. Способ включает в себя получение текущего блока видеоданных и определение размера текущего блока. Способ дополнительно включает в себя определение, на основе размера текущего блока, режима широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Способ дополнительно включает в себя определение блока прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Способ дополнительно включает в себя модификацию прогнозной выборки из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Способ дополнительно включает в себя восстановление выборки текущего блока на основе модифицированной прогнозной выборки и остаточного значения.
[0009] В другом примере, предоставляется устройство для декодирования видеоданных, которое включает в себя запоминающее устройство, выполненное с возможностью сохранять один или более блоков прогнозирования, и видеодекодер, содержащий, по меньшей мере, одну из фиксированной функциональной или программируемой схемы. В некоторых примерах, видеодекодер выполнен с возможностью получать текущий блок видеоданных и определять размер текущего блока. Видеодекодер дополнительно выполнен с возможностью определять, на основе размера текущего блока, режим широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Видеодекодер дополнительно выполнен с возможностью определять блок прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Видеодекодер дополнительно выполнен с возможностью модифицировать прогнозную выборку из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Видеодекодер дополнительно выполнен с возможностью восстанавливать выборку текущего блока на основе модифицированной прогнозной выборки и остаточного значения.
[0010] В другом примере, машиночитаемый носитель хранения данных, сохраняющий инструкции, которые при выполнении инструктируют одному или более процессоров устройства для декодирования видеоданных: получать текущий блок видеоданных; определять размер текущего блока; определять, на основе размера текущего блока, режим широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока; определять блок прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования, причем блок прогнозирования включает в себя множество прогнозных выборок; модифицировать прогнозную выборку из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC), при этом модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок; и восстанавливать выборку текущего блока на основе модифицированной прогнозной выборки и остаточного значения.
[0011] В другом примере, предоставляется устройство для декодирования видеоданных. Устройство включает в себя средство для получения текущего блока видеоданных и средство для определения размера текущего блока. Устройство дополнительно включает в себя средство для определения, на основе размера текущего блока, режима широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Устройство дополнительно включает в себя средство для определения блока прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Устройство дополнительно включает в себя средство для модификации прогнозной выборки из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Устройство дополнительно включает в себя средство для восстановления выборки текущего блока на основе модифицированной прогнозной выборки и остаточного значения.
[0012] В другом примере, предоставляется способ кодирования видеоданных. Способ включает в себя получение текущего блока видеоданных и определение размера текущего блока. Способ дополнительно включает в себя определение, на основе размера текущего блока, режима широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Способ дополнительно включает в себя определение блока прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Способ дополнительно включает в себя модификацию прогнозной выборки из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Способ дополнительно включает в себя определение остаточного значения для остаточного блока на основе модифицированной прогнозной выборки и выборочного значения в текущем блоке и передачу в служебных сигналах информации, указывающей остаточное значение.
[0013] В другом примере, предоставляется устройство для кодирования видеоданных, которое включает в себя запоминающее устройство, выполненное с возможностью сохранять один или более блоков прогнозирования, и видеокодер, содержащий, по меньшей мере, одну из фиксированной функциональной или программируемой схемы. В некоторых примерах, видеокодер выполнен с возможностью получать текущий блок видеоданных и определять размер текущего блока. Видеокодер дополнительно выполнен с возможностью определять, на основе размера текущего блока, режим широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Видеокодер дополнительно выполнен с возможностью определять блок прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Видеокодер дополнительно выполнен с возможностью модифицировать прогнозную выборку из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Видеокодер дополнительно выполнен с возможностью определять остаточное значение для остаточного блока на основе модифицированной прогнозной выборки и выборочного значения в текущем блоке. Видеокодер дополнительно выполнен с возможностью передавать в служебных сигналах информацию, указывающую остаточное значение.
[0014] В другом примере, машиночитаемый носитель хранения данных, сохраняющий инструкции, которые при выполнении инструктируют одному или более процессоров устройства для кодирования видеоданных: получать текущий блок видеоданных; определять размер текущего блока; определять, на основе размера текущего блока, режим широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока; определять блок прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования, причем блок прогнозирования включает в себя множество прогнозных выборок; модифицировать прогнозную выборку из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC), при этом модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок; определение остаточного значения для остаточного блока на основе модифицированной прогнозной выборки и выборочного значения в текущем блоке; и передачу в служебных сигналах информации, указывающей остаточное значение.
[0015] В другом примере, предоставляется устройство для кодирования видеоданных. Устройство включает в себя средство для получения текущего блока видеоданных и средство для определения размера текущего блока. Устройство дополнительно включает в себя средство для определения, на основе размера текущего блока, режима широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Устройство дополнительно включает в себя средство для определения блока прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Устройство дополнительно включает в себя средство для модификации прогнозной выборки из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Модификация прогнозной выборки содержит: определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования; и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Устройство дополнительно включает в себя средство для определения остаточного значения для остаточного блока на основе модифицированной прогнозной выборки и выборочного значения в текущем блоке. Устройство дополнительно включает в себя средство для передачи в служебных сигналах информации, указывающей остаточное значение.
[0016] В некоторых аспектах, определение размера текущего блока включает в себя определение того, что ширина блока и высота блока представляют собой различные размеры.
[0017] В некоторых аспектах, одна или более опорных выборок, которые являются внешними для текущего блока, определяются с использованием угла режима широкоугольного внутреннего прогнозирования относительно прогнозной выборки. В некоторых примерах, угол режима широкоугольного внутреннего прогнозирования составляет меньше -135 градусов или больше 45 градусов относительно прогнозной выборки.
[0018] В некоторых аспектах, способы, устройства и машиночитаемые носители, описанные выше, могут содержать определение одного или более весовых коэффициентов на основе координат X и Y прогнозной выборки. В таких аспектах, модификация прогнозной выборки содержит модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок, определенного одного или более весовых коэффициентов и прогнозной выборки.
[0019] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит определение одной или более опорных выборок, имеющих и координату X и координату Y, которые отличаются от соответствующих координаты X и координаты Y прогнозной выборки в блоке прогнозирования.
[0020] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит: определение строки, которая находится выше текущего блока; определение координаты X в определенной строке, при этом координата X в определенной строке равна координате X прогнозной выборки плюс координата Y прогнозной выборки плюс 1; и определение опорной выборки из одной или более опорных выборок на основе определенной строки и определенной координаты X.
[0021] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит: определение столбца, который находится слева от текущего блока; определение координаты Y в определенном столбце, при этом координата Y в определенном столбце равна координате Y прогнозной выборки плюс координата X прогнозной выборки плюс 1; и определение опорной выборки из одной или более опорных выборок на основе определенного столбца и определенной координаты Y.
[0022] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит: определение строки, которая находится выше текущего блока; определение координаты X в определенной строке, при этом координата X в определенной строке основана на углу режима широкоугольного внутреннего прогнозирования относительно прогнозной выборки; и определение опорной выборки из одной или более опорных выборок на основе определенной строки и определенной координаты X. В некоторых случаях, определение координаты X в определенной строке содержит: определение одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования; и определение координаты X в определенной строке на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки.
[0023] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит: определение столбца, который находится слева от текущего блока; определение координаты Y в определенном столбце, при этом координата Y в определенном столбце основана на углу режима широкоугольного внутреннего прогнозирования; и определение опорной выборки из одной или более опорных выборок на основе определенного столбца и определенной координаты Y. В некоторых случаях, определение координаты Y в определенном столбце содержит: определение одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования; и определение координаты Y в определенном столбце на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки.
[0024] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования содержит: определение набора из одной или более выборок на основе режима широкоугольного внутреннего прогнозирования; и, по меньшей мере, одно из интерполяции, округления со смещением или округления без смещения набора из одной или более выборок для того, чтобы формировать одну или более опорных выборок.
[0025] В некоторых аспектах, определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования содержит: определение того, что одна или более выборок, внешних для текущего блока, идентифицированного на основе режима широкоугольного внутреннего прогнозирования, не сохраняются в опорном линейном буфере; и определение одной или более опорных выборок на основе последней опорной выборки, сохраненной в опорном линейном буфере.
[0026] В некоторых аспектах, модификация прогнозной выборки из множества прогнозных выборок блока прогнозирования содержит модификацию первой прогнозной выборки блока прогнозирования. В таких аспектах, одна или более опорных выборок содержат первый набор из одной или более опорных выборок. В таких аспектах, способы, устройства и машиночитаемые носители, описанные выше, могут содержать: определение, для второй прогнозной выборки блока прогнозирования, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере; и одно из неприменения PDPC ко второй прогнозной выборке или применения PDPC только с использованием опорных выборок, доступных в опорном линейном буфере.
[0027] В некоторых аспектах, режим широкоугольного внутреннего прогнозирования не представляет собой режим DC-, планарного, горизонтального или вертикального внутреннего прогнозирования.
[0028] В некоторых аспектах, устройство для декодирования видеоданных содержит дисплей, выполненный с возможностью отображать текущий блок. В некоторых аспектах, устройство для декодирования видео содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.
[0029] В некоторых аспектах, устройство для кодирования видеоданных содержит дисплей, выполненный с возможностью отображать текущий блок. В некоторых аспектах, устройство для кодирования видео содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.
[0030] Эта сущность не имеет намерением ни то, чтобы идентифицировать ключевые или существенные признаки заявленного предмета изобретения, ни то, чтобы использоваться изолированно таким образом, что она определяет объем заявленного предмета изобретения. Предмет изобретения должен пониматься со ссылкой на соответствующие части всего подробного описания этого патента, любых чертежей и каждого пункта формулы изобретения.
[0031] Вышеприведенные, наряду с другими признаками и вариантами осуществления, должны становиться очевидными после прочтения нижеприведенного подробного описания, формулы изобретения и прилагаемых чертежей.
Краткое описание чертежей
[0032] Ниже подробно описываются иллюстративные варианты осуществления настоящей заявки со ссылкой на следующие чертежи:
[0033] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, выполненную с возможностью реализовывать технологии раскрытия сущности;
[0034] Фиг. 2A и 2B являются концептуальными схемами, иллюстрирующими примеры весовых коэффициентов позиционно-зависимого комбинирования с (внутренним) прогнозированием (PDPC) в DC-режиме для прогнозных выборочных позиций в блоке 4×4, в соответствии с некоторыми примерами;
[0035] Фиг. 3 является концептуальной схемой, иллюстрирующей примеры угловых режимов внутреннего прогнозирования, в соответствии с некоторыми примерами;
[0036] Фиг. 4A является концептуальной схемой, иллюстрирующей пример режима вверх и вправо по диагонали, в соответствии с некоторыми примерами;
[0037] Фиг. 4B является концептуальной схемой, иллюстрирующей пример режима вниз и влево по диагонали, в соответствии с некоторыми примерами;
[0038] Фиг. 4C является концептуальной схемой, иллюстрирующей пример смежного режима вверх и вправо по диагонали, в соответствии с некоторыми примерами;
[0039] Фиг. 4D является концептуальной схемой, иллюстрирующей пример смежного режима вниз и влево по диагонали, в соответствии с некоторыми примерами;
[0040] Фиг. 5 является концептуальной схемой, иллюстрирующей пример режима направленного внутреннего прогнозирования, в соответствии с некоторыми примерами;
[0041] Фиг. 6 является концептуальной схемой, иллюстрирующей примеры режимов направленного внутреннего прогнозирования, включающих в себя широкоугольные режимы, в соответствии с некоторыми примерами;
[0042] Фиг. 7 является концептуальной схемой, иллюстрирующей пример режима внутреннего прогнозирования с использованием широкоугольного режима и PDPC, при этом PDPC выполняется с использованием широкоугольного режима, в соответствии с некоторыми примерами;
[0043] Фиг. 8 является концептуальной схемой, иллюстрирующей другой пример режима внутреннего прогнозирования с использованием широкоугольного режима и PDPC, при этом PDPC выполняется с использованием широкоугольного режима, в соответствии с некоторыми примерами;
[0044] Фиг. 9 является блок-схемой последовательности операций способа, иллюстрирующей пример процесса для декодирования видеоданных, в соответствии с некоторыми примерами;
[0045] Фиг. 10 является блок-схемой последовательности операций способа, иллюстрирующей пример процесса для кодирования видеоданных, в соответствии с некоторыми примерами; и
[0046] Фиг. 11 является блок-схемой, иллюстрирующей пример видеокодера, в соответствии с некоторыми примерами; и
[0047] Фиг. 12 является блок-схемой, иллюстрирующей пример видеодекодера, в соответствии с некоторыми примерами.
Подробное описание изобретения
[0048] Ниже предоставляются конкретные аспекты и варианты осуществления этого раскрытия сущности. Некоторые из этих аспектов и вариантов осуществления могут применяться независимо, и некоторые из них могут применяться в комбинации, как должно быть очевидным для специалистов в данной области техники. В нижеприведенном описании, для целей пояснения, конкретные подробности изложены для того, чтобы предоставлять полное понимание вариантов осуществления заявки. Тем не менее, должно быть очевидным то, что различные варианты осуществления могут осуществляться на практике без этих конкретных подробностей. Чертежи и описание не имеют намерение быть ограничивающими.
[0049] Нижеприведенное описание предоставляет только примерные варианты осуществления и не имеет намерение ограничивать объем, применимость или конфигурацию раскрытия сущности. Наоборот, нижеприведенное описание примерных вариантов осуществления должно предоставлять специалистам в данной области техники достаточное описание для реализации примерного варианта осуществления. Следует понимать, что различные изменения могут вноситься в функцию и компоновку элементов без отступления от сущности и объема заявки, изложенной в прилагаемой формуле изобретения.
[0050] Устройства кодирования видео (также называемые "видеокодерами") реализуют технологии сжатия видео для того, чтобы эффективно кодировать и декодировать видеоданные. Технологии сжатия видео могут включать в себя применение различных режимов прогнозирования, включающих в себя пространственное прогнозирование (например, внутрикадровое прогнозирование или внутреннее прогнозирование), временное прогнозирование (например, межкадровое прогнозирование или взаимное прогнозирование), межслойное прогнозирование (между различными слоями видеоданных) и/или другие технологии прогнозирования для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Видеокодер может сегментировать каждый кинокадр исходной видеопоследовательности на прямоугольные области, называемые "видеоблоками" или "единицами кодирования" (подробнее описываются ниже). Эти видеоблоки могут кодироваться с использованием конкретного режима прогнозирования.
[0051] Видеоблоки могут разделяться одним или более способов на одну или более групп меньших блоков. Блоки могут включать в себя блоки дерева кодирования, блоки прогнозирования, блоки преобразования и/или другие подходящие блоки. Ссылки, в общем, на "блок", если не указано иное, могут ссылаться на такие видеоблоки (например, блоки дерева кодирования, блоки кодирования, блоки прогнозирования, блоки преобразования или другие соответствующие блоки или субблоки, как должны понимать специалисты в данной области техники). Дополнительно, каждый из этих блоков также может взаимозаменяемо называться в данном документе "единицами" (например, "единица дерева кодирования (CTU)", "единица кодирования", "единица прогнозирования (PU)", "единица преобразования (TU)" и т.п.). В некоторых случаях, единица может указывать логическую единицу кодирования, которая кодируется в потоке битов, в то время как блок может указывать часть буфера видеокадров, для которой процесс является целью.
[0052] Для режимов взаимного прогнозирования, видеокодер может выполнять поиск блока, аналогичного блоку, кодируемому в кадре (или кинокадре), расположенном в другом временном местоположении, называемом "опорным кадром" или "опорным кинокадром". Видеокодер может ограничивать поиск определенным пространственным смещением от блока, который должен кодироваться. Наилучшее совпадение может находиться с использованием двумерного вектора движения, который включает в себя горизонтальный компонент смещения и вертикальный компонент смещения. Для режимов внутреннего прогнозирования, видеокодер может формировать прогнозированный блок с использованием технологий пространственного прогнозирования на основе данных из ранее кодированных соседних блоков в идентичном кинокадре.
[0053] Видеокодер может определять ошибку прогнозирования. Например, прогнозирование может определяться в качестве разности между пиксельными значениями (или выборочными значениями) в кодируемом блоке и прогнозированном блоке. Ошибка прогнозирования также может называться "остатком". Видеокодер также может применять преобразование к ошибке прогнозирования (например, дискретное косинусное преобразование (DCT) или другое подходящее преобразование) для того, чтобы формировать коэффициенты преобразования. После преобразования, видеокодер может квантовать коэффициенты преобразования. Квантованные коэффициенты преобразования и векторы движения могут представляться с использованием синтаксических элементов и, наряду с управляющей информацией, формировать кодированное представление видеопоследовательности. В некоторых случаях, видеокодер может энтропийно кодировать синтаксические элементы, за счет этого дополнительно уменьшая число битов, необходимых для их представления.
[0054] Видеодекодер, с использованием синтаксических элементов и управляющей информации, поясненной выше, может конструировать прогнозирующие данные (например, прогнозирующий блок) для декодирования текущего кадра. Например, видеодекодер может суммировать прогнозированный блок и сжатую ошибку прогнозирования. Видеодекодер может определять сжатую ошибку прогнозирования посредством взвешивания базисных функций преобразования с использованием квантованных коэффициентов. Разность между восстановленным кадром и исходным кадром называется "ошибкой восстановления".
[0055] Это раскрытие сущности описывает системы и технологии для кодирования одной или более выборок и/или блоков видеоданных с использованием внутреннего прогнозирования и позиционно-зависимого комбинирования с (внутренним) прогнозированием (PDPC). Например, режим широкоугольного внутреннего прогнозирования может выполняться для того, чтобы формировать блок прогнозирования прогнозных выборок. Режимы широкоугольного внутреннего прогнозирования используют углы за пределами стандартных углов от -135 градусов (режим 2 внутреннего прогнозирования) до 45 градусов (режим 66 внутреннего прогнозирования) и могут использовать углы, которые меньше -135 градусов, и/или углы, которые больше 45 градусов относительно вертикального направления из прогнозной выборки. Системы и технологии, предоставленные в настоящем документе, расширяют использование PDPC на такие режимы широкоугольного внутреннего прогнозирования, с тем чтобы определять опорные выборки, которые используются для того, чтобы модифицировать прогнозные выборки блока прогнозирования.
[0056] Системы и технологии, описанные в данном документе, вводят улучшение по эффективности сжатия, в общем, при кодировании выборки и/или блока видеоданных. Например, эффективность сжатия предоставляется посредством выполнения PDPC-подхода, который использует широкоугольные режимы, частично вследствие опорных выборок, которые находятся ближе к прогнозной выборке, используемой для PDPC. Эффективность сжатия, в общем, представляет собой требуемую цель при совершенствовании уровня существующих технологий кодирования видео.
[0057] При использовании в этом раскрытии сущности, термин "кодирование видео" обобщенно означает либо кодирование видео, либо декодирование видео. Аналогично, термин "видеокодер" может обобщенно означать видеокодер, видеодекодер или комбинированный видеокодер-декодер (кодек). Кроме того, определенные технологии, описанные в этом раскрытии сущности относительно декодирования видео, также могут применяться к кодированию видео, и наоборот. Например, видеокодеры и видеодекодеры могут быть выполнены с возможностью выполнять идентичный процесс или взаимообратные процессы. Кроме того, видеокодеры типично выполняют декодирование видео в качестве части процессов определения того, как кодировать видеоданные. Таким образом, если не указано иное, не следует предполагать, что технология, описанная относительно декодирования видео, не может также выполняться в качестве части кодирования видео, или наоборот.
[0058] Это раскрытие сущности также может использовать такие термины, как "текущий слой", "текущий блок", "текущий кинокадр", "текущий срез" и т.д. В контексте этого раскрытия сущности, термин "текущий" имеет намерение идентифицировать блок, кинокадр, срез и т.д., который в данный момент кодируется, например, в отличие от ранее или уже кодированных блоков, кинокадров и срезов либо подлежащих кодированию блоков, кинокадров и срезов.
[0059] Технологии, описанные в данном документе, могут применяться к любому из существующих видеокодеков (например, по стандарту высокоэффективного кодирования видео (HEVC), стандарту усовершенствованного кодирования видео (AVC) или к другому подходящему существующему видеокодеку) и/или могут представлять собой эффективное инструментальное средство кодирования для любых разрабатываемых стандартов кодирования видео и/или будущих стандартов кодирования видео, таких как, например, стандарт универсального кодирования видео (VVC), стандарт объединенной исследовательской группы по тестовой модели (JEM) и/или другой стандарт кодирования видео, разрабатываемый или подлежащий разработке. Хотя примеры предоставляются в данном документе с использованием кодирования видео в качестве иллюстрации, в некоторых случаях, технологии, описанные в данном документе, могут выполняться с использованием любого устройства кодирования, такого как кодер изображений (например, JPEG-кодер и/или декодер и т.п.), видеокодер (например, видеокодер и/или видеодекодер) или другое подходящее устройство кодирования.
[0060] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать технологии этого раскрытия сущности для кодирования одной или более выборок и/или блоков видеоданных. В некоторых примерах, система 10 кодирования и декодирования видео может кодировать видеоданные с использованием PDPC-подхода, когда несколько опорных линий используются для формирования внутренне кодированных прогнозных выборок и/или для формирования опорных PDPC-выборок, используемых для модификации внутренне кодированных прогнозных выборок. MRL-режим включает в себя использование нескольких опорных линий, которые находятся в окружении текущего блока.
[0061] Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое предоставляет кодированные видеоданные, которые должны декодироваться впоследствии посредством целевого устройства 14. В частности, исходное устройство 12 предоставляет видеоданные в целевое устройство 14 через машиночитаемый носитель 16. Исходное устройство 12 и целевое устройство 14 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, так называемые смартфоны, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео и т.п. В некоторых случаях, исходное устройство 12 и целевое устройство 14 могут быть оснащены возможностями беспроводной связи. Таким образом, исходное устройство 12 и целевое устройство 14 могут представлять собой устройства беспроводной связи. Исходное устройство 12 представляет собой примерное устройство кодирования видео (т.е. устройство для кодирования видеоданных). Целевое устройство 14 представляет собой примерное устройство декодирования видео (например, устройство или оборудование для декодирования видеоданных).
[0062] В примере по фиг. 1, исходное устройство 12 включает в себя видеоисточник 18, носители 20 хранения данных, выполненные с возможностью сохранять видеоданные, видеокодер 22 и интерфейс 24 вывода. Целевое устройство 14 включает в себя интерфейс 26 ввода, носители 28 хранения данных, выполненные с возможностью сохранять кодированные видеоданные, видеодекодер 30 и устройство 32 отображения. В других примерах, исходное устройство 12 и целевое устройство 14 включают в себя другие компоненты или компоновки. Например, исходное устройство 12 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 14 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.
[0063] Проиллюстрированная система 10 по фиг. 1 представляет собой просто один пример. Технологии для обработки видеоданных могут выполняться посредством любого устройства или оборудования кодирования и/или декодирования цифрового видео. Хотя, в общем, технологии этого раскрытия сущности выполняются посредством устройства кодирования видео и устройства декодирования видео, технологии также могут выполняться посредством видеокодера/декодера, типично называемого "кодеком". Исходное устройство 12 и целевое устройство 14 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 14. В некоторых примерах, исходное устройство 12 и целевое устройство 14 работают практически симметрично таким образом, что каждое из исходного устройства 12 и целевого устройства 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между исходным устройством 12 и целевым устройством 14, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0064] Видеоисточник 18 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или интерфейс прямых видеотрансляций для того, чтобы принимать видеоданные от поставщика видеконтента. В качестве дополнительной альтернативы, видеоисточник 18 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. Исходное устройство 12 может содержать один или более носителей хранения данных (например, носителей 20 хранения данных), выполненных с возможностью сохранять видеоданные. Технологии, описанные в этом раскрытии сущности, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения. В каждом случае, захваченное, предварительно захваченное или машиногенерируемое видео может кодироваться посредством видеокодера 22. Интерфейс 24 вывода может выводить кодированную видеоинформацию в машиночитаемый носитель 16.
[0065] Целевое устройство 14 может принимать кодированные видеоданные, которые должны декодироваться, через машиночитаемый носитель 16. Машиночитаемый носитель 16 может содержать любой тип носителя или устройства, допускающего перемещение кодированных видеоданных из исходного устройства 12 в целевое устройство 14. В некоторых примерах, машиночитаемый носитель 16 содержит среду связи для того, чтобы обеспечивать возможность исходному устройству 12 передавать кодированные видеоданные непосредственно в целевое устройство 14 в реальном времени. Кодированные видеоданные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и передаваться в целевое устройство 14. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать связь из исходного устройства 12 в целевое устройство 14. Целевое устройство 14 может содержать один или более носителей хранения данных, выполненных с возможностью сохранять кодированные видеоданные и декодированные видеоданные.
[0066] В некоторых примерах, кодированные данные (например, кодированные видеоданные) могут выводиться из интерфейса 24 вывода в устройство хранения данных. Аналогично, к кодированным данным может осуществляться доступ из устройства хранения данных посредством интерфейса 26 ввода. Устройство хранения данных может включать в себя любые из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных. В дополнительном примере, устройство хранения данных может соответствовать файловому серверу или другому промежуточному устройству хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 12. Целевое устройство 14 может осуществлять доступ к сохраненным видеоданным из устройства хранения данных, например, через потоковую передачу или загрузку. Файловый сервер может представлять собой любой тип сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Целевое устройство 14 может осуществлять доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, DSL, кабельный модем и т.д.), либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из устройства хранения данных может представлять собой потоковую передачу, передачу на основе загрузки либо комбинацию вышеозначенного.
[0067] Технологии этого раскрытия сущности могут применяться к кодированию видео в поддержку любых из множества мультимедийных вариантов применения, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как технологии адаптивной потоковой передачи, включающие в себя динамическую адаптивную потоковую передачу по HTTP (DASH), цифровое видео, которое кодируется на носитель хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие варианты применения. В некоторых примерах, система 10 может быть выполнена с возможностью поддерживать одностороннюю или двустороннюю передачу видео для того, чтобы поддерживать такие варианты применения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[0068] Машиночитаемый носитель 16 может включать в себя энергозависимые носители, такие как беспроводная широковещательная передача или проводная сетевая передача, либо носители хранения данных (т.е. энергонезависимые носители хранения данных), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, Blu-Ray-диск или другие машиночитаемые носители. В некоторых примерах, сетевой сервер (не показан) может принимать кодированные видеоданные из исходного устройства 12 и предоставлять кодированные видеоданные в целевое устройство 14, например, через сетевую передачу. Аналогично, вычислительное устройство оборудования для изготовления носителей, такого как оборудование для штамповки дисков, может принимать кодированные видеоданные из исходного устройства 12 и изготавливать диск, содержащий кодированные видеоданные. Следовательно, можно понимать, что машиночитаемый носитель 16 включает в себя один или более машиночитаемых носителей различных форм, в различных примерах.
[0069] Интерфейс 26 ввода целевого устройства 14 принимает информацию из машиночитаемого носителя 16. Информация машиночитаемого носителя 16 может включать в себя синтаксическую информацию, заданную посредством видеокодера 22 видеокодера 22, которая также используется посредством видеодекодера 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например, групп кинокадров (GOP). Носители 28 хранения данных могут сохранять кодированные видеоданные, принимаемые посредством интерфейса 26 ввода. Устройство 32 отображения отображает декодированные видеоданные пользователю. Устройство 32 отображения может содержать любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0070] Видеокодер 22 и модуль 30 видеодекодера могут реализовываться как любая из множества надлежащих схем кодера или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и может выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 22 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0071] В некоторых примерах, видеокодер 22 и видеодекодер 30 могут работать согласно стандарту кодирования видео. Примерные стандарты кодирования видео включают в себя, но не только ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC). Стандарт кодирования видео "стандарт высокоэффективного кодирования видео (HEVC)" или "ITU-T H.265", включающий в себя его расширения для кодирования диапазона и экранного контента, кодирование трехмерного видео (3D-HEVC) и многовидовые расширения (MV-HEVC) и масштабируемое расширение (SHVC), разработан посредством Объединенной группы для совместной работы над видеостандартами (JCT-VC) Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC. Последняя проектная HEVC-спецификация, называемая "HEVC WD" в дальнейшем в этом документе, доступна по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.
[0072] Видеокодер 22 и видеодекодер 30 также могут работать в соответствии с другими собственными или отраслевыми стандартами, такими как стандарт объединенной исследовательской группы по тестовой модели (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-v5 (далее "VVC-проект 4"). Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования.
L
Cb
Cr
L
Cb
Cr
[0073] В HEVC, VVC и других спецификациях кодирования видео, видеопоследовательность типично включает в себя последовательность кинокадров. Кинокадры также могут называться "кадрами". Кинокадр может включать в себя три массива выборок, обозначаемых как S, S и S. S представляет собой двумерный массив (т.е. блок) выборок сигнала яркости. S представляет собой двумерный массив выборок Cb-цветности. S представляет собой двумерный массив выборок Cr-цветности. Выборки цветности также могут называться в данном документе "выборками сигнала цветности". Пиксел может означать все три компонента (выборки сигнала яркости и сигнала цветности) для данного местоположения в массиве кинокадра. В других случаях, кинокадр может быть монохромным и может включать в себя только массив выборок сигнала яркости, причем в этом случае термины "пиксел" и "выборка" могут использоваться взаимозаменяемо.
[0074] Кроме того, в HEVC и других спецификациях кодирования видео, для того, чтобы формировать кодированное представление кинокадра, видеокодер 22 может формировать набор единиц дерева кодирования (CTU). Каждая из CTU может содержать блок дерева кодирования выборок сигнала яркости, два соответствующих блока дерева кодирования выборок сигнала цветности и синтаксические структуры, используемые для того, чтобы кодировать выборки блоков дерева кодирования. В монохромных кинокадрах или кинокадрах, имеющих три отдельных цветовых плоскости, CTU может содержать один блок дерева кодирования и синтаксические структуры, используемые для того, чтобы кодировать выборки блока дерева кодирования. Блок дерева кодирования может представлять собой блок NxN выборок. CTU также может называться "древовидным блоком" или "наибольшей единицей кодирования (LCU)". CTU HEVC в широком смысле могут быть аналогичными макроблокам других стандартов, таких как H.264/AVC. Тем не менее, CTU не обязательно ограничивается конкретным размером и может включать в себя одну или более единиц кодирования (CU). Срез может включать в себя целое число CTU, упорядоченных последовательно в порядке растрового сканирования.
[0075] При работе согласно HEVC, для того, чтобы формировать кодированную CTU, видеокодер 22 может рекурсивно выполнять сегментацию на дерево квадрантов для блоков дерева кодирования CTU для того, чтобы разделять блоки дерева кодирования на блоки кодирования, отсюда имя "единицы дерева кодирования". Блок кодирования представляет собой блок NxN выборок. CU может содержать блок кодирования выборок сигнала яркости и два соответствующих блока кодирования выборок сигнала цветности кинокадра, который имеет массив выборок сигнала яркости, массив Cb-выборок и массив Cr-выборок, и синтаксические структуры, используемые для того, чтобы кодировать выборки блоков кодирования. В монохромных кинокадрах или кинокадрах, имеющих три отдельных цветовых плоскости, CU может содержать один блок кодирования и синтаксические структуры, используемые для того, чтобы кодировать выборки блока кодирования.
[0076] Синтаксические данные в потоке битов также могут задавать размер для CTU. Срез включает в себя определенное число последовательных CTU в порядке кодирования. Видеокадр или кинокадр может сегментироваться на один или более срезов. Как упомянуто выше, каждый древовидный блок может разбиваться на CU согласно дереву квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует древовидному блоку. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре узла-листа, каждый из которых соответствует одной из суб-CU.
[0077] Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий то, разбивается или нет CU, соответствующая узлу, на суб-CU. Синтаксические элементы для CU могут задаваться рекурсивно и могут зависеть от того, разбивается или нет CU на суб-CU. Если CU не разбивается дополнительно, он называется "CU-листом". Если блок CU разбивается дополнительно, он, в общем, может называться "CU-нелистом". В некоторых примерах этого раскрытия сущности, четыре суб-CU CU-листа могут называться "CU-листьями", даже если отсутствует явное разбиение исходного CU-листа. Например, если CU с размером 16×16 не разбивается дополнительно, четыре суб-CU 8×8 также могут называться "CU-листьями", хотя CU 16×16 никогда не разбивается.
[0078] CU имеет назначение, аналогичное назначению макроблока стандарта H.264, за исключением того, что CU не имеет различения размера. Например, древовидный блок может разбиваться на четыре дочерних узла (также называемые "суб-CU"), и каждый дочерний узел, в свою очередь, может представлять собой родительский узел и разбиваться еще на четыре дочерних узла. Конечный неразбиваемый дочерний узел, называемый "узлом-листом дерева квадрантов", содержит узел кодирования, также называемый "CU-листом". Синтаксические данные, ассоциированные с кодированным потоком битов, могут задавать максимальное число раз, которое может разбиваться древовидный блок, называемое "максимальной CU-глубиной", и также могут задавать минимальный размер узлов кодирования. Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU). Это раскрытие сущности использует термин "блок" для того, чтобы ссылаться на любое из CU, PU или TU в контексте HEVC, или аналогичные структуры данных в контексте других стандартов (например, макроблоки и их субблоки в H.264/AVC).
[0079] CU включает в себя узел кодирования, а также единицы прогнозирования (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и, в некоторых примерах, может иметь квадратную форму. В примере HEVC, размер CU может колебаться от 8×8 пикселов вплоть до размера древовидного блока максимум с 64×64 пикселов или больше. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, сегментацию CU на одну или более PU. Режимы сегментации могут отличаться между тем, CU кодируется в режиме пропуска или прямом режиме, кодируется в режиме внутреннего прогнозирования или кодируется в режиме взаимного прогнозирования. PU могут сегментироваться таким образом, что они имеют неквадратную форму. Синтаксические данные, ассоциированные с CU, также могут описывать, например, сегментацию CU на одну или более TU согласно дереву квадрантов. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[0080] HEVC-стандарт предоставляет возможность преобразований согласно TU. TU могут отличаться для различных CU. Размеры NU типично задаются на основе размера PU в данной CU, заданного для сегментированной LCU, хотя это может не всегда иметь место. TU типично имеет идентичный размер или меньше по сравнению с PU. В некоторых примерах, остаточные выборки, соответствующие CU, могут подразделяться на меньшие единицы с использованием структуры в виде дерева квадрантов, иногда называемой "остаточным деревом квадрантов" (RQT). Узлы-листья RQT могут называться "TU". Значения пиксельных разностей, ассоциированные с TU, могут преобразовываться, с тем чтобы формировать коэффициенты преобразования, которые могут квантоваться.
[0081] CU-лист может включать в себя одну или более PU. В общем, PU представляет пространственную область, соответствующую всей или части соответствующей CU, и может включать в себя данные для извлечения опорной выборки для PU. Кроме того, PU включает в себя данные, связанные с прогнозированием. Например, когда PU кодируется во внутреннем режиме, данные для PU могут быть включены в RQT, которое может включать в себя данные, описывающие режим внутреннего прогнозирования для TU, соответствующей PU. В качестве другого примера, когда PU кодируется во взаимном режиме, PU может включать в себя данные, задающие один или более векторов движения для PU. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорный кинокадр, на который указывает вектор движения, и/или список опорных кинокадров (например, список 0, список 1 или список C) для вектора движения.
[0082] CU-лист, имеющая одну или более PU, также может включать в себя одну или более TU. TU могут указываться с использованием RQT (также называемой "структурой в виде TU-дерева квадрантов"), как пояснено выше. Например, флаг разбиения может указывать то, разбивается или нет CU-лист на четыре единицы преобразования. В некоторых примерах, каждая единица преобразования может разбиваться дополнительно на дополнительные суб-TU. Когда TU не разбивается дополнительно, она может называться "TU-листом". Обычно, для внутреннего кодирования, все TU-листья, принадлежащие CU-листу, содержат остаточные данные, сформированные из идентичного режима внутреннего прогнозирования. Иными словами, идентичный режим внутреннего прогнозирования, в общем, применяется для того, чтобы вычислять прогнозированные значения, которые должны преобразовываться во всех TU CU-листа. Для внутреннего кодирования, видеокодер 22 может вычислять остаточное значение для каждой TU-листа с использованием режима внутреннего прогнозирования, в качестве разности между частью CU, соответствующей TU, и исходным блоком. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше PU. Для внутреннего кодирования, PU может совместно размещаться с соответствующей TU-листом для идентичной CU. В некоторых примерах, максимальный размер TU-листа может соответствовать размеру соответствующей CU-листа.
[0083] Кроме того, TU CU-листьев также могут быть ассоциированы с соответствующими RQT-структурами. Иными словами, CU-лист может включать в себя дерево квадрантов, указывающее то, как CU-лист сегментируется на TU. Корневой узел TU-дерева квадрантов, в общем, соответствует CU-листу, в то время как корневой узел CU-дерева квадрантов, в общем, соответствует древовидному блоку (или LCU).
[0084] Как пояснено выше, видеокодер 22 может сегментировать блок кодирования CU на один или более блоков прогнозирования. Блок прогнозирования представляет собой прямоугольный (т.е. квадратный или неквадратный) блок выборок, к которым применяется идентичное прогнозирование. PU CU может содержать блок прогнозирования выборок сигнала яркости, два соответствующих блока прогнозирования выборок сигнала цветности и синтаксические структуры, используемые для того, чтобы прогнозировать блоки прогнозирования. В монохромных кинокадрах или кинокадрах, имеющих три отдельных цветовых плоскости, PU может содержать один блок прогнозирования и синтаксические структуры, используемые для того, чтобы прогнозировать блок прогнозирования. Видеокодер 22 может формировать прогнозирующие блоки (например, прогнозирующие блоки сигналов яркости, прогнозирующие Cb-блоки и прогнозирующие Cr-блоки) для блоков прогнозирования (блоков прогнозирования сигналов яркости, Cb-блоков прогнозирования и Cr-блоков прогнозирования) каждой PU CU.
[0085] Видеокодер 22 и видеодекодер 30 могут быть выполнены с возможностью работать согласно VVC. Согласно VVC, видеокодер (к примеру, видеокодер 22) сегментирует кадр на множество единиц дерева кодирования (CTU). Видеокодер 22 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, к примеру, разделение между CU, PU и TU HEVC. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на дерево квадрантов, и второй уровень, сегментированный согласно сегментации на двоичное дерево. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).
[0086] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT). Сегмент троичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного дерева разделяет блок на три субблока без разделения исходного блока по центру. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0087] В некоторых примерах, видеокодер 22 и видеодекодер 30 могут использовать одну QTBT- или MTT-структуру для того, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, видеокодер 22 и видеодекодер 30 могут использовать две или более QTBT или MTT-структур, к примеру, одну QTBT/MTT-структуру для компонента яркости и другую QTBT/MTT-структуру для обоих компонентов цветности (либо две QTBT/MTT-структуры для соответствующих компонентов цветности).
[0088] В VVC, кинокадр может сегментироваться на срезы, плитки и кирпичи. В общем, кирпич может представлять собой прямоугольную область CTU-строк в конкретной плитке в кинокадре. Плитка может представлять собой прямоугольную область CTU в конкретном столбце плиток и конкретной строке плиток в кинокадре. Столбец плиток представляет собой прямоугольную область CTU, имеющих высоту, равную высоте кинокадра, и ширину, указываемую посредством синтаксических элементов в наборе параметров кинокадра. Строка плиток представляет собой прямоугольную область CTU, имеющих высоту, указываемую посредством синтаксических элементов в наборе параметров кинокадра, и ширину, равную ширине кинокадра. В некоторых случаях, плитка может сегментироваться на несколько кирпичей, каждый из которых может включать в себя одну или более CTU-строк внутри плитки. Плитка, которая не сегментируется на несколько кирпичей, также называется "кирпичом". Тем не менее, кирпич, который представляет собой истинный поднабор плитки, не называется "плиткой". Срез может представлять собой целое число кирпичей кинокадра, которые содержатся исключительно в одной NAL-единице. В некоторых случаях, срез может включать в себя либо определенное число полных плиток, либо только жесткую последовательность полных кирпичей одной плитки.
[0089] Видеокодер 22 и видеодекодер 30 могут быть выполнены с возможностью использовать сегментацию на дерево квадрантов согласно HEVC, QTBT-сегментации, MTT-сегментации либо другим структурам сегментации. Для целей пояснения, описание технологий этого раскрытия сущности представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия сущности также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на дерево квадрантов или другие типы сегментации.
[0090] Видеокодер 22 может использовать внутреннее прогнозирование или взаимное прогнозирование для того, чтобы формировать прогнозирующие блоки для PU. Если видеокодер 22 использует внутреннее прогнозирование для того, чтобы формировать прогнозирующие блоки PU, видеокодер 22 может формировать прогнозирующие блоки PU на основе декодированных выборок кинокадра, который включает в себя PU. После того, как видеокодер 22 формирует прогнозирующие блоки (например, прогнозирующие блоки сигналов яркости, прогнозирующие Cb-блоки и прогнозирующие Cr-блоки) для одной или более PU одной или более PU CU, видеокодер 22 может формировать один или более остаточных блоков для CU. Например, видеокодер 22 может формировать остаточный блок сигналов яркости для CU. Каждая выборка в остаточном блоке сигналов яркости CU указывает разность между выборкой сигнала яркости в одном из прогнозирующих блоков сигналов яркости CU и соответствующей выборкой в исходном блоке кодирования сигналов яркости CU. Помимо этого, видеокодер 22 может формировать остаточный Cb-блок для CU. Каждая выборка в остаточном Cb-блоке CU может указывать разность между Cb-выборкой в одном из прогнозирующих Cb-блоков CU и соответствующей выборкой в исходном Cb-блоке кодирования CU. Видеокодер 22 также может формировать остаточный Cr-блок для CU. Каждая выборка в остаточном Cr-блоке CU может указывать разность между Cr-выборкой в одном из прогнозирующих Cr-блоков CU и соответствующей выборкой в исходном Cr-блоке кодирования CU.
[0091] Кроме того, как пояснено выше, видеокодер 22 может использовать сегментацию на дерево квадрантов для того, чтобы разлагать остаточные блоки (например, остаточные блоки сигналов яркости, остаточные Cb-блоки и остаточные Cr-блоки) CU на один или более блоков преобразования (например, на блоки преобразования сигналов яркости, Cb-блоки преобразования и Cr-блоки преобразования). Блок преобразования представляет собой прямоугольный (например, квадратный или неквадратный) блок выборок, к которым применяется идентичное преобразование. Единица преобразования (TU) CU может содержать блок преобразования выборок сигнала яркости, два соответствующих блока преобразования выборок сигнала цветности и синтаксические структуры, используемые для того, чтобы преобразовывать выборки блоков преобразования. Таким образом, каждая TU CU может иметь блок преобразования сигналов яркости, Cb-блок преобразования и Cr-блок преобразования. Блок преобразования сигналов яркости TU может представлять собой субблок остаточного блока сигналов яркости CU. Cb-блок преобразования может представлять собой субблок остаточного Cb-блока CU. Cr-блок преобразования может представлять собой субблок остаточного Cr-блока CU. В монохромных кинокадрах или кинокадрах, имеющих три отдельных цветовых плоскости, TU может содержать один блок преобразования и синтаксические структуры, используемые для того, чтобы преобразовывать выборки блока преобразования.
[0092] Видеокодер 22 может применять одно или более преобразований к блоку преобразования TU для того, чтобы формировать блок коэффициентов для TU. Например, видеокодер 22 может применять одно или более преобразований к блоку преобразования сигналов яркости TU для того, чтобы формировать блок коэффициентов сигнала яркости для TU. Блок коэффициентов может представлять собой двумерный массив коэффициентов преобразования. Коэффициент преобразования может быть скалярной величиной. Видеокодер 22 может применять одно или более преобразований к Cb-блоку преобразования TU для того, чтобы формировать Cb-блок коэффициентов для TU. Видеокодер 22 может применять одно или более преобразований к Cr-блоку преобразования TU для того, чтобы формировать Cr-блок коэффициентов для TU.
[0093] В некоторых примерах, видеокодер 22 пропускает применение преобразований к блоку преобразования. В таких примерах, видеокодер 22 может трактовать остаточные выборочные значения аналогично коэффициентам преобразования. Таким образом, в примерах, в которых видеокодер 22 пропускает применение преобразований, нижеприведенное пояснение коэффициентов преобразования и блоков коэффициентов может быть применимым к блокам преобразования остаточных выборок.
[0094] После формирования блока коэффициентов (например, блока коэффициентов сигнала яркости, Cb-блока коэффициентов или Cr-блока коэффициентов), видеокодер 22 может квантовать блок коэффициентов, чтобы возможно уменьшать объем данных, используемых для того, чтобы представлять блок коэффициентов, потенциально предоставляя дополнительное сжатие. Квантование, в общем, означает процесс, в котором диапазон значений сжимается в одно значение. Например, квантование может осуществляться посредством деления значения на константу и затем округления до ближайшего целого числа. Чтобы квантовать блок коэффициентов, видеокодер 22 может квантовать коэффициенты преобразования блока коэффициентов. После того, как видеокодер 22 квантует блок коэффициентов, видеокодер 22 может энтропийно кодировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Например, видеокодер 22 может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или другие технологии энтропийного кодирования для синтаксических элементов, указывающих квантованные коэффициенты преобразования.
[0095] Видеокодер 22 может выводить поток битов, который включает в себя последовательность битов, которая формирует представление кодированных кинокадров, и ассоциированные данные. Таким образом, поток битов содержит кодированное представление видеоданных. Поток битов может содержать последовательность единиц уровня абстрагирования от сети (NAL). NAL-единица представляет собой синтаксическую структуру, содержащую индикатор относительно типа данных в NAL-единице, и байты, содержащие эти данные в форме первичной байтовой последовательности данных (RBSP), перемежаемой при необходимости битами предотвращения эмуляции. Каждая из NAL-единиц может включать в себя заголовок NAL-единицы и может инкапсулировать RBSP. Заголовок NAL-единицы может включать в себя синтаксический элемент, указывающий код типа NAL-единицы. Код типа NAL-единицы, указываемый посредством заголовка NAL-единицы для NAL-единицы, указывает тип NAL-единицы. RBSP может представлять собой синтаксическую структуру, содержащую целое число байтов, которое инкапсулируется в NAL-единице. В некоторых случаях, RBSP включает в себя нулевые биты.
[0096] Видеодекодер 30 может принимать поток битов, сформированный посредством видеокодера 22. Видеодекодер 30 может декодировать поток битов для того, чтобы восстанавливать кинокадры видеоданных. В качестве части декодирования потока битов, видеодекодер 30 может синтаксически анализировать поток битов для того, чтобы получать синтаксические элементы из потока битов. Видеодекодер 30 может восстанавливать кинокадры видеоданных, по меньшей мере, частично на основе синтаксических элементов, полученных из потока битов. Процесс для того, чтобы восстанавливать видеоданные, в общем, может быть взаимообратным по отношению к процессу, выполняемому посредством видеокодера 22. Например, видеодекодер 30 может использовать векторы движения PU для того, чтобы определять прогнозирующие блоки для PU текущей CU. Помимо этого, видеодекодер 30 может обратно квантовать блоки коэффициентов TU текущей CU. Видеодекодер 30 может выполнять обратные преобразования для блоков коэффициентов для того, чтобы восстанавливать блоки преобразования TU текущей CU. Видеодекодер 30 может восстанавливать блоки кодирования текущей CU посредством суммирования выборок прогнозирующих блоков для PU текущей CU с соответствующими выборками блоков преобразования TU текущей CU. Посредством восстановления блоков кодирования для каждой CU кинокадра, видеодекодер 30 может восстанавливать кинокадр.
[0097] Технологии, раскрытые в данном документе, основываются на внутреннем прогнозировании на основе блоков, которое представляет собой часть видеостандартов, включающих в себя AVC, HEVC и VVC. Во внутреннем прогнозировании на основе блоков, типично, линии опорных выборок из смежных восстановленных блоков используются для прогнозирования выборок в текущем блоке. Одна или более линий выборок могут использоваться для прогнозирования. Опорные выборки используются посредством типичных режимов внутреннего прогнозирования, таких как DC-, планарный и угловые/направленные режимы.
[0098] Внутреннее прогнозирование выполняет прогнозирование блока изображений с использованием пространственно соседних восстановленных выборок изображений блока. При внутреннем прогнозировании, блок NxM (например, 4×4) прогнозируется посредством верхней и левой соседних восстановленных выборок (опорных выборок) вдоль выбранного направления прогнозирования. В качестве одного примера, блок прогнозируется посредством верхней и левой соседних восстановленных выборок (т.е. опорных выборок) вдоль выбранного направления прогнозирования. Опорные выборки являются внешними для прогнозируемого блока. За счет опорных выборок, видеокодер 22 конструирует блок прогнозирования, имеющий прогнозные выборки на основе опорных выборок.
[0099] В общих технологиях внутреннего прогнозирования, видеокодер 22 определяет остаточный блок, указывающий разности между блоком прогнозирования и текущим блоком (например, остаточные значения, указывающие разности между прогнозными выборками и выборками текущего блока), и передает в служебных сигналах информацию, указывающую остаточные значения в остаточном блоке. Видеодекодер 30 аналогично определяет опорные выборки и конструирует блок прогнозирования. Видеодекодер 30 определяет остаточные значения остаточного блока на основе принимаемой информации и суммирует остаточные значения остаточного блока с прогнозными выборками блока прогнозирования для того, чтобы восстанавливать текущий блок.
[0100] Как подробнее описано, примерные технологии, описанные в этом раскрытии сущности, модифицируют одну или более (например, все) прогнозных выборок блока прогнозирования. Видеокодер 22 может определять остаточные значения на основе модифицированных прогнозных выборок. Видеодекодер 30 может суммировать остаточные значения с модифицированными прогнозными выборками для того, чтобы восстанавливать текущий блок.
[0101] Предусмотрено множество режимов внутреннего прогнозирования (также называемых "внутренними режимами"). В некоторых примерах, внутреннее прогнозирование блока сигналов яркости включает в себя 35 режимов, включающих в себя планарный режим, DC-режим и 33 угловых режима (например, режимы диагонального внутреннего прогнозирования и угловые режимы, смежные с режимами диагонального внутреннего прогнозирования). Кодер 22 и/или декодер 30 могут выбирать режим прогнозирования для каждого блока, который минимизирует остаток между блоком прогнозирования и блоком, который должен кодироваться (например, на основе суммы абсолютных ошибок (SAE), суммы абсолютных разностей (SAD), суммы абсолютных преобразованных разностей (SATD) или другой меры подобия). Например, SAE может вычисляться посредством рассмотрения абсолютной разности между каждым пикселом (или выборкой) в блоке, который должен кодироваться, и соответствующим пикселом (или выборкой) в блоке прогнозирования, используемом для сравнения. Разности пикселов (или выборок) суммируются для того, чтобы создавать показатель подобия блоков, такой как L1-норма разностного изображения, манхэттенское расстояние между двумя блоками изображений либо другое вычисление. С использованием SAE в качестве примера, SAE для каждого прогнозирования с использованием каждого из режимов внутреннего прогнозирования указывает абсолютную величину ошибки прогнозирования. Режим внутреннего прогнозирования, который имеет наилучшее совпадение с фактическим текущим блоком, задается посредством режима внутреннего прогнозирования, который обеспечивает наименьшую SAE.
[0102] 35 режимов внутреннего прогнозирования индексируются, как показано в нижеприведенной таблице 1. В других примерах, может задаваться большее число внутренних режимов, включающих в себя углы прогнозирования, которые могут уже не представляться посредством 33 угловых режимов. В других примерах, углы прогнозирования, ассоциированные с угловыми режимами, могут отличаться от углов прогнозирования, используемых в HEVC.
Режим внутреннего прогнозирования
Ассоциированное название
0
INTRA_PLANAR
1
INTRA_DC
2...34
INTRA_ANGULAR2...INTRA_ANGULAR34
Таблица 1. Спецификация режима внутреннего прогнозирования и ассоциированных названий
xy
x,-1
-1,y
[0103] Чтобы выполнять планарное прогнозирование для блока NxN, для каждой выборки p, расположенной в (x, y), прогнозное выборочное значение может вычисляться посредством применения билинейного фильтра к четырем конкретным соседним восстановленным выборкам (используемым в качестве опорных выборок для внутреннего прогнозирования). Четыре опорных выборки включают в себя правую верхнюю восстановленную выборку TR, левую нижнюю восстановленную выборку BL и две восстановленных выборки, расположенные в идентичном столбце (r) и строке (r) текущей выборки. Планарный режим может формулироваться так, как указано ниже:
xy
p=((N-x1)*L+(N-y1)*T+x1*R+y1*B)/(2*N),
[0104] где x1=x+1, y1=y+1, R=TR и B=BL.
[0105] Для DC-режима, блок прогнозирования заполняется средним значением соседних восстановленных выборок. Обычно, планарный и DC-режимы применяются для моделирования плавно варьирующихся и постоянных областей изображения.
[0106] Для режимов углового внутреннего прогнозирования в HEVC, которые включают в себя 33 различных направления прогнозирования, процесс внутреннего прогнозирования может описываться следующим образом. Для каждого данного режима углового внутреннего прогнозирования, направление внутреннего прогнозирования может идентифицироваться соответствующим образом; например, внутренний режим 18 соответствует направлению чистого горизонтального прогнозирования, и внутренний режим 26 соответствует направлению чистого вертикального прогнозирования. Режимы углового прогнозирования показаны на фиг. 3. В некоторых кодеках, может использоваться другое число режимов внутреннего прогнозирования. Например, в дополнение к планарному и DC-режимам, могут задаваться 65 угловых режимов, при этом режим 2 указывает направление прогнозирования в -135°, режим 34 указывает направление прогнозирования в -45°, и режим 66 указывает направление прогнозирования в 45°. В некоторых кодеках (например, в VVC), также могут задаваться углы за пределами -135° (меньше -135°) и за пределами 45° (больше 45°); они могут называться "широкоугольными внутренними режимами". Хотя описание в данном документе приводится относительно проектного решения на основе внутренних режимов в HEVC (т.е. с 35 режимами), раскрытые технологии также могут применяться к большему числу внутренних режимов, в том числе к широкоугольным внутренним режимам.
[0107] Координаты (X, Y) каждой выборки блока прогнозирования проецируются вдоль конкретного направления внутреннего прогнозирования (например, одного из режимов углового внутреннего прогнозирования). Например, с учетом конкретного направления внутреннего прогнозирования, координаты (X, Y) выборки блока прогнозирования сначала проецируются на строку/столбец соседних восстановленных выборок вдоль направления внутреннего прогнозирования. В случаях, если (X, Y) проецируется на дробную позицию α между двумя соседними восстановленными выборками L и R; то прогнозное значение для (X, Y) может вычисляться с использованием двухотводного билинейного интерполяционного фильтра, формулируемого следующим образом:
xy
p=(1-a)*L+a*R.
[0108] Чтобы не допускать операций с плавающей запятой, в HEVC, вышеприведенное вычисление может аппроксимироваться с использованием целочисленной арифметики следующим образом:
xy
p=((32-')*L+a'*R+16)>>5,
[0109] где a' является целым числом, равным 32*a.
[0110] В некоторых примерах, перед внутренним прогнозированием, соседние опорные выборки фильтруются с использованием 2-отводного билинейного или 3-отводного (1,2,1)/4-фильтра, что известно в качестве внутреннего опорного сглаживания или зависимого от режима внутреннего сглаживания (MDIS). При выполнении внутреннего прогнозирования, с учетом индекса режима внутреннего прогнозирования (predModeIntra) и размера блока (nTbS), определяется то, выполняется или нет процесс опорного сглаживания, и то, какой сглаживающий фильтр используется. Индекс режима внутреннего прогнозирования представляет собой индекс, указывающий режим внутреннего прогнозирования.
[0111] Прогнозные выборки блока прогнозирования формируются с использованием вышеуказанных примерных технологий. После того, как прогнозные выборки формируются, одна или более прогнозных выборок могут модифицироваться с использованием позиционно-зависимого комбинирования с (внутренним) прогнозированием (PDPC). Формы PDPC описываются в работе ITU-T SG16/Q6 Doc. COM16-C1046, "Position Dependent intra Prediction Combination (PDPC) и в работе авторов X. Zhao, V. Seregin, A. Said, M. Karczewicz "EE1 related: Simplification and extension of PDPC", 8-ая JVET-конференция, Макао, октябрь 2018 года, JVET-H0057, которые настоящим полностью фактически содержатся в данном документе по ссылке. В данном документе раскрывается введение PDPC, применяемого к планарному, DC-, горизонтальным и вертикальным режимам без передачи служебных сигналов, как обобщено далее.
[0112] Например, прогнозная выборка pred(x, y), расположенная в (x, y), прогнозируется с помощью режима внутреннего прогнозирования (например, планарного, DC- или углового), и ее значение модифицируется с использованием PDPC-выражения для одной линии опорных выборок следующим образом:
-1,y
x,-1-
-1,-1
pred(x, y)=(wL*R+wT*RwTL*R+(64-wL-wT+wTL)*pred'(x, y)+32)>>6, (уравнение 1)
x,-1
-1,y
-1,-1
x,-1
-1,y
-1,-1
[0113] В уравнении 1, pred'(x, y) является значением прогнозной выборки, определенным с использованием режима внутреннего прогнозирования, как описано выше для формирования прогнозных выборок, и pred(x, y) является модифицированным значением pred'(x, y). Члены R и R представляют опорные выборки, расположенные сверху и слева от текущей выборки(x, y) (смежные верхние и левые выборки, внешние для текущего блока), соответственно, и член R представляет опорную выборку, расположенную в левом верхнем углу текущего блока (в смежном левом верхнем углу, внешнем для текущего блока). Например, как показано на фиг. 2A (описан ниже), с точки зрения первой прогнозной выборки 202, расположенной в левом верхнем углу блока 200A, R представляет выборку, которая находится на одну строку выше текущего блока с координатой X, идентичной координате X модифицируемой прогнозной выборки (соответствующей значению pred'(x, y)), R представляет выборку, которая находится на один столбец слева (или "в левой стороне") от текущего блока с координатой Y, идентичной координате Y модифицируемой прогнозной выборки, и R представляет выборку, которая находится на один столбец слева от текущего блока и на одну строку выше текущего блока.
[0114] Выборки (например, опорные выборки, используемые для PDPC), которые используются для того, чтобы модифицировать прогнозную выборку (сформированную с использованием режима внутреннего прогнозирования), представляют собой выборки в кинокадре (например, выборки сигнала яркости и сигнала цветности) и не обязательно представляют собой другие прогнозные выборки (хотя и возможно). Например, для текущего внутренне прогнозируемого блока, который имеет размер NxM, видеокодер 22 и/или видеодекодер 30 могут формировать блок прогнозирования размера NxM. Опорные выборки, используемые для того, чтобы модифицировать прогнозные выборки, представляют собой опорные выборки текущего кинокадра (включающего в себя текущий блок) и являются внешними для текущего блока (в одном или более соседних блоков относительно текущего блока).
[0115] Система координат для идентификации выборок, внешних для текущего блока, является относительной для текущего блока. Например, выборка, расположенная в левом верхнем углу текущего блока, имеет координату (0, 0). Видеокодер 22 может определять остаток между прогнозной выборкой, расположенной в левом верхнем углу блока прогнозирования (например, имеющей координату (0, 0)), и выборкой в текущем блоке, имеющей координату (0, 0). Чтобы восстанавливать выборку, расположенную в (0, 0) в текущем блоке, видеодекодер 30 может суммировать прогнозную выборку, расположенную в (0, 0) в блоке прогнозирования, с остаточным значением, соответствующим выборке, расположенной в (0, 0). Соответственно, для каждой выборки в текущем блоке, предусмотрена соответствующая выборка в блоке прогнозирования (например, имеющая идентичную координату).
x,-1
-1,y
[0116] Соответственно, R означает то, что координата Y равна -1, и в силу этого означает выборку в строке, которая находится выше текущего блока. Координата X может быть идентичной координате X прогнозной выборки, которая модифицируется. Для R, координата X равна -1 и в силу этого означает столбец, который находится слева от текущего блока. Координата Y может быть идентичной координате Y прогнозной выборки, которая модифицируется.
[0117] Также может быть возможным использовать другую систему координат, к примеру, систему координат, в которой координата (0, 0) ссылается на правую верхнюю выборку кинокадра. Примерные технологии описываются относительно системы координат, в которой координата (0, 0) ссылается на левую верхнюю выборку блока.
[0118] Для DC-режима, весовые коэффициенты вычисляются следующим образом для блока с размерами width и height:
wT=32>>((y<<1)>>shift), wL=32>>((x<<1)>>shift), wTL=(wL>>4)+(wT>>4), (уравнение 2)
2
2
[0119] В уравнении 2, shift=(log(width)+log(height)+2)>>2. Для планарного режима wTL=0, для горизонтального режима wL=0 и wTL=wT, и для вертикального режима wT=0 и wTL=wL. В некоторых случаях, весовые PDPC-коэффициенты могут вычисляться только с суммированиями и сдвигами. Значение pred(x, y) может вычисляться на одном этапе с использованием уравнения 1.
-1,y
x,-1
-1,-1
[0120] Фиг. 2A является схемой, иллюстрирующей весовые PDPC-коэффициенты (wL, wT, wTL) в DC-режиме для первой прогнозной выборки 202 (в выборочной позиции (0, 0)) в одном блоке 200A 4×4. Как показано, весовой коэффициент wL для опорной PDPC-выборки R равен 32, весовой коэффициент wT для опорной PDPC-выборки R равен 32, и весовой коэффициент wTL для опорной PDPC-выборки R равен -4. Весовые коэффициенты (wL, wT, wTL) могут определяться согласно вышеприведенному уравнению 2. Как показано в уравнении 2, весовые коэффициенты определяются на основе позиции (x, y) прогнозной выборки pred(x, y) в текущем блоке.
-1,y
x,-1
-1,-1
[0121] Фиг. 2B иллюстрирует весовые PDPC-коэффициенты (wL, wT, wTL) в DC-режиме для выборочной позиции (1, 0) в одном блоке 4×4. Как показано, весовой коэффициент wL для опорной PDPC-выборки R равен 8, весовой коэффициент wT для опорной PDPC-выборки R равен 32, и весовой коэффициент wTL для опорной PDPC-выборки R равен -2. Весовые коэффициенты (wL, wT, wTL) могут определяться согласно вышеприведенному уравнению 2.
x,-1
-1,y
-1,-1
[0122] В некоторых случаях, если PDPC применяется к DC-, планарному, горизонтальным и вертикальным внутренним режимам, дополнительные граничные фильтры не применяются, такие как граничный фильтр DC-режима или краевые фильтры горизонтального/вертикального режимов. В некоторых случаях, уравнение 1 может обобщаться таким образом, что оно включает в себя дополнительные линии опорных выборок (например, не ограниченные выборками на одну строку выше или на одну строку слева от текущего блока). В этом случае, несколько опорных выборок доступны в окружениях R, R, R, и каждая из них может иметь назначенный весовой коэффициент, который может оптимизироваться, например, за счет обучения.
[0123] В некоторых случаях, PDPC, в общем, может расширяться на угловые режимы (например, на диагональные внутренние режимы и на угловые режимы, которые являются смежными с диагональными режимами). Намеченные диагональные внутренние режимы представляют собой режимы, которые прогнозируют согласно направлениям вниз и влево и вверх и вправо, а также несколько смежных угловых режимов, например, N смежных режимов между левым нижним диагональным режимом и вертикальным режимом и N или M смежных режимов между правым верхним диагональным режимом и горизонтальным режимом. Фиг. 3 иллюстрирует идентификацию угловых режимов, раскрытую в данном документе. В общем, смежные режимы могут представлять собой выбранный поднабор доступных угловых режимов. Разнесение между угловыми режимами, например, может быть неоднородным, и некоторые угловые режимы, например, могут пропускаться.
[0124] В некоторых примерах, видеокодер 22 и видеодекодер 30 могут быть выполнены с возможностью выполнять PDPC, при котором текущий блок внутренне прогнозируется в угловом режиме, который исключает DC-, планарный, вертикальные или горизонтальные режимы. Тем не менее, могут возникать технические сложности при расширении PDPC на режимы углового внутреннего прогнозирования. Например, опорные выборки, хотя расположены внешне для текущего блока, не должны обязательно иметь идентичные координаты X и/или Y с модифицируемой прогнозной выборкой. Следовательно, может быть непонятно то, какие опорные выборки следует использовать для модификации прогнозной выборки таким образом, что достигается эффективность кодирования видео.
[0125] Например, если информация, требуемая для того, чтобы передавать в служебных сигналах остаточные значения, уменьшается, возникает повышение эффективности использования полосы пропускания. Соответственно, опорные PDPC-выборки, используемые для того, чтобы модифицировать блок прогнозирования (определенный с использованием внутреннего прогнозирования), должны быть такими, что остаточные значения, сформированные из модифицированного блока прогнозирования, требуют меньшего объема информации, которая должна передаваться в служебных сигналах, по сравнению с другими технологиями. Тем не менее, если определение того, какие опорные выборки следует использовать, является чрезмерно интенсивным, может быть задержка касательно того, сколько времени требуется видеодекодеру 30 для того, чтобы восстанавливать текущий блок.
(x,-1)
(-1,y)
(-1,-1)
(x,-1)
(-1,y)
[0126] Фиг. 4A-4D иллюстрируют определения выборок, используемых посредством PDPC, расширенной на диагональные и смежные угловые внутренние режимы. Пунктирные стрелки на фиг. 4A-4D указывают направление прогнозирования (например, из фиг. 3) и исходят из опорной выборки, используемой для внутренне прогнозированной прогнозной выборки pred(x',y'). Фиг. 4A иллюстрирует определение опорных PDPC-выборок R, R и R для расширения PDPC на правый верхний диагональный режим. Прогнозная выборка pred(x',y') расположена в (x', y') в блоке прогнозирования. Координата X опорной PDPC-выборки R задается следующим образом: x= x'+y'+1, и координата Y опорной PDPC-выборки R аналогично задается следующим образом: y=x'+y'+1. Весовые PDPC-коэффициенты для правого верхнего диагонального режима, например, составляют: wT=16>>((y'<<1)>>shift), wL=16>>((x'<<1)>>shift), wTL=0.
(x,-1)
(-1,y)
(-1,-1)
(x,-1)
(-1,y)
[0127] Фиг. 4B иллюстрирует определение опорных выборок R, R и R для расширения PDPC на левый нижний диагональный режим. Координата X опорной PDPC-выборки R задается следующим образом: x=x'+y'+1, и координата Y опорной PDPC-выборки R задается следующим образом: y=x'+y'+1. Весовые PDPC-коэффициенты для правого верхнего диагонального режима, например, составляют: wT=16>>((y'<<1)>>shift), wL=16>>((x'<<1)>>shift), wTL=0.
[0128] На фиг. 4A и фиг. 4B, видеокодер 22 и видеодекодер 30 могут определять строку, которая находится выше текущего блока (например, непосредственно выше, но технологии не ограничены этим), и определять координату X в определенной строке. Координата X в определенной строке равна координате X прогнозной выборки плюс координата Y прогнозной выборки плюс 1. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной координаты X.
[0129] Аналогично, на фиг. 4A и фиг. 4B, видеокодер 22 и видеодекодер 30 могут определять столбец, который находится слева от текущего блока (например, непосредственно слева, но технологии не ограничены этим), и могут определять координату Y в определенном столбце. Координата Y в определенном столбце равна координате X прогнозной выборки плюс координата Y прогнозной выборки плюс 1. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной координаты Y.
[0130] На основе определенных координат X и Y, видеокодер 22 и видеодекодер 30 могут определять опорные выборки (например, первую опорную выборку на основе определенной строки и определенной координаты X и вторую опорную выборку на основе определенного столбца и определенной координаты Y). Видеокодер 22 и видеодекодер 30 также могут определять весовые коэффициенты согласно вышеуказанным примерным технологиям для диагональных режимов (например, для правого верхнего диагонального режима и левого нижнего диагонального режима, в качестве двух примеров). Затем на основе уравнения 1 (в качестве одного неограничивающего примера), видеокодер 22 и видеодекодер 30 могут определять модифицированную прогнозную выборку (например, pred(x, y)).
(-1,y)
(x,-1)
[0131] Случай смежного правого верхнего диагонального режима проиллюстрирован на фиг. 4C. В общем, для угла α, заданного на фиг. 3, координата Y опорной PDPC-выборки R определяется следующим образом: y=y'+tan(α)*(x'+1), и координата X опорной PDPC-выборки R задается следующим образом: x=x'+cotan(α)*(y'+1), где tan(α) и cotan(α) являются тангенсом и котангенсом угла α, соответственно. Весовые PDPC-коэффициенты для смежного правого верхнего диагонального режима, например, составляют: wT=32>>((y'<<1)>>shift), wL=32>>((x'<<1)>>shift), wTL=0 или wT=32>>((y'<<1)>>shift), wL=0, wTL=0.
(x,-1)
(-1,y)
[0132] Аналогично, случай смежного левого нижнего диагонального режима проиллюстрирован на фиг. 4D. В общем, для угла β, заданного на фиг. 3, координата X опорной PDPC-выборки R определяется следующим образом: x=x'+tan(β)*(y'+1), и координата Y опорной PDPC-выборки R задается посредством y=y'+cotan(β)*(x'+1), где tan(β) и cotan(β) являются тангенсом и котангенсом угла β, соответственно. Весовые PDPC-коэффициенты для смежного левого нижнего диагонального режима, например, составляют: wL=32>>((x'<<1)>>shift), wT=32>>((y'<<1)>>shift), wTL=0 или wL=32>>((x'<<1)>>shift), wT=0, wTL=0.
[0133] На фиг. 4C и фиг. 4D, видеокодер 22 и видеодекодер 30 могут определять строку, которая находится выше текущего блока (например, непосредственно выше, но технологии не ограничены этим), и могут определять координату X в определенной строке. Координата X в определенной строке основана на углу режима углового внутреннего прогнозирования. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной координаты X.
[0134] Чтобы определять координату X в определенной строке, видеокодер 22 и видеодекодер 30 могут определять одно из котангенса (например, для смежного правого верхнего диагонального режима) или тангенса (например, для смежного левого нижнего диагонального режима) угла режима углового внутреннего прогнозирования. Видеокодер 22 и видеодекодер 30 могут определять координату X в определенной строке на основе одного из котангенса или тангенса угла режима углового внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. Например, для смежного правого верхнего диагонального режима углового внутреннего прогнозирования, координата X в определенной строке равна x'+cotan(α)*(y'+1), а для смежного левого нижнего диагонального режима, координата X в определенной строке равна x'+tan(β)*(y'+1), где x' и y' являются координатами X и Y модифицируемой прогнозной выборки.
[0135] Аналогично, на фиг. 4C и фиг. 4D, видеокодер 22 и видеодекодер 30 могут определять столбец, который находится слева от текущего блока (например, непосредственно слева, но технологии не ограничены этим), и могут определять координату Y в определенном столбце. Координата Y в определенном столбце основана на углу режима углового внутреннего прогнозирования. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной координаты Y.
[0136] Чтобы определять координату Y в определенном столбце, видеокодер 22 и видеодекодер 30 могут определять одно из котангенса (например, для смежного левого нижнего диагонального режима) или тангенса (например, для смежного правого верхнего диагонального режима) угла режима углового внутреннего прогнозирования. Видеокодер 22 и видеодекодер 30 могут определять координату Y в определенном столбце на основе одного из котангенса или тангенса угла режима углового внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. Например, для смежного правого верхнего диагонального режима углового внутреннего прогнозирования, координата Y в определенном столбце равна y'+tan(α)*(x'+1), а для смежного левого нижнего диагонального режима, координата Y в определенном столбце равна y'+cotan(β)*(x'+1), где x' и y' являются координатами X и Y модифицируемой прогнозной выборки.
[0137] На основе определенных координат X и Y, видеокодер 22 и видеодекодер 30 могут определять опорные выборки (например, первую опорную выборку на основе определенной строки и определенной координаты X и вторую опорную выборку на основе определенного столбца и определенной координаты Y). Видеокодер 22 и видеодекодер 30 также могут определять весовые коэффициенты согласно вышеуказанным примерным технологиям для смежных диагональных режимов (например, для смежного правого верхнего диагонального режима и смежного левого нижнего диагонального режима, в качестве двух примеров). Затем на основе уравнения 1 (в качестве одного неограничивающего примера), видеокодер 22 и видеодекодер 30 могут определять модифицированную прогнозную выборку (например, pred(x, y)).
[0138] Как описано выше, PDPC может применяться к режимам углового внутреннего прогнозирования с минимальным влиянием на сложность. В практической реализации, значения тангенсов и котангенсов углов могут сохраняться в таблицах таким образом, что они не вычисляются на лету (например, в среде выполнения). Далее приводятся примерные таблицы в сумме для 129 угловых режимов:
[0139] TanAngTable[33]={0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 49, 52, 55, 58, 61, 64}.
[0140] CotanAngTable[33]={0, 65536, 32768, 21845, 16384, 13107, 10923, 8192, 6554, 5461, 4681, 4096, 3641, 3277, 2979, 2731, 2521, 2341, 2185, 2048, 1928, 1820, 1725, 1638, 1560, 1489, 1425, 1337, 1260, 1192, 1130, 1074, 1024}.
[0141] Значения в таблице тангенсов указывают местоположение выборки, найденной с использованием режима внутреннего прогнозирования. Значение в таблице котангенсов указывает местоположение опорной PDPC-выборки согласно соответствующему значению в таблице тангенсов. Например, первая запись в таблице тангенсов (указывающая местоположение выборки внутреннего прогнозирования) соответствует первой записи в таблице котангенсов (указывающей местоположение опорной PDPC-выборки).
[0142] Кроме того, таблицы могут уже использоваться посредством углового внутреннего прогнозирования блоков и могут многократно использоваться для расширения PDPC на диагональные и смежные режимы (например, на режимы углового внутреннего прогнозирования). Следовательно, дополнительные таблицы могут не требоваться в реализации PDPC. В некоторых примерах, пользовательские таблицы могут формироваться, например, за счет обучения, с возможностью дополнительно оптимизировать PDPC.
[0143] В некоторых видеокодеках, блочная структура, используемая для указания блока прогнозирования для внутреннего прогнозирования, не ограничивается квадратом (ширина w=высота h). Прямоугольные блоки прогнозирования (w>h или w<h) могут повышать эффективность кодирования на основе характеристик контента. В таких прямоугольных блоках, ограничение направления внутреннего прогнозирования в пределах углов, проиллюстрированных на фиг. 3 (от -135 градусов до 45 градусов текущего блока относительно вертикального направления из прогнозной выборки), может приводить к ситуациям, когда для внутреннего прогнозирования используются более далекие опорные выборки, вместо более близких опорных выборок.
[0144] Фиг. 5 является схемой, иллюстрирующей пример режима направленного внутреннего прогнозирования, в котором более далекие опорные выборки используются для внутреннего прогнозирования текущего блока 503 текущего кинокадра 502, вместо более близких опорных выборок. Текущий блок 503 представляет собой прямоугольный блок 4×8 выборок. Также показаны опорные выборки 506 и опорные выборки 508. Опорные выборки 506 могут представлять собой часть одного или более блоков выше текущего кинокадра 502, и опорные выборки 508 могут представлять собой часть одного или более блоков слева от текущего кинокадра 502.
[0145] Внутреннее прогнозирование выполняется для того, чтобы определять прогнозную выборку 504 (обозначается как pred(x',y')). Вследствие ограничения направления внутреннего прогнозирования диапазоном от -135 градусов до 45 градусов (как показано на фиг. 3), более близкие опорные выборки не используются, но более далекие опорные выборки могут использоваться. Например, левый нижний диагональный режим может использоваться для того, чтобы прогнозировать прогнозную выборку 504, причем угол или направление левого нижнего диагонального режима проиллюстрирован посредством стрелки 512. Правый верхний диагональный режим также может использоваться, причем угол или направление этого режима проиллюстрирован посредством стрелки 510. Левый нижний диагональный режим может выполняться под углом в -135 градусов относительно вертикального направления из прогнозной выборки 504, который представляет собой наименьший левый нижний угол, который может использоваться в диапазоне от -135 градусов до 45 градусов.
[0146] Пунктирная стрелка 514 соответствует углу, который больше угла в 45 градусов, используемого в типичных режимах внутреннего прогнозирования (в режимах внутреннего прогнозирования, показанных на фиг. 3). Как показано на фиг. 5, опорная выборка 518, определенная с использованием левой нижней диагональной модели (иллюстрируется посредством стрелки 512), находится дальше от прогнозной выборки 504, чем опорная выборка 516, которая может определяться с использованием более широкоугольного режима внутреннего прогнозирования угла (иллюстрируется посредством пунктирной стрелки 514). Данное проектное решение с большой вероятностью имеет влияние на эффективность кодирования. Должно быть более преимущественным иметь диапазон ограничений, ослабленный таким образом, что более близкие опорные выборки (например, за пределами угла от -135 до 45 градусов) могут использоваться для прогнозирования.
[0147] Фиг. 6 является схемой, иллюстрирующей примеры режимов направленного внутреннего прогнозирования, включающих в себя режимы внутреннего прогнозирования, которые протягиваются за пределы углов от -135 (режим 2 внутреннего прогнозирования) до 45 градусов (режим 66 внутреннего прогнозирования). Например, режимы направленного внутреннего прогнозирования 67-80 и от -1 до -14, проиллюстрированные с помощью пунктирных стрелок, могут называться "режимами широкоугольного внутреннего прогнозирования". Следует отметить, что стрелки на фиг. 6 указывают на соответствующие опорные выборки, используемые для прогнозирования, и не указывают направление прогнозирования. Направление прогнозирования является противоположным относительно направления, в котором указывает стрелка. Например, направление прогнозирования режима 68 внутреннего прогнозирования исходит из номера 68 на фиг. 6 (который представляет собой аппроксимированную позицию опорной выборки, используемой в режиме 68) в середину блока. Как отмечено выше, PDPC может использоваться для того, чтобы модифицировать прогнозные выборки, определенные с использованием внутреннего прогнозирования. Например, с использованием PDPC, видеокодер 22 и/или видеодекодер 30 могут определять опорные выборки, которые присутствуют в одной или более линий выше и/или слева от текущего блока, и могут использовать опорные выборки для того, чтобы модифицировать прогнозные выборки, определенные с использованием внутреннего прогнозирования. Модифицированные прогнозные выборки затем могут использоваться для того, чтобы кодировать или декодировать текущий блок. Тем не менее, когда один или более режимов широкоугольного внутреннего прогнозирования используются, из текущих стандартов кодирования видео непонятно, как должно применяться PDPC.
[0148] В данном документе описываются системы и технологии для расширения использования PDPC на режимы широкоугольного внутреннего прогнозирования, которые используют углы за пределами стандартных углов от -135 градусов (режим 2) до 45 градусов (режим 66). Системы и технологии предоставляют практический вариант применения технологий кодирования видео, таких как технологии кодирования видео для PDPC, используемого с режимами широкоугольного внутреннего прогнозирования. Например, примерные технологии предоставляют техническое решение для использования PDPC с режимами широкоугольного внутреннего прогнозирования. Ниже подробнее описываются примерные способы, которыми видеокодер 22 и видеодекодер 30 могут выполнять PDPC с режимами углового внутреннего прогнозирования.
[0149] В качестве одного примера, видеокодер 22 может быть выполнен с возможностью получать текущий блок видеоданных и определять размер текущего блока. Например, ширина и высота текущего блока могут анализироваться для того, чтобы определять то, является или нет текущий блок прямоугольным. В некоторых случаях, видеокодер 22 может определять то, представляет текущий блок собой вертикально ориентированный блок (в котором высота > ширина) или горизонтально ориентированный блок (в котором ширина > высота). Видеокодер 22 может определять то, что режим широкоугольного внутреннего прогнозирования используется для текущего блока, на основе размера текущего блока (например, на основе того, что блок является прямоугольным). Режим широкоугольного внутреннего прогнозирования не представляет собой режим DC-, планарного, горизонтального или вертикального внутреннего прогнозирования и имеет направление, которое меньше -135 градусов или больше 45 градусов относительно вертикального направления из каждой прогнозной выборки блока прогнозирования.
[0150] В некоторых случаях, угол диагонали, простирающейся из позиции слева снизу текущего блока в позицию слева сверху текущего блока, может использоваться в качестве ограничения на выбор режима внутреннего прогнозирования, причем может выбираться любой режим внутреннего прогнозирования, имеющий угол, который не превышает диагональ текущего блока (из левого нижнего угла в правый верхний угол блока). Режим внутреннего прогнозирования может выбираться из допустимых режимов внутреннего прогнозирования на основе технологий, описанных выше. Например, режим внутреннего прогнозирования для каждого блока, который минимизирует остаток между блоком прогнозирования и блоком, который должен кодироваться (например, на основе суммы абсолютных ошибок (SAE), суммы абсолютных разностей (SAD), суммы абсолютных преобразованных разностей (SATD) или другой меры подобия), может выбираться из допустимых режимов внутреннего прогнозирования.
[0151] Видеокодер 22 может быть выполнен с возможностью определять блок прогнозирования (который включает в себя множество прогнозных выборок) для текущего блока на основе режима широкоугольного внутреннего прогнозирования. Видеокодер 22 может быть выполнен с возможностью модифицировать прогнозную выборку блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием PDPC. Следует понимать, что, хотя технологии описываются относительно одной прогнозной выборки, примерные технологии не ограничены этим. В некоторых примерах, видеокодер 22 может модифицировать другие прогнозные выборки блока прогнозирования с использованием PDPC.
-1,-1
[0152] Чтобы модифицировать прогнозную выборку, видеокодер 22 может определять одну или более опорных выборок (опорных PDPC-выборок), которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования, и может модифицировать прогнозную выборку для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Одна или более опорных выборок могут идентифицироваться с использованием направления или угла выбранного режима широкоугольного внутреннего прогнозирования. Например, если прогнозная выборка выбирается из строки пикселов соседнего блока, расположенного выше текущего блока под углом n относительно вертикального направления из местоположения прогнозной выборки, первая опорная PDPC-выборка может выбираться из столбца пикселов соседнего блока, расположенного слева от текущего блока под идентичным углом n относительно выборочного местоположения. В некоторых примерах, вторая опорная PDPC-выборка может выбираться из выборочного местоположения, идентичного выборочному местоположению, используемому для прогнозной выборки. В некоторых случаях, значение из выборочного местоположения может фильтроваться или сглаживаться для того, чтобы получать вторую опорную PDPC-выборку. В некоторых примерах, третья опорная PDPC-выборка может выбираться из выборочного местоположения в соседнем блоке, которое является смежным с левой верхней выборкой текущего блока (например, из местоположения R, показанного на фиг. 4A). Первая опорная PDPC-выборка (и в некоторых случаях вторая и/или третья опорные PDPC-выборки) может использоваться для того, чтобы модифицировать прогнозную выборку в блоке прогнозирования для того, чтобы формировать модифицированную прогнозную выборку. В одном иллюстративном примере, модифицированная прогнозная выборка может определяться посредством вычисления комбинирования со взвешиванием (с использованием одного или более весовых коэффициентов) первой опорной PDPC-выборки, второй опорной PDPC-выборки, третьей опорной PDPC-выборки и прогнозной выборки, к примеру, с использованием вышеприведенного уравнения 1.
[0153] Видеокодер 22 может определять остаточное значение для остаточного блока на основе модифицированной прогнозной выборки и выборочного значения в текущем блоке и может передавать в служебных сигналах информацию, указывающую остаточное значение.
[0154] В качестве другого примера, видеодекодер 30 может быть выполнен с возможностью получать текущий блок видеоданных и определять размер текущего блока. Например, ширина и высота текущего блока могут анализироваться для того, чтобы определять то, является или нет текущий блок прямоугольным. В некоторых случаях, видеодекодер 30 может определять то, представляет текущий блок собой вертикально ориентированный блок (в котором высота > ширина) или горизонтально ориентированный блок (в котором ширина > высота). Видеокодер 22 может определять то, что режим широкоугольного внутреннего прогнозирования используется для текущего блока, на основе размера текущего блока (например, на основе того, что блок является прямоугольным). Режим широкоугольного внутреннего прогнозирования не представляет собой режим DC-, планарного, горизонтального или вертикального внутреннего прогнозирования и имеет направление, которое меньше -135 градусов или больше 45 градусов относительно вертикального направления из каждой прогнозной выборки блока прогнозирования.
[0155] Видеодекодер 30 может быть выполнен с возможностью определять блок прогнозирования, который включает в себя множество прогнозных выборок, для текущего блока на основе режима широкоугольного внутреннего прогнозирования. Видеодекодер 30 может модифицировать прогнозную выборку блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием PDPC. Аналогично вышеуказанному, хотя технологии описываются относительно одной прогнозной выборки, примерные технологии не ограничены этим. В некоторых примерах, видеодекодер 30 может модифицировать другие прогнозные выборки блока прогнозирования с использованием PDPC.
-1,-1
[0156] Чтобы модифицировать прогнозную выборку, видеодекодер 30 может быть выполнен с возможностью определять одну или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования и модифицировать прогнозную выборку для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок. Аналогично описанному выше относительно видеокодера 22, одна или более опорных выборок могут идентифицироваться с использованием направления или угла выбранного режима широкоугольного внутреннего прогнозирования. Например, первая опорная PDPC-выборка может выбираться из столбца или строки пикселов соседнего блока под идентичным углом n относительно выборочного местоположения. В некоторых примерах, вторая опорная PDPC-выборка может выбираться из выборочного местоположения, идентичного выборочному местоположению, используемому для прогнозной выборки (значение которой должно фильтроваться или сглаживаться для того, чтобы получать вторую опорную PDPC-выборку) и/или третья опорная PDPC-выборка может выбираться из выборочного местоположения в соседнем блоке, которое является смежным с левой верхней выборкой текущего блока (например, из местоположения R, показанного на фиг. 4A). Первая опорная PDPC-выборка (и в некоторых случаях вторая и/или третья опорные PDPC-выборки) может использоваться для того, чтобы модифицировать прогнозную выборку в блоке прогнозирования для того, чтобы формировать модифицированную прогнозную выборку (например, с использованием вышеприведенного уравнения 1). Видеодекодер 30 также может быть выполнен с возможностью восстанавливать выборку текущего блока на основе модифицированной прогнозной выборки и остаточного значения.
[0157] Фиг. 7 является схемой, иллюстрирующей пример PDPC, выполняемого с помощью режима широкоугольного внутреннего прогнозирования. Текущий кинокадр 702 показывается с текущим блоком 703 видеоданных. Текущий блок 703 представляет собой прямоугольный блок 4×8 выборок (например, компонентные выборки сигнала яркости и/или сигнала цветности или полный набор компонентных выборок сигнала яркости и сигнала цветности, составляющих блок пикселов). Также показаны соседние восстановленные опорные выборки 706 и соседние восстановленные опорные выборки 708. Соседние опорные выборки 706 могут представлять собой часть одного или более блоков выше текущего кинокадра 702, и соседние опорные выборки 708 могут представлять собой часть одного или более блоков слева от текущего кинокадра 702.
[0158] Устройство кодирования (например, видеокодер 22 и/или видеодекодер 30) может определять размер текущего блока 703 и может определять или выбирать режим внутреннего прогнозирования, который следует выполнять, на основе размера текущего блока 703. Как описано выше, устройство кодирования может определять то, что режим широкоугольного внутреннего прогнозирования используется для текущего блока 703, на основе размера текущего блока 703. Например, режим широкоугольного внутреннего прогнозирования может использоваться когда определяется то, что текущий блок представляет собой прямоугольный блок (ширина и высота имеют различные размеры). В некоторых случаях, любой режим внутреннего прогнозирования, имеющий угол, который не превышает диагональ текущего блока 703 (из левого нижнего угла в правый верхний угол блока), может выбираться для использования при прогнозировании текущего блока 703. В некоторых случаях, отношения размеров блоков могут использоваться для того, чтобы определять режим внутреннего прогнозирования, который следует использовать. Например, отношение размеров блоков для прямоугольного блока может использоваться для того, чтобы определять диагональное направление из позиции слева снизу в позицию справа сверху и в силу этого разрешенный диапазон углов (или направлений) прогнозирования.
[0159] В некоторых примерах, режимы внутреннего прогнозирования (включающие в себя режимы 2-66), которые находятся за пределами угла диагонали блока 703, могут запрещаться, и дополнительные широкоугольные режимы, которые находятся в пределах угла диагонали блока 703, может задаваться доступными для выбора посредством устройства кодирования. Например, для горизонтально ориентированного прямоугольного блока 703 (в котором ширина > высота), если угол, ассоциированный с режимом 5 внутреннего прогнозирования (как показано на фиг. 6), представляет собой угол диагонали блока 703 (из левого нижнего угла в правый верхний угол), то режимы 2, 3 и 4 могут запрещаться, и дополнительные режимы 67, 68 и 69 (с углами больше 45° относительно вертикального направления из каждого выборочного местоположения в текущем блоке 703) могут задаваться доступными для прогнозирования одной или более прогнозных выборок блока прогнозирования текущего блока 703.
[0160] На основе анализа различных доступных режимов внутреннего прогнозирования (например, на основе отношений размеров блоков, на основе SAE или другой меры подобия, отмеченной выше, или с использованием другого подходящего анализа), устройство кодирования может выбирать режим широкоугольного внутреннего прогнозирования (например, режим 67, 68 или 69 широкоугольного внутреннего прогнозирования) для выполнения внутреннего прогнозирования для выборочного местоположения текущего блока 703. Стрелка 710 на фиг. 7 указывает направление прогнозирования (или угол прогнозирования) выбранного режима широкоугольного внутреннего прогнозирования и исходит из опорной выборки 712, используемой для внутреннего прогнозирования прогнозной выборки 704 (обозначается как pred(x',y')). Режим широкоугольного внутреннего прогнозирования, проиллюстрированный на фиг. 7, представляет собой смежный режим вниз и влево по диагонали (например, режим широкоугольного внутреннего прогнозирования 69 из фиг. 6).
[0161] С использованием выбранного режима широкоугольного внутреннего прогнозирования, прогнозная выборка 704 (pred(x',y')) может определяться для правого нижнего выборочного местоположения в блоке прогнозирования текущего блока 703. Например, значение выборки 712 из соседних опорных выборок 708 может выбираться в качестве значения для прогнозной выборки 704, на основе направления (представленного посредством стрелки 710) выбранного режима широкоугольного внутреннего прогнозирования. В некоторых случаях, идентичный режим широкоугольного внутреннего прогнозирования может использоваться для каждой прогнозной выборки блока прогнозирования. В некоторых случаях, различный режим внутреннего прогнозирования (включающий в себя широкоугольные режимы) может использоваться для различных прогнозных выборок блока прогнозирования.
(-1,y)
(-1,y)
[0162] Устройство кодирования затем может выполнять PDPC для того, чтобы определять одну или более опорных PDPC-выборок, которые используются для того, чтобы модифицировать значение прогнозной выборки 704. Одна или более опорных PDPC-выборок могут идентифицироваться с использованием направления (представленного посредством стрелки 710) выбранного режима широкоугольного внутреннего прогнозирования. Например, как отмечено выше и показано на фиг. 7, выборка 712 из строки опорных выборок 708, расположенных выше текущего блока 703, выбирается в качестве прогнозной выборки 704 (pred(x',y')). Прогнозная выборка 704 (pred(x',y')) расположена в местоположении (x', y') в блоке прогнозирования. Первая опорная PDPC-выборка 714 (обозначается как R) выбирается из столбца опорных выборок 706, расположенных слева от текущего блока 703 и вдоль идентичного направления прогнозирования (заданного посредством стрелки 710) режима широкоугольного внутреннего прогнозирования. Для угла β, показанного на фиг. 7 (также показанного на фиг. 3), координата Y опорной выборки R определяется следующим образом: y=y'+cotan(β)*(x'+1), где cotan(β) является котангенсом угла β. Ниже описываются примеры значений котангенса.
(x,-1)
(x,-1)
(x,-1)
(x,-1)
[0163] В некоторых реализациях, вторая опорная PDPC-выборка (обозначается как R) также может выбираться из идентичного выборочного местоположения 712, которое использовано для прогнозной выборки 704. В таком примере, идентичное выборочное значение (значение выборки 712) может использоваться для прогнозной выборки 704 и для второй опорной PDPC-выборки R, причем в этом случае прогнозная выборка 704 (pred(x',y')) является идентичной второй опорной PDPC-выборке R. Для угла β, показанного на фиг. 7, координата X R задается следующим образом: x=x'+tan(β)*(y'+1), где tan(β) является тангенсом угла β. Ниже описываются примеры значений тангенса.
(x,-1)
(x,-1)
(x,-1)
(x,-1)
[0164] В некоторых случаях, значение выборки 712 может фильтроваться или сглаживаться для того, чтобы получать вторую опорную PDPC-выборку R, причем в этом случае значение второй опорной PDPC-выборки Rдолжно отличаться от значения прогнозной выборки 704. Как отмечено выше, прогнозная выборка 704 (pred(x',y')) является идентичной R, если вторая опорная выборка R является нефильтрованной. В некоторых примерах, опорное выборочное значение может фильтроваться с использованием внутреннего опорного сглаживания, зависимого от режима внутреннего сглаживания (MDIS), адаптивной фильтрации опорных выборок (RSAF), адаптивного сглаживания опорных выборок (ARSS) и/или другой технологии фильтрации. Например, может использоваться 2-отводный билинейный фильтр, 3-отводный сглаживающий [1,2,1]/4-фильтр или другой фильтр.
(x,-1)
[0165] В одном иллюстративном примере, значение выборки 712 может фильтроваться посредством сглаживающего [1,2,1]-фильтра (или другого фильтра), и фильтрованное значение может использоваться в качестве второй опорной PDPC-выборки R. С использованием 3-отводного сглаживающего [1,2,1]/4-фильтра в качестве примера, крайние внешние опорные выборки p[-1][2N-1] и p[2N-1][-1] не модифицируются (где N является числом выборок в направлении по оси X и/или Y), и все остальные опорные выборки фильтруются посредством использования двух соседних опорных выборок. Как подробнее описано ниже, число отводов фильтра может адаптироваться на основе конкретного режима внутреннего прогнозирования, который выбирается, на основе размера блока, на основе характеристик одного или более соседних блоков, любой комбинации вышеозначенного и/или с использованием других коэффициентов.
(-1,-1)
(-1,y)
(x,-1)
(-1,-1)
(x,-1)
[0166] В некоторых реализациях, третья опорная PDPC-выборка 716 (обозначается как R) может выбираться из соседнего блока, который является смежным с левой верхней выборкой текущего блока 703. Первая опорная PDPC-выборка 714 (R), вторая опорная PDPC-выборка R и третьи опорные PDPC-выборки 716 (R) могут использоваться для того, чтобы модифицировать прогнозную выборку 704 (pred(x',y')) для того, чтобы формировать модифицированную прогнозную выборку, которая может обозначаться как (pred(x, y)). Например, с использованием вышеприведенного уравнения 1, модифицированная прогнозная выборка pred(x, y) может определяться посредством вычисления комбинирования со взвешиванием первой опорной PDPC-выборки 714, второй опорной PDPC-выборки R, третьей опорной PDPC-выборки 716 и прогнозной выборки pred(x',y'). Весовые коэффициенты могут определяться с использованием технологий, описанных выше. Например, весовые PDPC-коэффициенты для смежного левого нижнего диагонального режима, например, составляют: wL=32>>((x'<<1)>>shift), wT=32>>((y'<<1)>>shift), wTL=0 или wL=32>>((x'<<1)>>shift), wT=0, wTL=0.
(x,-1)
[0167] Чтобы определять опорную PDPC-выборку R (например, вторую опорную PDPC-выборку на фиг. 7), устройство кодирования может определять строку, которая находится выше текущего блока (например, непосредственно выше либо на несколько строк выше текущего блока 703), и может определять координату X в определенной строке. Как отмечено выше, координата X в определенной строке основана на направлении (или углу) режима широкоугольного внутреннего прогнозирования, и устройство кодирования может определять опорную выборку на основе определенной строки и определенной координаты X.
[0168] Чтобы определять координату X в определенной строке, устройство кодирования может определять одно из котангенса (например, для смежного правого верхнего диагонального режима) или тангенса (например, для смежного левого нижнего диагонального режима) угла режима широкоугольного внутреннего прогнозирования. Устройство кодирования может определять координату X в определенной строке на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. В одном примере, для смежного левого нижнего диагонального режима широкоугольного внутреннего прогнозирования (например, как показано на фиг. 7), координата X в определенной строке равна x=x'+tan(β)*(y'+1). В другом примере, для смежного правого верхнего диагонального режима, координата X в определенной строке равна x=x'+cotan(α)*(y'+1). Здесь, x' и y' являются координатами X и Y модифицируемой прогнозной выборки.
(-1,y)
[0169] Аналогично, чтобы определять опорную PDPC-выборку R (например, первую опорную PDPC-выборку 714 на фиг. 7), устройство кодирования может определять столбец, который находится слева от текущего блока (например, непосредственно слева или на несколько столбцов слева от текущего блока 703), и может определять координату Y в определенном столбце. Как отмечено выше, координата Y в определенном столбце основана на направлении режима широкоугольного внутреннего прогнозирования. Устройство кодирования может определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной координаты Y.
[0170] Чтобы определять координату Y в определенном столбце, устройство кодирования может определять одно из котангенса (например, для смежного левого нижнего диагонального режима) или тангенса (например, для смежного правого верхнего диагонального режима) угла режима углового внутреннего прогнозирования. Устройство кодирования может определять координату Y в определенном столбце на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. Например, для смежного правого верхнего диагонального режима углового внутреннего прогнозирования, координата Y в определенном столбце равна y'+tan(α)*(x'+1), а для смежного левого нижнего диагонального режима (например, в примере по фиг. 7), координата Y в определенном столбце равна y'+cotan(β)*(x'+1), где x' и y' являются координатами X и Y модифицируемой прогнозной выборки.
[0171] На основе определенных координат X и Y, устройство кодирования может определять опорные PDPC-выборки (например, первую опорную PDPC-выборку на основе определенной строки и определенной координаты X и вторую опорную PDPC-выборку на основе определенного столбца и определенной координаты Y). Устройство кодирования также может определять весовые коэффициенты согласно вышеуказанным примерным технологиям для смежных диагональных режимов (например, для смежного правого верхнего диагонального режима и смежного левого нижнего диагонального режима, в качестве двух примеров). Затем на основе уравнения 1 (в качестве одного неограничивающего примера), устройство кодирования может определять модифицированную прогнозную выборку (например, pred(x, y)).
[0172] Как описано выше, PDPC может применяться к режимам углового внутреннего прогнозирования с минимальным влиянием на сложность. В практической реализации, значения тангенсов (например, tan(α) и/или tan(β)) и котангенсов (например, cotan(α) и/или cotan(β)) углов могут сохраняться в таблицах таким образом, что они не вычисляются на лету (например, в среде выполнения). Далее приводятся примерные таблицы для различных угловых режимов (включающих в себя широкоугольные режимы):
[0173] TanAngTable[32]={0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024}.
[0174] CotanAngTable[32]={0, 8192, 4096, 2731, 2048, 1365, 1024, 819, 683, 585, 512, 455, 410, 356, 315, 282, 256, 234, 210, 182, 160, 144, 128, 112, 95, 80, 64, 48, 32, 24, 16, 8};//(256*32)/Угол.
[0175] Значения в таблице тангенсов "TanAngTable[32]" указывают местоположение выборки, найденной с использованием режима внутреннего прогнозирования. Значения в таблице тангенсов нормализуются посредством значения 32. Например, ссылаясь на фиг. 6, режим 66 выполняется при 45 градусах (относительно вертикального направления из центра блока) с уклоном в 1 и представляет собой прогнозирование из позиции сверху справа в позицию вниз влево (выборочное значение из правого верхнего используется в качестве прогнозного выборочного значения для выборки в середине блока на фиг. 6). Значение "32" в таблице тангенсов соответствует режиму 66, показанному на фиг. 6. Значение "0" в таблице тангенсов соответствует вертикальному режиму (режиму 50), показанному на фиг. 6. Значение "1024" соответствует режиму 80 на фиг. 6.
[0176] Значение в таблице котангенсов "CotanAngTable[32]" указывает местоположение опорной PDPC-выборки согласно соответствующему значению в таблице тангенсов. Значения в таблице котангенсов нормализуются посредством значения 256. Например, первая запись в таблице тангенсов (указывающая местоположение выборки внутреннего прогнозирования) соответствует первой записи в таблице котангенсов (указывающей местоположение опорной PDPC-выборки). В одном примере со ссылкой на фиг. 7, если прогнозная выборка 704 определяется с использованием опорной выборки 712, которая может иметь значение в таблице тангенсов в 35 в таблице тангенсов (18-ой позиции в таблице тангенсов), вторая PDPC-выборка 714 может соответствовать значению в таблице котангенсов в 234 (18-ой позиции в таблице котангенсов). Котангенс соответствует  . Как отмечено выше, значение "0" в таблице тангенсов соответствует вертикальному режиму (режиму 50), показанному на фиг. 6. Следует отметить, что отсутствует противоположный режим относительно вертикального режима 50. Для режима 51, предусмотрен противоположный режим, который представляет собой режим -14. Режим 51 соответствует значению 1 в таблице тангенсов.
[0177] Пример, описанный выше относительно фиг. 7 (и пример, описанный ниже относительно фиг. 8), служит для смежных правых верхних режимов широкоугольного внутреннего прогнозирования. Смежные правые верхние режимы широкоугольного внутреннего прогнозирования предоставляются в качестве примерного широкоугольного внутреннего режима, для которого может применяться PDPC. Примерные технологии также могут расширяться на другие угловые режимы, к примеру, на один или более смежных левых нижних режимов широкоугольного внутреннего прогнозирования либо на другие широкоугольные режимы. Кроме того, в некоторых примерах, одна или более опорных выборок могут иметь координаты X и Y, которые отличаются от координат X и Y прогнозной выборки в блоке прогнозирования. Например, в вышеуказанных примерных уравнениях, чтобы определять координаты X и Y в соответствующих строках и столбцах, чтобы определять опорные выборки, координата X может отличаться от координаты X модифицируемой прогнозной выборки, и координата Y может отличаться от координаты Y модифицируемой прогнозной выборки. В таких случаях, опорные выборки могут не находиться в идентичной строке или идентичном столбце с модифицируемой прогнозной выборкой.
[0178] Как и в случае для PDPC в DC-, планарном, горизонтальном и вертикальном режиме, может отсутствовать дополнительная граничная фильтрация, например, как указано в работе авторов J. Chen, E. Alshina, G. J. Sullivan, J.-R. R. Ohm, J. Boyce "Algorithm description of Joint Exploration Test Model 7", 7-ая JVET-конференция, Торино, Италия, июль 2017 года, JVET-G1001, для диагональных и смежных диагональных режимов, когда PDPC расширяется на эти угловые режимы.
[0179] В некоторых случаях, все горизонтальные угловые режимы могут преобразовываться в вертикальные режимы посредством зеркального отражения блока вокруг правой нижней диагонали. Симметрия вокруг вертикального режима обеспечивает возможность дополнительного уменьшения числа углов до 33 с сохраненными значениями тангенса и котангенса в TanAngTable и CotanAngTable, соответственно. Например, как описано выше, значение "0" в таблице тангенсов соответствует вертикальному режиму (режиму 50), показанному на фиг. 6. На основе симметрии вокруг вертикального режима, значение "0" также может соответствовать горизонтальному режиму (режиму 18) на фиг. 6. Вследствие требуемой целочисленной точности, значения в обеих таблицах масштабируются на коэффициент 64 в случае TanAngTable и значение 1024 в случае CotanAngTable. Умножения в вышеприведенных формулах для вычисления координат X и Y не допускаются посредством накопления табличных значений, соответствующих угловому режиму, с увеличением x' и y' при прохождении по блоку прогнозирования.
[0180] В некоторых случаях, опорная PDPC-выборка, идентифицированная посредством направления (или угла) режима широкоугольного внутреннего прогнозирования, может не соответствовать целочисленной позиции опорной выборки, а вместо этого может соответствовать дробной позиции (например, между двумя выборками в целочисленных позициях). Фиг. 8 является схемой, иллюстрирующей другой пример PDPC, выполняемого с помощью широкоугольного режима. Текущий кинокадр 802 включает в себя текущий блок 803, который представляет собой прямоугольный блок 4×8 выборок. Аналогично этому на фиг. 7, также показаны соседние восстановленные опорные выборки 806 и соседние восстановленные опорные выборки 808, которые могут представлять собой часть одного или более блоков выше и слева, соответственно, от текущего кинокадра 802.
[0181] Устройство кодирования (например, видеокодер 22 и/или видеодекодер 30) может определять размер текущего блока 803 и может выбирать режим внутреннего прогнозирования, который следует выполнять, на основе размера текущего блока 803. Режим широкоугольного внутреннего прогнозирования может использоваться на основе определения того, что текущий блок представляет собой прямоугольный блок. Например, аналогично описанному выше относительно фиг. 7, на основе анализа различных доступных режимов внутреннего прогнозирования (например, на основе SAE или другой меры подобия, отмеченной выше), устройство кодирования может выбирать режим широкоугольного внутреннего прогнозирования (например, режим широкоугольного -2, -3 или -4 внутреннего прогнозирования) для выполнения внутреннего прогнозирования для выборочного местоположения текущего блока 803. Стрелка 810 на фиг. 8 указывает направление прогнозирования выбранного режима широкоугольного внутреннего прогнозирования и исходит из опорной выборки 814, используемой для внутреннего прогнозирования прогнозной выборки 804 (обозначается как pred(x',y')). Режим широкоугольного внутреннего прогнозирования, проиллюстрированный на фиг. 8, представляет собой смежный режим вверх и вправо по диагонали (например, режим широкоугольного внутреннего прогнозирования в -3 из фиг. 6).
(x,-1)
(-1,y)
(-1,-1)
(-1,-1)
[0182] С использованием направления (представленного посредством стрелки 810) выбранного режима широкоугольного внутреннего прогнозирования, значение выборки 814 из соседних опорных выборок 806 может выбираться в качестве значения для прогнозной выборки 804 (обозначается как pred(x',y')) в блоке прогнозирования текущего блока 803. Устройство кодирования затем может определять одну или более опорных PDPC-выборок, которые используются для того, чтобы модифицировать значение прогнозной выборки 804. Например, с использованием технологий, аналогичных технологиям, описанным выше, могут определяться первая опорная PDPC-выборка (обозначается как R) и, в некоторых случаях, вторая опорная PDPC-выборка (обозначается как R) и/или третья опорная PDPC-выборка 816 (обозначается как R). Третья опорная PDPC-выборка 816 (R) может выбираться из соседнего блока, который является смежным с левой верхней выборкой текущего блока 803.
(x,-1)
(x,-1)
[0183] Прогнозная выборка 804 (pred(x',y')) расположена в местоположении (x', y') в блоке прогнозирования. Первая опорная PDPC-выборка R выбирается из строки опорных выборок 808, расположенных выше текущего блока 803 и вдоль идентичного направления прогнозирования (заданного посредством стрелки 810) режима широкоугольного внутреннего прогнозирования. Для угла α, показанного на фиг. 8 (также показанного на фиг. 3), координата X опорной выборки Rопределяется следующим образом: x=x'+cotan(α)*(y'+1), где cotan(α) является котангенсом угла α. Выше описываются примеры значений котангенса.
(-1,y)
(-1,y)
(-1,y)
(-1,y)
(-1,y)
(-1,y)
[0184] Вторая опорная PDPC-выборка (R) также может выбираться из идентичного выборочного местоположения 814, которое использовано для прогнозной выборки 804. В таком примере, идентичное выборочное значение (значение выборки 814) может использоваться для прогнозной выборки 804 и для второй опорной PDPC-выборки R, причем в этом случае прогнозная выборка 804 (pred(x',y')) является идентичной второй опорной PDPC-выборке R. Как отмечено выше, значение выборки 814 может фильтроваться или сглаживаться для того, чтобы получать вторую опорную PDPC-выборку R, причем в этом случае значение второй опорной PDPC-выборки Rдолжно отличаться от значения прогнозной выборки 804. Для угла α, показанного на фиг. 8, координата Y R задается следующим образом: y=y'+tan(α)*(x'+1), где tan(α) является тангенсом угла α. Выше описываются примеры значений тангенса.
(x,-1)
(-1,y)
(-1,-1)
[0185] Первая опорная PDPC-выборка R, вторая опорная PDPC-выборка R и третьи опорные PDPC-выборки 816 (R) могут использоваться для того, чтобы модифицировать прогнозную выборку 804 (pred(x',y')) для того, чтобы формировать модифицированную прогнозную выборку, обозначаемую как (pred(x, y)), к примеру, посредством вычисления комбинирования со взвешиванием (например, с использованием вышеприведенного уравнения 1) опорных PDPC-выборок и прогнозной выборки pred(x',y'). Например, весовые PDPC-коэффициенты для смежного правого верхнего диагонального режима, например, составляют: wT=32>>((y'<<1)>>shift), wL=32>>((x'<<1)>>shift), wTL=0 или wT=32>>((y'<<1)>>shift), wL=0, wTL=0.
(x,-1)
(x,-1)
[0186] Как показано на фиг. 8, первая опорная PDPC-выборка Rне соответствует целочисленной позиции опорной выборки и вместо этого находится в дробной позиции между двумя выборками 812, которые находятся в целочисленных позициях. В таком случае, опорная PDPC-выборка Rможет интерполироваться на основе двух опорных выборок 812. Интерполяция опорных выборок 812 может выполняться, например, посредством линейной или кубической интерполяции, либо может использоваться округление до ближайшего соседнего узла, если вычисляются дробные значения. В некоторых случаях, интерполяция может выполняться с использованием интерполяционного фильтра. Например, интерполяционный фильтр может применять линейную интерполяцию между двумя опорными выборками 812. В некоторых случаях, интерполяционный фильтр и число отводов, используемых для интерполяционного фильтра, используемого для получения опорной PDPC-выборки, могут зависеть от режима внутреннего прогнозирования, размера блока (например, ширины и высоты), характеристик одного или более соседних блоков (например, того, кодируется или нет соседний блок с использованием внутреннего прогнозирования), любой комбинации вышеозначенного и/или от других факторов. В одном иллюстративном примере, 6-отводный гауссов фильтр может использоваться для интерполяции для определенных размеров блоков и режимов за пределами 45 градусов, и 4-отводный гауссов фильтр может использоваться для других размеров блоков и режимов за пределами -135 градусов.
[0187] Интерполяция представляет собой один иллюстративный пример определения опорной PDPC-выборки, которая находится в дробной (нецелочисленной) позиции. В некоторых примерах, устройство кодирования (например, видеокодер 22 и/или видеодекодер 30) может выполнять, по меньшей мере, одно из интерполяции, округления со смещением и/или округления без смещения. Устройство кодирования может выполнять такое округление с или без смещения на основе соседних выборок в наборе из одной или более выборок для того, чтобы формировать одну или более опорных выборок.
[0188] В некоторых примерах, отсечение может требоваться для того, чтобы предотвращать доступ опорных выборок за пределами границ опорного линейного буфера в случае, если вычисляются большие значения координат. Если отсечение выполняется, последняя доступная опорная выборка может использоваться, или PDPC может откатываться только к угловому внутреннему прогнозированию, что, например, является эквивалентным применению нулевых весовых коэффициентов для wL, wT, wTL в уравнении 1. Например, чтобы определять одну или более опорных выборок, которые являются внешними для текущего блока, на основе режима углового внутреннего прогнозирования, устройство кодирования может быть выполнено с возможностью определять то, что одна или более выборок, внешних для текущего блока, идентифицированного на основе режима углового внутреннего прогнозирования, не сохраняются в опорном линейном буфере, и может определять одну или более опорных выборок на основе последней опорной выборки, сохраненной в опорном линейном буфере.
[0189] В некоторых примерах, вместо использования последней выборки в опорном линейном буфере, PDPC может деактивироваться для текущего блока, или PDPC может деактивироваться для определенных прогнозированных выборок таким образом, что нормальное внутреннее прогнозирование (например, без модифицированных прогнозных выборок) используется. В качестве одного примера, для прогнозной выборки в блоке прогнозирования, устройство кодирования может определять то, что первая опорная выборка доступна в опорном буфере, но что вторая опорная выборка не доступна в опорном буфере. В этом примере, устройство кодирования может определять то, что PDPC деактивируется для прогнозной выборки. Тем не менее, в некоторых примерах, устройство кодирования может использовать первую опорную выборку для PDPC и не использовать вторую опорную выборку (например, посредством задания весового коэффициента для второй опорной выборки равным нулю).
[0190] В некоторых примерах, как отмечено выше, опорные выборки, используемые для PDPC-фильтрации, могут фильтроваться (или сглаживаться) посредством фильтра (например, [1,2,1]-фильтра или более сильного фильтра). Число отводов может адаптироваться на основе конкретного режима, размера блока (например, ширины и высоты), характеристик одного или более соседних блоков, любой комбинации вышеозначенного и/или на основе других факторов. Например, если внутренний режим указывает широкоугольный режим прогнозирования, более сильный фильтр может применяться к опорным выборкам, чтобы получать опорные PDPC-выборки. В некоторых примерах, для больших расстояний внутреннего прогнозирования, может применяться сглаживающая фильтрация, которая удаляет некоторый шум и может приводить к лучшему прогнозированию.
[0191] В некоторых случаях, фильтр, используемый для опорной фильтрации, и/или фильтр, используемый для интерполяционной фильтрации, могут отличаться для вертикальных опорных выборок (слева от текущего блока) и горизонтальных опорных выборок (выше текущего блока). В некоторых альтернативах, решение использовать различные фильтры может зависеть от размера блока (например, ширины и высоты), внутреннего режима, используемый для прогнозирования, характеристик одного или более соседних блоков, любой комбинации вышеозначенного и/или от других факторов.
[0192] В некоторых примерах, более одной опорной линии из соседнего блока могут использоваться для внутреннего прогнозирования и/или для определения опорных PDPC-выборок. Когда более одной опорной линии из соседнего блока могут использоваться для внутреннего прогнозирования, опорные PDPC-выборки могут получаться для режимов широкоугольного внутреннего прогнозирования для дополнительной опорной линии(й), которая может получаться посредством комбинирования двух или более опорных линий либо посредством выбора одной или более опорных линий из окружения блока.
[0193] В некоторых случаях, когда широкоугольное внутреннее прогнозирование используется, PDPC может ограничиваться на основе размера блока, внутреннего режима, используемого для прогнозирования, характеристик одного или более соседних блоков, любой комбинации вышеозначенного и/или на основе других факторов. Например, PDPC может деактивироваться для небольших блоков, которые меньше порогового значения размера (например, для блоков с шириной и/или высотой меньше четырех пикселов, к примеру, для блоков 4×4).
[0194] Как описано выше, в некоторых примерах, устройство кодирования может выполнять примерные PDPC-технологии для множества прогнозных выборок в блоке прогнозирования. Тем не менее, могут возникать случаи, в которых PDPC-технологии используются для некоторых прогнозных выборок, но не для других прогнозных выборок в идентичном блоке прогнозирования. Например, для первой прогнозной выборки в блоке прогнозирования, устройство кодирования (например, видеокодер 22 и/или видеодекодер 30) может выполнять PDPC-технологии, описанные в данном документе. Тем не менее, для второй прогнозной выборки в идентичном блоке прогнозирования, опорные выборки, необходимые для выполнения PDPC-технологий для второй прогнозной выборки, могут не сохраняться в опорном линейном буфере. В этом примере, для второй прогнозной выборки, устройство кодирования может не выполнять PDPC-технологии, и могут использоваться технологии нормального внутреннего прогнозирования. В некоторых случаях, для второй прогнозной выборки, может быть возможным то, что одна из опорных выборок доступна в опорном линейном буфере, а другая не доступна. В некоторых примерах, устройство кодирования может не выполнять PDPC-технологии для второй прогнозной выборки или может использовать только опорную выборку, которая доступна, и назначать нулевой весовой коэффициент весовым коэффициентам, применяемым к опорной выборке, которая не доступна.
[0195] Фиг. 9 является блок-схемой последовательности операций способа, иллюстрирующей пример процесса 900 декодирования видеоданных с использованием одной или более технологий, описанных в данном документе. На этапе 902, процесс 900 включает в себя получение текущего блока видеоданных. В одном иллюстративном примере, текущий блок видеоданных может включать в себя блок 703 видеоданных, показанный на фиг. 7. В другом иллюстративном примере текущий блок видеоданных может включать в себя блок 803 видеоданных, показанный на фиг. 8.
[0196] На этапе 904, процесс 900 включает в себя определение размера текущего блока. В некоторых случаях, определение размера текущего блока может включать в себя определение того, что ширина блока и высота блока представляют собой различные размеры, что указывает то, что блок представляет собой прямоугольный блок. В некоторых случаях, определение размера текущего блока может включать в себя определение угла или направления диагонали текущего блока (например, диагонального направления из левого нижнего угла текущего блока в правый верхний угол текущего блока либо диагонального направления из левого верхнего угла текущего блока в правый нижний угол текущего блока). В некоторых случаях, отношение размеров блоков для текущего блока может использоваться для того, чтобы определять диагональное направление (например, с использованием теоремы Пифагора: ). Как отмечено выше, диагональное направление (например, из позиции слева снизу в позицию справа сверху или из позиции слева сверху в позицию справа снизу) может использоваться для того, чтобы определять разрешенный диапазон направлений (или углов) прогнозирования.
[0197] На этапе 906, процесс 900 включает в себя определение, на основе размера текущего блока, режима широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Режим широкоугольного внутреннего прогнозирования не представляет собой режим DC-, планарного, горизонтального или вертикального внутреннего прогнозирования. Например, угол режима широкоугольного внутреннего прогнозирования может составлять меньше -135 градусов (например, режимы -1, -2, -3, ..., до -14, показанные на фиг. 6) или больше 45 градусов (например, режимы 67, 68, 69, ..., до 80, показанные на фиг. 6) относительно прогнозной выборки (например, относительно вертикального направления из прогнозной выборки).
[0198] В качестве примерной реализации этапа 906, устройство кодирования (например, устройство для декодирования видеоданных) может определять то, что режим широкоугольного внутреннего прогнозирования может использоваться для текущего блока на основе размера текущего блока. Например, режим широкоугольного внутреннего прогнозирования может использоваться, когда определяется то, что, текущий блок представляет собой прямоугольный блок (ширина и высота имеют различные размеры). В некоторых случаях, любой режим внутреннего прогнозирования, имеющий направление (или угол), которое не превышает диагональ текущего блока (из левого нижнего угла в правый верхний угол блока или из левого верхнего угла в правый нижний угол блока), может выбираться для использования при прогнозировании текущего блока. В некоторых случаях, отношения размеров блоков могут использоваться для того, чтобы определять режим внутреннего прогнозирования, который следует использовать. Например, отношение размеров блоков для прямоугольного блока может использоваться для того, чтобы определять диагональное направление (например, из позиции слева снизу в позицию справа сверху) и в силу этого разрешенный диапазон направлений прогнозирования.
[0199] В некоторых примерах, индикатор режима широкоугольного внутреннего прогнозирования может передаваться в служебных сигналах в потоке битов. В некоторых примерах, режим внутреннего прогнозирования, который минимизирует остаток между блоком прогнозирования и блоком, который должен кодироваться (например, на основе суммы абсолютных ошибок (SAE), суммы абсолютных разностей (SAD), суммы абсолютных преобразованных разностей (SATD) или другой меры подобия), может выбираться для использования для текущего блока. С использованием SAE в качестве иллюстративного примера, SAE для каждого прогнозирования, определенная с использованием каждого из режимов внутреннего прогнозирования, указывает абсолютную величину ошибки прогнозирования. Режим внутреннего прогнозирования, который имеет наилучшее совпадение с фактическим текущим блоком, задается посредством режима внутреннего прогнозирования, который обеспечивает наименьшую SAE. Например, процесс 900 может выбирать режим широкоугольного внутреннего прогнозирования на основе SAE-анализа, который может указывать режим широкоугольного внутреннего прогнозирования в качестве оптимального режима на основе того, что текущий блок является прямоугольным.
[0200] На этапе 908, процесс 900 включает в себя определение блока прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Каждая прогнозная выборка может определяться с использованием режима широкоугольного внутреннего прогнозирования. На этапе 910, процесс 900 включает в себя модификацию прогнозной выборки из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Например, модификация прогнозной выборки может включать в себя определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок.
(-1,y)
(x,-1)
[0201] В некоторых примерах, одна или более опорных выборок, которые являются внешними для текущего блока, определяются с использованием угла режима широкоугольного внутреннего прогнозирования относительно прогнозной выборки. Например, как показано на фиг. 7, первая опорная PDPC-выборка 714 (обозначается как R) и, в некоторых случаях, вторая опорная PDPC-выборка Rопределяются вдоль направления (или угла) режима широкоугольного внутреннего прогнозирования, представленного посредством стрелки 710.
(x,-1)
(x,-1)
[0202] В некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение строки, которая находится выше текущего блока, определение координаты X в определенной строке и определение опорной выборки из одной или более опорных выборок на основе определенной строки и определенной координаты X. В таких случаях, координата X в определенной строке равна координате X прогнозной выборки плюс координата Y прогнозной выборки плюс 1. Дополнительно, в некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение строки, которая находится выше текущего блока, определение координаты X в определенной строке (при этом координата X в определенной строке основана на углу режима широкоугольного внутреннего прогнозирования относительно прогнозной выборки) и определение опорной выборки из одной или более опорных выборок на основе определенной строки и определенной координаты X. Например, определение координаты X в определенной строке может включать в себя определение одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования и определение координаты X в определенной строке на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. В одном иллюстративном примере, со ссылкой на фиг. 7, вторая опорная PDPC-выборка R определяется из строки соседних восстановленных опорных выборок 708. Координата X R может определяться в качестве x=x'+tan(β)*(y'+1), где tan(β) является тангенсом угла β, показанного на фиг. 7. В таком примере, координата X (x) в определенной строке (например, в строке 708 на фиг. 7) равна координате X прогнозной выборки (x') плюс координата Y прогнозной выборки (y') плюс 1 и также основана на углу (на тангенсе угла β, tan(β)) режима широкоугольного внутреннего прогнозирования.
(-1,y)
(-1,y)
[0203] В некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение столбца, который находится слева от текущего блока, определение координаты Y в определенном столбце и определение опорной выборки из одной или более опорных выборок на основе определенного столбца и определенной координаты Y. В таких случаях, координата Y в определенном столбце равна координате Y прогнозной выборки плюс координата X прогнозной выборки плюс 1. Дополнительно, в некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение столбца, который находится слева от текущего блока, определение координаты Y в определенном столбце (при этом координата Y в определенном столбце основана на углу режима широкоугольного внутреннего прогнозирования) и определение опорной выборки из одной или более опорных выборок на основе определенного столбца и определенной координаты Y. Например, определение координаты Y в определенном столбце может включать в себя определение одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования и определение координаты Y в определенном столбце на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. В одном иллюстративном примере, со ссылкой на фиг. 7, первая опорная PDPC-выборка 714 (R) определяется из столбца соседних восстановленных опорных выборок 706. Координата Y R может определяться в качестве y=y'+cotan(β)*(x'+1), где cotan(β) является котангенсом угла β, показанного на фиг. 7. В таком примере, координата Y (y) в определенном столбце (например, в столбце 706 на фиг. 7) равна координате Y прогнозной выборки (y') плюс координата X прогнозной выборки (x') плюс 1 и также основана на углу (на котангенсе угла β, cotan(β)) режима широкоугольного внутреннего прогнозирования.
(x,-1)
[0204] В некоторых реализациях, определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования может включать в себя определение набора из одной или более выборок на основе режима широкоугольного внутреннего прогнозирования и, по меньшей мере, одно из интерполяции, округления со смещением или округления без смещения набора из одной или более выборок для того, чтобы формировать одну или более опорных выборок. Например, ссылаясь на фиг. 8, интерполяция может выполняться для выборок 812, чтобы формировать опорную PDPC-выборку R.
(-1,-1)
[0205] В некоторых примерах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит определение одной или более опорных выборок, имеющих и координату X и координату Y, которые отличаются от соответствующих координаты X и координаты Y прогнозной выборки в блоке прогнозирования. Например, как описано относительно фиг. 7, третья опорная PDPC-выборка 716 (обозначается как R) также может определяться из соседнего блока, который является смежным с левой верхней выборкой текущего блока 703.
[0206] В некоторых реализациях, определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования может включать в себя определение того, что одна или более выборок, внешних для текущего блока, идентифицированного на основе режима широкоугольного внутреннего прогнозирования, не сохраняются в опорном линейном буфере. Одна или более опорных выборок могут определяться на основе последней опорной выборки, сохраненной в опорном линейном буфере, на основе одной или более выборок, внешних для текущего блока, не сохраняемых в опорном линейном буфере.
[0207] В некоторых аспектах, процесс 900 может включать в себя определение одного или более весовых коэффициентов на основе координат X и Y прогнозной выборки. Например, как отмечено выше, весовые PDPC-коэффициенты для смежного правого верхнего диагонального режима могут определяться следующим образом: wT=32>>((y'<<1)>>shift), wL=32>>((x'<<1)>>shift), wTL=0 или wT=32>>((y'<<1)>>shift), wL=0, wTL=0. В другом примере, как отмечено выше, весовые PDPC-коэффициенты для смежного левого нижнего диагонального режима могут определяться следующим образом: wL=32>>((x'<<1)>>shift), wT=32>>((y'<<1)>>shift), wTL=0 или wL=32>>((x'<<1)>>shift), wT=0, wTL=0. Определенные один или более весовых коэффициентов могут использоваться для того, чтобы модифицировать прогнозную выборку наряду с одной или более опорных выборок. Например, модифицированная прогнозная выборка может формироваться на основе определенной одной или более опорных выборок, определенного одного или более весовых коэффициентов и прогнозной выборки (например, с использованием вышеприведенного уравнения 1).
[0208] В некоторых примерах, модификация прогнозной выборки из множества прогнозных выборок блока прогнозирования может включать в себя модификацию первой прогнозной выборки блока прогнозирования. Например, одна или более опорных выборок могут включать в себя первый набор из одной или более опорных выборок, и процесс 900 может включать в себя определение, для второй прогнозной выборки блока прогнозирования, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере. В некоторых случаях, PDPC может не применяться ко второй прогнозной выборке на основе определения, для второй прогнозной выборки, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере. В некоторых случаях, PDPC может применяться ко второй прогнозной выборке только с использованием опорных выборок, доступных в опорном линейном буфере, на основе определения, для второй прогнозной выборки, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере.
[0209] На этапе 912, процесс 900 включает в себя восстановление выборки текущего блока на основе модифицированной прогнозной выборки и остаточного значения. Например, как описано выше, устройство для декодирования видеоданных может определять остаточное значение остаточного блока на основе принимаемой информации и может суммировать остаточные значения остаточного блока с прогнозными выборками блока прогнозирования для того, чтобы восстанавливать текущий блок. Устройство для декодирования видеоданных может принимать информацию для остаточного значения (например, коэффициенты для остаточных блоков преобразования в потоке битов) и может восстанавливать выборку посредством суммирования остаточного значения с модифицированной прогнозной выборкой (модифицированной с использованием PDPC) для того, чтобы восстанавливать выборку в текущем блоке.
[0210] Фиг. 10 является блок-схемой последовательности операций способа, иллюстрирующей пример процесса 1000 кодирования видеоданных с использованием одной или более технологий, описанных в данном документе. На этапе 1002, процесс 1000 включает в себя получение текущего блока видеоданных. В одном иллюстративном примере, текущий блок видеоданных может включать в себя блок 703 видеоданных, показанный на фиг. 7. В другом иллюстративном примере текущий блок видеоданных может включать в себя блок 803 видеоданных, показанный на фиг. 8.
[0211] На этапе 1004, процесс 1000 включает в себя определение размера текущего блока. В некоторых случаях, определение размера текущего блока может включать в себя определение того, что ширина блока и высота блока представляют собой различные размеры, что указывает то, что блок представляет собой прямоугольный блок. В некоторых случаях, определение размера текущего блока может включать в себя определение угла или направления диагонали текущего блока (например, диагонального направления из левого нижнего угла текущего блока в правый верхний угол текущего блока либо диагонального направления из левого верхнего угла текущего блока в правый нижний угол текущего блока). В некоторых случаях, отношение размеров блоков для текущего блока может использоваться для того, чтобы определять диагональное направление (например, с использованием теоремы Пифагора: ). Как отмечено выше, диагональное направление (например, из позиции слева снизу в позицию справа сверху или из позиции слева сверху в позицию справа снизу) может использоваться для того, чтобы определять разрешенный диапазон направлений (или углов) прогнозирования.
[0212] На этапе 1006, процесс 1000 включает в себя определение, на основе размера текущего блока, режима широкоугольного внутреннего прогнозирования, который следует использовать для текущего блока. Режим широкоугольного внутреннего прогнозирования не представляет собой режим DC-, планарного, горизонтального или вертикального внутреннего прогнозирования. Например, угол режима широкоугольного внутреннего прогнозирования может составлять меньше -135 градусов (например, режимы -1, -2, -3, ..., до -14, показанные на фиг. 6) или больше 45 градусов (например, режимы 67, 68, 69, ..., до 80, показанные на фиг. 6) относительно прогнозной выборки (например, относительно вертикального направления из прогнозной выборки).
[0213] В качестве примерной реализации блока 1006, устройство кодирования (например, устройство для кодирования видеоданных) может определять то, что режим широкоугольного внутреннего прогнозирования может использоваться для текущего блока на основе размера текущего блока. Например, режим широкоугольного внутреннего прогнозирования может использоваться, когда определяется то, что, текущий блок представляет собой прямоугольный блок (ширина и высота имеют различные размеры). В некоторых случаях, любой режим внутреннего прогнозирования, имеющий направление (или угол), которое не превышает диагональ текущего блока (из левого нижнего угла в правый верхний угол блока или из левого верхнего угла в правый нижний угол блока), может выбираться для использования при прогнозировании текущего блока. В некоторых случаях, отношения размеров блоков могут использоваться для того, чтобы определять режим внутреннего прогнозирования, который следует использовать. Например, отношение размеров блоков для прямоугольного блока может использоваться для того, чтобы определять диагональное направление (например, из позиции слева снизу в позицию справа сверху) и в силу этого разрешенный диапазон направлений прогнозирования. Режим внутреннего прогнозирования, который минимизирует остаток между блоком прогнозирования и блоком, который должен кодироваться (например, на основе суммы абсолютных ошибок (SAE), суммы абсолютных разностей (SAD), суммы абсолютных преобразованных разностей (SATD) или другой меры подобия), может выбираться для использования для текущего блока. С использованием SAE в качестве иллюстративного примера, SAE для каждого прогнозирования, определенная с использованием каждого из режимов внутреннего прогнозирования, указывает абсолютную величину ошибки прогнозирования. Режим внутреннего прогнозирования, который имеет наилучшее совпадение с фактическим текущим блоком, задается посредством режима внутреннего прогнозирования, который обеспечивает наименьшую SAE. Например, процесс 900 может выбирать режим широкоугольного внутреннего прогнозирования на основе SAE-анализа, который может указывать режим широкоугольного внутреннего прогнозирования в качестве оптимального режима на основе того, что текущий блок является прямоугольным.
[0214] На этапе 1008, процесс 1000 включает в себя определение блока прогнозирования для текущего блока с использованием режима широкоугольного внутреннего прогнозирования. Блок прогнозирования включает в себя множество прогнозных выборок. Блок прогнозирования включает в себя множество прогнозных выборок. Каждая прогнозная выборка может определяться с использованием режима широкоугольного внутреннего прогнозирования. На этапе 1010, процесс 1000 включает в себя модификацию прогнозной выборки из множества прогнозных выборок блока прогнозирования для того, чтобы формировать модифицированную прогнозную выборку с использованием позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Например, модификация прогнозной выборки может включать в себя определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования и модификацию прогнозной выборки для того, чтобы формировать модифицированную прогнозную выборку на основе определенной одной или более опорных выборок.
(-1,y)
(x,-1)
[0215] В некоторых примерах, одна или более опорных выборок, которые являются внешними для текущего блока, определяются с использованием угла режима широкоугольного внутреннего прогнозирования относительно прогнозной выборки. Например, как показано на фиг. 7, первая опорная PDPC-выборка 714 (обозначается как R) и, в некоторых случаях, вторая опорная PDPC-выборка Rопределяются вдоль направления (или угла) режима широкоугольного внутреннего прогнозирования, представленного посредством стрелки 710.
(x,-1)
(x,-1)
[0216] В некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение строки, которая находится выше текущего блока, определение координаты X в определенной строке и определение опорной выборки из одной или более опорных выборок на основе определенной строки и определенной координаты X. В таких случаях, координата X в определенной строке равна координате X прогнозной выборки плюс координата Y прогнозной выборки плюс 1. Дополнительно, в некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение строки, которая находится выше текущего блока, определение координаты X в определенной строке (при этом координата X в определенной строке основана на углу режима широкоугольного внутреннего прогнозирования относительно прогнозной выборки) и определение опорной выборки из одной или более опорных выборок на основе определенной строки и определенной координаты X. Например, определение координаты X в определенной строке может включать в себя определение одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования и определение координаты X в определенной строке на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. В одном иллюстративном примере, со ссылкой на фиг. 7, вторая опорная PDPC-выборка R определяется из строки соседних восстановленных опорных выборок 708. Координата X R может определяться в качестве x=x'+tan(β)*(y'+1), где tan(β) является тангенсом угла β, показанного на фиг. 7. В таком примере, координата X (x) в определенной строке (например, в строке 708 на фиг. 7) равна координате X прогнозной выборки (x') плюс координата Y прогнозной выборки (y') плюс 1 и также основана на углу (на тангенсе угла β, tan(β)) режима широкоугольного внутреннего прогнозирования.
(-1,y)
(-1,y)
[0217] В некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение столбца, который находится слева от текущего блока, определение координаты Y в определенном столбце и определение опорной выборки из одной или более опорных выборок на основе определенного столбца и определенной координаты Y. В таких случаях, координата Y в определенном столбце равна координате Y прогнозной выборки плюс координата X прогнозной выборки плюс 1. Дополнительно, в некоторых случаях, определение одной или более опорных выборок, которые являются внешними для текущего блока, может включать в себя определение столбца, который находится слева от текущего блока, определение координаты Y в определенном столбце (при этом координата Y в определенном столбце основана на углу режима широкоугольного внутреннего прогнозирования) и определение опорной выборки из одной или более опорных выборок на основе определенного столбца и определенной координаты Y. Например, определение координаты Y в определенном столбце может включать в себя определение одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования и определение координаты Y в определенном столбце на основе одного из котангенса или тангенса угла режима широкоугольного внутреннего прогнозирования, координаты X прогнозной выборки и координаты Y прогнозной выборки. В одном иллюстративном примере, со ссылкой на фиг. 7, первая опорная PDPC-выборка 714 (R) определяется из столбца соседних восстановленных опорных выборок 706. Координата Y R может определяться в качестве y=y'+cotan(β)*(x'+1), где cotan(β) является котангенсом угла β, показанного на фиг. 7. В таком примере, координата Y (y) в определенном столбце (например, в столбце 706 на фиг. 7) равна координате Y прогнозной выборки (y') плюс координата X прогнозной выборки (x') плюс 1 и также основана на углу (на котангенсе угла β, cotan(β)) режима широкоугольного внутреннего прогнозирования.
(x,-1)
[0218] В некоторых реализациях, определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования может включать в себя определение набора из одной или более выборок на основе режима широкоугольного внутреннего прогнозирования и, по меньшей мере, одно из интерполяции, округления со смещением или округления без смещения набора из одной или более выборок для того, чтобы формировать одну или более опорных выборок. Например, ссылаясь на фиг. 8, интерполяция может выполняться для выборок 812, чтобы формировать опорную PDPC-выборку R.
(-1,-1)
[0219] В некоторых примерах, определение одной или более опорных выборок, которые являются внешними для текущего блока, содержит определение одной или более опорных выборок, имеющих и координату X и координату Y, которые отличаются от соответствующих координаты X и координаты Y прогнозной выборки в блоке прогнозирования. Например, как описано относительно фиг. 7, третья опорная PDPC-выборка 716 (обозначается как R) также может определяться из соседнего блока, который является смежным с левой верхней выборкой текущего блока 703.
[0220] В некоторых реализациях, определение одной или более опорных выборок, которые являются внешними для текущего блока, на основе режима широкоугольного внутреннего прогнозирования может включать в себя определение того, что одна или более выборок, внешних для текущего блока, идентифицированного на основе режима широкоугольного внутреннего прогнозирования, не сохраняются в опорном линейном буфере. Одна или более опорных выборок могут определяться на основе последней опорной выборки, сохраненной в опорном линейном буфере, на основе одной или более выборок, внешних для текущего блока, не сохраняемых в опорном линейном буфере.
[0221] В некоторых аспектах, процесс 900 может включать в себя определение одного или более весовых коэффициентов на основе координат X и Y прогнозной выборки. Например, как отмечено выше, весовые PDPC-коэффициенты для смежного правого верхнего диагонального режима могут определяться следующим образом: wT=32>>((y'<<1)>>shift), wL=32>>((x'<<1)>>shift), wTL=0 или wT=32>>((y'<<1)>>shift), wL=0, wTL=0. В другом примере, как отмечено выше, весовые PDPC-коэффициенты для смежного левого нижнего диагонального режима могут определяться следующим образом: wL=32>>((x'<<1)>>shift), wT=32>>((y'<<1)>>shift), wTL=0 или wL=32>>((x'<<1)>>shift), wT=0, wTL=0. Определенные один или более весовых коэффициентов могут использоваться для того, чтобы модифицировать прогнозную выборку наряду с одной или более опорных выборок. Например, модифицированная прогнозная выборка может формироваться на основе определенной одной или более опорных выборок, определенного одного или более весовых коэффициентов и прогнозной выборки (например, с использованием вышеприведенного уравнения 1).
[0222] В некоторых примерах, модификация прогнозной выборки из множества прогнозных выборок блока прогнозирования может включать в себя модификацию первой прогнозной выборки блока прогнозирования. Например, одна или более опорных выборок могут включать в себя первый набор из одной или более опорных выборок, и процесс 900 может включать в себя определение, для второй прогнозной выборки блока прогнозирования, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере. В некоторых случаях, PDPC может не применяться ко второй прогнозной выборке на основе определения, для второй прогнозной выборки, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере. В некоторых случаях, PDPC может применяться ко второй прогнозной выборке только с использованием опорных выборок, доступных в опорном линейном буфере, на основе определения, для второй прогнозной выборки, того, что, по меньшей мере, одна опорная выборка из второго набора из одной или более опорных выборок для второй прогнозной выборки не сохраняется в опорном линейном буфере.
[0223] На этапе 1012, процесс 1000 включает в себя определение остаточного значения для остаточного блока на основе модифицированной прогнозной выборки и выборочного значения в текущем блоке. Например, остаточное значение может включать в себя разность (или ошибку) между модифицированной прогнозной выборкой и выборочным значением в текущем блоке. Блок преобразования (например, TU, TB и т.п.) с остаточными значениями и/или коэффициентами преобразования может формироваться на основе одного или более остаточных значений, определенных для текущего блока. Например, остаточные данные могут преобразовываться из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования. Остаточные коэффициенты преобразования могут квантоваться, и в некоторых случаях, энтропийное кодирование может применяться к квантованным коэффициентам преобразования. На этапе 1014, процесс 1000 включает в себя передачу в служебных сигналах информации, указывающей остаточное значение. Информация может включать в себя остаточный блок преобразования (который может энтропийно кодироваться), остаточные коэффициенты преобразования, квантованные остаточные коэффициенты преобразования или энтропийно кодированные квантованные остаточные коэффициенты преобразования.
[0224] В некоторых примерах, процессы 900 и 1000 могут выполняться посредством вычислительного устройства или оборудования. Например, процесс 900 может выполняться посредством видеодекодера 30 либо посредством устройства или оборудования (например, камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки) для декодирования видеоданных, которое включает в себя видеодекодер 30. В другом примере, процесс 1000 может выполняться посредством видеокодера 22 либо посредством устройства или оборудования (например, камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки) для кодирования видеоданных, которое включает в себя видеокодер 22. В некоторых случаях, вычислительное устройство или оборудование может включать в себя процессор, микропроцессор, микрокомпьютер или другой компонент устройства, которое выполнено с возможностью выполнять этапы одного или обоих из процессов 900 и 1000. В некоторых примерах, вычислительное устройство или оборудование может включать в себя один или более компонентов, к примеру, одну или более камер для захвата одного или более изображений, устройство ввода (например, интерфейс сенсорного экрана, клавишную панель, мышь или другое устройство ввода), устройство вывода (например, дисплей для отображения текущего блока, одного или более изображений, уведомлений и/или других отображаемых данных, динамик для вывода аудио или другое устройство вывода), любую комбинацию вышеозначенного либо другой подходящий компонент. В некоторых примерах, вычислительное устройство может включать в себя настольный компьютер, ноутбук (т.е. переносной компьютер) компьютер, планшетный компьютер, абонентскую приставку, телефонную трубку, к примеру, так называемый смартфон, телевизионный приемник, камеру, устройство отображения, цифровой мультимедийный проигрыватель, консоль для видеоигр, устройство потоковой передачи видео, носимое устройство и т.п. либо другое устройство с одним или более компонентов. В некоторых случаях, вычислительное устройство может включать в себя видеокодек. В некоторых примерах, некоторые из одного или более компонентов могут быть отдельным от вычислительного устройства, причем в этом случае вычислительное устройство принимает данные или передает данные. Вычислительное устройство дополнительно может включать в себя сетевой интерфейс, выполненный с возможностью обмениваться данными. Сетевой интерфейс может быть выполнен с возможностью обмениваться данными на основе Интернет-протокола (IP) или другими подходящими сетевыми данными.
[0225] Компоненты вычислительного устройства (например, один или более процессоров, один или более микропроцессоров, один или более микрокомпьютеров и/или другой компонент) могут реализовываться в схеме. Например, компоненты могут включать в себя и/или могут реализовываться с использованием электронных схем или других электронных аппаратных средств, которые могут включать в себя одну или более программируемых электронных схем (например, микропроцессоров, графических процессоров (GPU), процессоров цифровых сигналов (DSP), центральных процессоров (CPU) и/или других подходящих электронных схем), и/или могут включать в себя и/или реализовываться с использованием компьютерного программного обеспечения, микропрограммного обеспечения либо любой комбинации вышеозначенного для того, чтобы выполнять различные операции, описанные в данном документе.
[0226] Процессы 900 и 1000 проиллюстрированы в качестве логической блок-схемы последовательности операций способа, работа которой представляет последовательность операций, которая может реализовываться в аппаратных средствах, компьютерных инструкциях либо комбинации вышеозначенного. В контексте компьютерных инструкций, операции представляют машиноисполняемые инструкции, сохраненные на одном или более машиночитаемых носителей хранения данных, которые, при выполнении посредством одного или более процессоров, выполняют изложенные операции. В общем, машиноисполняемые инструкции включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные функции или реализуют конкретные типы данных. Порядок, в котором описываются операции, не должен истолковываться как ограничение, и любое число описанных операций может комбинироваться в любом порядке и/или параллельно, чтобы реализовывать процессы.
[0227] Дополнительно, процессы 900 и 1000 могут выполняться под управлением одной или более компьютерных систем, сконфигурированных с выполняемыми инструкциями, и могут реализовываться как код (например, выполняемые инструкции, одна или более компьютерных программ или одно или более приложений), выполняющийся совместно на одном или более процессоров, посредством аппаратных средств либо как комбинации вышеозначенного. Как отмечено выше, код может сохраняться на компьютерно-читаемом или машиночитаемом носителе хранения данных, например, в форме компьютерной программы, содержащей множество инструкций, выполняемых посредством одного или более процессоров. Компьютерно-читаемый или машиночитаемый носитель хранения данных может быть энергонезависимым.
[0228] Фиг. 11 является блок-схемой, иллюстрирующей примерный видеокодер 22, который может реализовывать технологии этого раскрытия сущности. Фиг. 11 предоставляется для целей пояснения и не должен считаться ограничением технологий, как проиллюстрировано и описано в общих чертах в этом раскрытии сущности. Технологии этого раскрытия сущности могут быть применимыми к различным стандартам или способам кодирования.
[0229] В примере по фиг. 11, видеокодер 22 включает в себя модуль 100 обработки прогнозирования, запоминающее устройство 98 видеоданных, модуль 102 формирования остатков, модуль 104 обработки преобразования, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обработки обратного преобразования, модуль 112 восстановления, модуль 114 фильтрации, буфер 116 декодированных кинокадров и модуль 118 энтропийного кодирования. Модуль 100 обработки прогнозирования включает в себя модуль 120 обработки взаимного прогнозирования и модуль 126 обработки внутреннего прогнозирования. Модуль 120 обработки взаимного прогнозирования может включать в себя модуль оценки движения и модуль компенсации движения (не показаны).
[0230] Запоминающее устройство 101 видеоданных может быть выполнено с возможностью сохранять видеоданные, которые должны кодироваться посредством компонентов видеокодера 22. Видеоданные, сохраненные в запоминающем устройстве 101 видеоданных, могут получаться, например, из видеоисточника 18. Буфер 116 декодированных кинокадров может представлять собой запоминающее устройство опорных кинокадров, которое сохраняет опорные видеоданные для использования при кодировании видеоданных посредством видеокодера 22, например, в режимах внутреннего или взаимного кодирования. Запоминающее устройство 101 видеоданных и буфер 116 декодированных кинокадров могут формироваться посредством любого из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее устройство 101 видеоданных и буфер 116 декодированных кинокадров могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 101 видеоданных может быть внутримикросхемным с другими компонентами видеокодера 22 или внемикросхемным относительно этих компонентов. Запоминающее устройство 101 видеоданных может быть идентичным или представлять собой часть носителей 20 хранения данных по фиг. 1.
[0231] Видеокодер 22 принимает видеоданные. Видеокодер 22 может кодировать каждую CTU в срезе кинокадра видеоданных. Каждая из CTU может быть ассоциирована с CTB сигналов яркости одинакового размера и соответствующими CTB кинокадра. В качестве части кодирования CTU, модуль 100 обработки прогнозирования может выполнять сегментацию для того, чтобы разделять CTB CTU на постепенно меньшие блоки. Меньшие блоки могут представлять собой блоки кодирования CU. Например, модуль 100 обработки прогнозирования может сегментировать CTB, ассоциированный с CTU, согласно древовидной структуре. В соответствии с одной или более технологий этого раскрытия сущности, для каждого соответствующего узла-нелиста древовидной структуры на каждом уровне глубины древовидной структуры, предусмотрено множество разрешенных шаблонов разбиения для соответствующего узла-нелиста, и видеоблок, соответствующий соответствующему узлу-нелисту, сегментируется на видеоблоки, соответствующие дочерним узлам соответствующего узла-нелиста согласно одному из множества допустимых шаблонов разбиения. В одном примере, модуль 100 обработки прогнозирования или другой модуль обработки видеокодера 22 может быть выполнен с возможностью выполнять любую комбинацию технологий, описанных в данном документе.
[0232] Видеокодер 22 может кодировать CU CTU для того, чтобы формировать кодированные представления CU (т.е. кодированные CU). В качестве части кодирования CU, модуль 100 обработки прогнозирования может сегментировать блоки кодирования, ассоциированные с CU, между одной или более PU CU. В соответствии с технологиями этого раскрытия сущности, CU может включать в себя только одну PU. Таким образом, в некоторых примерах этого раскрытия сущности, CU не разделяется на отдельные блоки прогнозирования, а вместо этого процесс прогнозирования выполняется для всей CU. Таким образом, каждая CU может быть ассоциирована с блоком прогнозирования сигналов яркости и соответствующими блоками прогнозирования сигналов цветности. Видеокодер 22 и видеодекодер 30 могут поддерживать CU, имеющие различные размеры. Как указано выше, размер CU может означать размер блока кодирования сигналов яркости CU, а также размер блока прогнозирования сигналов яркости. Как пояснено выше, видеокодер 22 и видеодекодер 30 могут поддерживать CU-размеры, заданные посредством любой комбинации примерных технологий сегментации, описанных в данном документе.
[0233] Модуль 120 обработки взаимного прогнозирования может формировать прогнозирующие данные для PU посредством выполнения взаимного прогнозирования для каждой PU CU. Как пояснено в данном документе, в некоторых примерах этого раскрытия сущности, CU может содержать только одну PU, т.е. CU и PU могут быть синонимичными. Прогнозирующие данные для PU могут включать в себя прогнозирующие блоки PU и информацию движения для PU. Модуль 120 обработки взаимного прогнозирования может выполнять различные операции для PU или CU в зависимости от того, находится PU в I-срезе, P-срезе или B-срезе. В I-срезе, все PU внутренне прогнозируются. Следовательно, если PU находится в I-срезе, модуль 120 обработки взаимного прогнозирования не выполняет взаимное прогнозирование для PU. Таким образом, для блоков, кодированных в I-режиме, прогнозированный блок формируется с использованием пространственного прогнозирования из ранее кодированных соседних блоков в идентичном кадре. Если PU находится в P-срезе, модуль 120 обработки взаимного прогнозирования может использовать однонаправленное взаимное прогнозирование для того, чтобы формировать прогнозирующий блок PU. Если PU находится в B-срезе, модуль 120 обработки взаимного прогнозирования может использовать однонаправленное или двунаправленное взаимное прогнозирование для того, чтобы формировать прогнозирующий блок PU.
[0234] Модуль 126 обработки внутреннего прогнозирования может формировать прогнозирующие данные для PU посредством выполнения внутреннего прогнозирования для PU. Прогнозирующие данные для PU могут включать в себя прогнозирующие блоки PU и различные синтаксические элементы. Модуль 126 обработки внутреннего прогнозирования может выполнять внутреннее прогнозирование для PU в I-срезах, P-срезах и B-срезах.
[0235] Чтобы выполнять внутреннее прогнозирование для PU, модуль 126 обработки внутреннего прогнозирования может использовать несколько режимов внутреннего прогнозирования для того, чтобы формировать несколько наборов прогнозирующих данных для PU. Модуль 126 обработки внутреннего прогнозирования может использовать выборки из блоков выборок соседних PU для того, чтобы формировать прогнозирующий блок для PU. Соседние PU могут располагаться выше, выше и справа, выше и слева или слева от PU, при условии порядка кодирования слева направо, сверху вниз для PU, CU и CTU. Модуль 126 обработки внутреннего прогнозирования может использовать различные числа режимов внутреннего прогнозирования, например, 33 режима направленного внутреннего прогнозирования. В некоторых примерах, число режимов внутреннего прогнозирования может зависеть от размера области, ассоциированной с PU.
[0236] В одном примере, модуль 126 обработки внутреннего прогнозирования может быть выполнен с возможностью реализовывать технологии раскрытия сущности. В других примерах, другие блоки или модули могут быть выполнены с возможностью реализовывать все или некоторые технологии раскрытия сущности.
[0237] Модуль 100 обработки прогнозирования может выбирать прогнозирующие данные для PU CU из числа прогнозирующих данных, сформированных посредством модуля 120 обработки взаимного прогнозирования для PU, или прогнозирующих данных, сформированных посредством модуля 126 обработки внутреннего прогнозирования для PU. В некоторых примерах, модуль 100 обработки прогнозирования выбирает прогнозирующие данные для PU CU на основе показателей искажения в зависимости от скорости передачи наборов прогнозирующих данных. Прогнозирующие блоки выбранных прогнозирующих данных могут называться в данном документе "выбранными прогнозирующими блоками".
[0238] Модуль 102 формирования остатков может формировать, на основе блоков кодирования (к примеру, блоков кодирования сигналов яркости, Cb-блоков кодирования и Cr-блоков кодирования) для CU и выбранных прогнозирующих блоков (к примеру, блоков сигналов яркости, прогнозирующих Cb-блоков и прогнозирующих Cr-блоков) для PU CU, остаточные блоки (к примеру, остаточные блоки сигналов яркости, остаточные Cb-блоки и остаточные Cr-блоки) для CU. Например, модуль 102 формирования остатков может формировать остаточные блоки CU таким образом, что каждая выборка в остаточных блоках имеет значение, равное разности между выборкой в блоке кодирования CU и соответствующей выборкой в соответствующем выбранном прогнозирующем блоке PU CU.
[0239] Модуль 104 обработки преобразования может выполнять сегментацию на дерево квадрантов для того, чтобы сегментировать остаточные блоки, ассоциированные с CU, на блоки преобразования, ассоциированные с TU CU. Таким образом, TU может быть ассоциирована с блоком преобразования сигналов яркости и двумя блоками преобразования сигналов цветности. Размеры и позиции блоков преобразования сигналов яркости и сигналов цветности TU CU могут быть основаны либо могут не быть основаны на размерах и позициях блоков прогнозирования PU CU. Структура в виде дерева квадрантов, известная как "остаточное дерево квадрантов (RQT)", может включать в себя узлы, ассоциированные с каждой из областей. TU CU могут соответствовать узлам-листьям RQT. В других примерах, модуль 104 обработки преобразования может быть выполнен с возможностью сегментировать TU в соответствии с технологиями сегментации, описанными в данном документе. Например, видеокодер 22 может не разделять дополнительно CU на TU с использованием RQT-структуры. В связи с этим, в одном примере, CU включает в себя одну TU.
[0240] Модуль 104 обработки преобразования может формировать блоки коэффициентов преобразования для каждой TU CU посредством применения одного или более преобразований к блокам преобразования TU. Модуль 104 обработки преобразования может применять различные преобразования к блоку преобразования, ассоциированному с TU. Например, модуль 104 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование или концептуально аналогичное преобразование к блоку преобразования. В некоторых примерах, модуль 104 обработки преобразования не применяет преобразования к блоку преобразования. В таких примерах, блок преобразования может трактоваться в качестве блока коэффициентов преобразования.
[0241] Модуль 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, n-битовый коэффициент может округляться в меньшую сторону до m-битового коэффициента во время квантования, где n больше m. Модуль 106 квантования может квантовать блок коэффициентов, ассоциированный с TU CU, на основе значения параметра квантования (QP), ассоциированного с CU. Видеокодер 22 может регулировать степень квантования, применяемого к блокам коэффициентов, ассоциированным с CU, посредством регулирования QP-значения, ассоциированного с CU. Таким образом, квантованные коэффициенты преобразования могут иметь меньшую точность, чем исходные коэффициенты преобразования.
[0242] Модуль 108 обратного квантования и модуль 110 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов. Модуль 112 восстановления может суммировать восстановленный остаточный блок с соответствующими выборками из одного или более прогнозирующих блоков, сформированных посредством модуля 100 обработки прогнозирования, для того чтобы формировать восстановленный блок преобразования, ассоциированный с TU. Посредством восстановления блоков преобразования для каждой TU CU таким способом, видеокодер 22 может восстанавливать блоки кодирования CU.
[0243] Модуль 114 фильтрации может выполнять одну или более операций удаления блочности, чтобы уменьшать артефакты блочности в блоках кодирования, ассоциированных с CU. Буфер 116 декодированных кинокадров может сохранять восстановленные блоки кодирования после того, как модуль 114 фильтрации выполняет одну или более операций удаления блочности для восстановленных блоков кодирования. Модуль 120 обработки взаимного прогнозирования может использовать опорный кинокадр, который содержит восстановленные блоки кодирования, для того чтобы выполнять взаимное прогнозирование для PU других кинокадров. Помимо этого, модуль 126 обработки внутреннего прогнозирования может использовать восстановленные блоки кодирования в буфере 116 декодированных кинокадров для того, чтобы выполнять внутреннее прогнозирование для других PU в кинокадре, идентичном кинокадру CU.
[0244] Модуль 118 энтропийного кодирования может принимать данные из других функциональных компонентов видеокодера 22. Например, модуль 118 энтропийного кодирования может принимать блоки коэффициентов из модуля 106 квантования и может принимать синтаксические элементы из модуля 100 обработки прогнозирования. Модуль 118 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования для данных, чтобы формировать энтропийно кодированные данные. Например, модуль 118 энтропийного кодирования может выполнять CABAC-операцию, операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию кодирования переменно-переменной (V2V) длины, операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования на основе сегментирования на интервалы вероятности (PIPE), операцию кодирования экспоненциальным кодом Голомба или другой тип операции энтропийного кодирования для данных. Видеокодер 22 может выводить поток битов, который включает в себя энтропийно кодированные данные, сформированные посредством модуля 118 энтропийного кодирования. Например, поток битов может включать в себя данные, которые представляют структуру сегментации для CU согласно технологиям этого раскрытия сущности.
[0245] Фиг. 12 является блок-схемой, иллюстрирующей примерный видеодекодер 30, который выполнен с возможностью реализовывать технологии этого раскрытия сущности. Фиг. 12 предоставляется для целей пояснения и не является ограничением технологий, как проиллюстрировано и описано в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеодекодер 30 в контексте HEVC-кодирования. Тем не менее, технологии этого раскрытия сущности могут быть применимыми к другим стандартам или способам кодирования.
[0246] В примере по фиг. 12, видеодекодер 30 включает в себя модуль 150 энтропийного декодирования, запоминающее устройство 151 видеоданных, модуль 152 обработки прогнозирования, модуль 154 обратного квантования, модуль 156 обработки обратного преобразования, модуль 158 восстановления, модуль 160 фильтрации и буфер 162 декодированных кинокадров. Модуль 152 обработки прогнозирования включает в себя модуль 164 компенсации движения и модуль 166 обработки внутреннего прогнозирования. В других примерах, видеодекодер 30 может включать в себя большее число, меньше число или другие функциональные компоненты.
[0247] Запоминающее устройство 151 видеоданных может сохранять кодированные видеоданные, такие как кодированный поток видеобитов, которые должны декодироваться посредством компонентов видеодекодера 30. Видеоданные, сохраненные в запоминающем устройстве 151 видеоданных, могут получаться, например, из машиночитаемого носителя 16, например, из локального видеоисточника, такого как камера, через передачу по проводной или беспроводной сети видеоданных, либо посредством осуществления доступа к физическим носителям хранения данных. Запоминающее устройство 151 видеоданных может формировать буфер кодированных кинокадров (CPB), который сохраняет кодированные видеоданные из кодированного потока видеобитов. Буфер 162 декодированных кинокадров может представлять собой запоминающее устройство опорных кинокадров, которое сохраняет опорные видеоданные для использования при декодировании видеоданных посредством видеодекодера 30, например, в режимах внутреннего или взаимного кодирования или для вывода. Запоминающее устройство 151 видеоданных и буфер 162 декодированных кинокадров могут формироваться посредством любого из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее устройство 151 видеоданных и буфер 162 декодированных кинокадров могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 151 видеоданных может быть внутримикросхемным с другими компонентами видеодекодера 30 или внемикросхемным относительно этих компонентов. Запоминающее устройство 151 видеоданных может быть идентичным или представлять собой часть носителей 28 хранения данных по фиг. 1.
[0248] Запоминающее устройство 151 видеоданных принимает и сохраняет кодированные видеоданные (например, NAL-единицы) потока битов. Модуль 150 энтропийного декодирования может принимать кодированные видеоданные (например, NAL-единицы) из запоминающего устройства 151 видеоданных и может синтаксически анализировать NAL-единицы, чтобы получать синтаксические элементы. Модуль 150 энтропийного декодирования может энтропийно декодировать энтропийно кодированные синтаксические элементы в NAL-единицах. Модуль 152 обработки прогнозирования, модуль 154 обратного квантования, модуль 156 обработки обратного преобразования, модуль 158 восстановления и модуль 160 фильтрации могут формировать декодированные видеоданные на основе синтаксических элементов, извлеченных из потока битов. Модуль 150 энтропийного декодирования, в общем, может выполнять процесс, взаимообратный по отношению к процессу модуля 118 энтропийного кодирования.
[0249] В соответствии с некоторыми примерами этого раскрытия сущности, модуль 150 энтропийного декодирования или другой модуль обработки видеодекодера 30 может определять древовидную структуру в качестве части получения синтаксических элементов из потока битов. Древовидная структура может указывать то, как начальный видеоблок, такой как CTB, сегментируется на меньшие видеоблоки, такие как единицы кодирования. В соответствии с одной или более технологий этого раскрытия сущности, для каждого соответствующего узла-нелиста древовидной структуры на каждом уровне глубины древовидной структуры, предусмотрено множество разрешенных типов сегментации для соответствующего узла-нелиста, и видеоблок, соответствующий соответствующему узлу-нелисту, сегментируется на видеоблоки, соответствующие дочерним узлам соответствующего узла-нелиста согласно одному из множества допустимых шаблонов разбиения.
[0250] В дополнение к получению синтаксических элементов из потока битов, видеодекодер 30 может выполнять операцию восстановления для несегментированной CU. Чтобы выполнять операцию восстановления для CU, видеодекодер 30 может выполнять операцию восстановления для каждой TU CU. Посредством выполнения операции восстановления для каждой TU CU, видеодекодер 30 может восстанавливать остаточные блоки CU. Как пояснено выше, в одном примере раскрытия сущности, CU включает в себя одну TU.
[0251] В качестве части выполнения операции восстановления для TU CU, модуль 154 обратного квантования может обратно квантовать, т.е. деквантовать, блоки коэффициентов, ассоциированные с TU. После того, как модуль 154 обратного квантования обратно квантует блок коэффициентов, модуль 156 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов, чтобы формировать остаточный блок, ассоциированный с TU. Например, модуль 156 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0252] Если CU PU кодируется с использованием внутреннего прогнозирования, модуль 166 обработки внутреннего прогнозирования может выполнять внутреннее прогнозирование для того, чтобы формировать прогнозирующие блоки PU. Модуль 166 обработки внутреннего прогнозирования может использовать режим внутреннего прогнозирования для того, чтобы формировать прогнозирующие блоки PU на основе пространственно соседних блоков выборок. Модуль 166 обработки внутреннего прогнозирования может определять режим внутреннего прогнозирования для PU на основе одного или более синтаксических элементов, полученных из потока битов.
[0253] В одном примере, модуль 166 обработки внутреннего прогнозирования может быть выполнен с возможностью реализовывать технологии раскрытия сущности. В других примерах, другие блоки или модули могут быть выполнены с возможностью реализовывать все или некоторые технологии раскрытия сущности.
[0254] Кроме того, если PU кодируется с использованием взаимного прогнозирования, модуль 150 энтропийного декодирования может определять информацию движения для PU. Модуль 164 компенсации движения может определять, на основе информации движения PU, один или более опорных блоков. Модуль 164 компенсации движения может формировать, на основе одного или более опорных блоков, прогнозирующие блоки (например, прогнозирующие блоки сигналов яркости, прогнозирующие Cb-блоки и прогнозирующие Cr-блоки) для PU. Как пояснено выше, CU может включать в себя только одну PU. Таким образом, CU может не разделяться на несколько PU.
[0255] Модуль 158 восстановления может использовать блоки преобразования (например, блоки преобразования сигналов яркости, Cb-блоки преобразования и Cr-блоки преобразования) для TU CU и прогнозирующие блоки (например, блоки сигналов яркости, Cb-блоки и Cr-блоки) PU CU, т.е. либо данные внутреннего прогнозирования, либо данные взаимного прогнозирования, при соответствующих условиях, для того чтобы восстанавливать блоки кодирования (например, блоки кодирования сигналов яркости, Cb-блоки кодирования и Cr-блоки кодирования) для CU. Например, модуль 158 восстановления может суммировать выборки блоков преобразования (например, блоков преобразования сигналов яркости, Cb-блоков преобразования и Cr-блоков преобразования) с соответствующими выборками прогнозирующих блоков (например, прогнозирующих блоков сигналов яркости, прогнозирующих Cb-блоков и прогнозирующих Cr-блоков) для того, чтобы восстанавливать блоки кодирования (например, блоки кодирования сигналов яркости, Cb-блоки кодирования и Cr-блоки кодирования) CU.
[0256] Модуль 159 фильтрации может выполнять операцию удаления блочности для того, чтобы уменьшать артефакты блочности, ассоциированные с блоками кодирования CU. Видеодекодер 30 может сохранять блоки кодирования CU в буфере 162 декодированных кинокадров. Буфер 162 декодированных кинокадров может предоставлять опорные кинокадры для последующей компенсации движения, внутреннего прогнозирования и представления на устройстве отображения, к примеру, на устройстве 32 отображения по фиг. 1. Например, видеодекодер 30 может выполнять, на основе блоков в буфере 162 декодированных кинокадров, операции внутреннего прогнозирования или взаимного прогнозирования для PU других CU.
[0257] Видеодекодер выводит декодированную версию текущего кинокадра, которая включает в себя декодированную версию текущего блока. Когда видеодекодер представляет собой видеодекодер, выполненный с возможностью выводить отображаемое декодированное видео, то видеодекодер, например, может выводить декодированную версию текущего кинокадра на устройство отображения. Когда декодирование выполняется в качестве части контура декодирования процесса кодирования видео, то видеодекодер может сохранять декодированную версию текущего кинокадра в качестве опорного кинокадра для использования при кодировании другого кинокадра видеоданных.
[0258] Конкретные аспекты этого раскрытия сущности описаны относительно расширений HEVC-стандарта для целей иллюстрации. Тем не менее, технологии, описанные в этом раскрытии сущности, могут быть полезными для других процессов кодирования видео, включающих в себя другие стандартные или собственные процессы кодирования видео, еще не разработанные.
[0259] Видеокодер, как описано в этом раскрытии сущности, может означать видеокодер или видеодекодер. Аналогично, модуль кодирования видео может означать видеокодер или видеодекодер. Аналогично, кодирование видео может означать кодирование видео или декодирование видео, при соответствующих условиях. В этом раскрытии сущности, фраза "на основе" может указывать только на основе, по меньшей мере, на частично на основе или в некотором роде на основе. Это раскрытие сущности может использовать термин "видеоединица" или "видеоблок", или "блок" для того, чтобы означать один или более блоков выборок и синтаксических структур, используемых для того, чтобы кодировать выборки одного или более блоков выборок. Примерные типы видеоединиц могут включать в себя CTU, CU, PU, единицы преобразования (TU), макроблоки, сегменты макроблока и т.д. В некоторых контекстах, пояснение PU может заменяться на пояснение макроблоков или сегментов макроблока. Примерные типы видеоблоков могут включать в себя блоки дерева кодирования, блоки кодирования и другие типы блоков видеоданных.
[0260] Технологии этого раскрытия сущности не обязательно ограничены вариантами применения или настройками беспроводной связи. Технологии могут применяться к кодированию видео в поддержку любых из множества мультимедийных вариантов применения, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие варианты применения. В некоторых примерах, система может быть выполнена с возможностью поддерживать одностороннюю или двустороннюю передачу видео для того, чтобы поддерживать такие варианты применения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[0261] При использовании в данном документе, термин "машиночитаемый носитель" включает в себя, но не только, портативные или непортативные устройства хранения данных, оптические устройства хранения данных и различные другие носители, допускающие хранение, содержание или перенос инструкции(й) и/или данных. Машиночитаемый носитель может включать в себя энергонезависимый носитель, на котором могут сохраняться данные, и который не включает в себя несущие волны и/или переходные электронные сигналы, распространяющиеся в беспроводном режиме или по проводным соединениям. Примеры энергонезависимого носителя могут включать в себя, но не только, магнитный диск или ленту, оптические носители хранения данных, к примеру, компакт-диск (CD) или универсальный цифровой диск (DVD), флэш-память, запоминающее устройство или запоминающие устройства. Машиночитаемый носитель может иметь сохраненными код и/или машиноисполняемые инструкции, которые могут представлять процедуру, функцию, подпрограмму, программу, процедуру, вложенную процедуру, модуль, программный пакет, класс или любую комбинацию инструкций, структур данных или программных операторов. Сегмент кода может быть связан с другим сегментом кода или аппаратной схемой посредством пересылки и/или приема информации, данных, аргументов, параметров или контента запоминающего устройства. Информация, аргументы, параметры, данные и т.д. могут пересылаться, перенаправляться или передаваться посредством любого надлежащего средства, в том числе совместного использования запоминающего устройства, пересылки сообщений, пересылки маркера, передачи по сети и т.д.
[0262] В некоторых вариантах осуществления, машиночитаемые устройства хранения данных, носители и запоминающие устройства могут включать в себя кабель или беспроводной сигнал, содержащий поток битов, и т.п. Тем не менее, если упоминаются, энергонезависимые машиночитаемые носители хранения данных явно исключают такие среды, как энергия, несущие сигналы, электромагнитные волны и сигналы по сути.
[0263] Конкретные подробности предоставляются в вышеприведенном описании для того, чтобы предоставлять полное понимание вариантов осуществления и примеров, предоставленных в настоящем документе. Тем не менее, специалисты в данной области техники должны понимать, что варианты осуществления могут осуществляться на практике без этих конкретных подробностей. Для ясности пояснения, в некоторых случаях настоящая технология может представляться как включающая в себя отдельные функциональные блоки, включающие в себя функциональные блоки, содержащие устройства, компоненты устройства, этапы или процедуры в способе, осуществленном в программном обеспечении либо в комбинациях аппаратных средств и программного обеспечения. Могут использоваться дополнительные компоненты, отличные от компонентов, показанных на чертежах и/или описанных в данном документе. Например, схемы, системы, сети, процессы и другие компоненты могут быть показаны как компоненты в форме блок-схемы, чтобы не затруднять понимание вариантов осуществления необязательными подробностями. В других случаях, широко распространенные схемы, процессы, алгоритмы, структуры и технологии могут быть показаны без необязательных подробностей, чтобы не допускать затруднения в понимании вариантов осуществления.
[0264] Отдельные варианты осуществления могут описываться выше в качестве процесса или способа, который проиллюстрирован как блок-схема последовательности операций способа (flowchart), блок-схема последовательности операций способа (flow diagram), диаграмма потоков данных, структурная схема или блок-схема. Хотя блок-схема последовательности операций способа может описывать операции как последовательный процесс, многие операции могут выполняться параллельно или одновременно. Помимо этого, порядок операций может перекомпоновываться. Процесс завершается, когда операции выполнены, но может иметь дополнительные этапы, не включенные на чертеже. Процесс может соответствовать способу, функции, процедуре, подпрограмме, подпрограмме и т.д. Когда процесс соответствует функции, его завершение соответствует возврату функции в вызывающую функцию или основную функцию.
[0265] Процессы и способы согласно вышеописанным примерам могут реализовываться с использованием машиноисполняемых инструкций, которые сохраняются или являются иным способом доступными из машиночитаемых носителей. Такие инструкции могут включать в себя, например, инструкции и данные, которые инструктируют или иначе конфигурируют компьютер общего назначения, компьютер специального назначения или обрабатывающее устройство с возможностью выполнять определенную функцию или группу функций. Части используемых компьютерных ресурсов могут быть доступными по сети. Машиноисполняемые инструкции, например, могут представлять собой двоичные файлы, инструкции в промежуточном формате, такие как ассемблерный язык, микропрограммное обеспечение, исходный код и т.д. Примеры машиночитаемых носителей, которые могут использоваться для того, чтобы сохранять инструкции, информацию, используемую, и/или информацию, созданную в ходе способов согласно описанным примерам, включают в себя магнитные или оптические диски, флэш-память, USB-устройства, содержащие энергонезависимое запоминающее устройство, сетевые устройства хранения данных и т.д.
[0266] Процессы реализации устройств и способы согласно этим раскрытиям сущности могут включать в себя аппаратные средства, программное обеспечение, микропрограммное обеспечение, промежуточное программное обеспечение, микрокод, языки описания аппаратных средств или любую комбинацию вышеозначенного и могут принимать любое множество форм-факторов. При реализации в программном обеспечении, микропрограммном обеспечении, промежуточном программном обеспечении или микрокоде, программный код или сегменты кода для того, чтобы выполнять необходимые задачи (например, компьютерный программный продукт), могут сохраняться на машиночитаемом или машиночитаемом носителе. Процессоры могут выполнять требуемые задачи. Типичные примеры форм-факторов включают в себя переносные компьютеры, смартфоны, мобильные телефоны, планшетные устройства или другие персональные компьютеры с миниатюрным форм-фактором, персональные цифровые устройства, смонтированные в стойке устройства, автономные устройства и т.д. Функциональность, описанная в данном документе, также может осуществляться в периферийных устройствах или расширительных платах. Такая функциональность также может реализовываться на схемной плате для различных микросхем или различных процессов, выполняющихся в одном устройстве, в качестве дополнительного примера.
[0267] Инструкции, среды для передачи таких инструкций, вычислительные ресурсы для их выполнения и другие структуры для поддержки таких вычислительных ресурсов представляют собой примерные средства для предоставления функций, описанных в раскрытии сущности.
[0268] В вышеприведенном описании, аспекты заявки описываются со ссылкой на ее конкретные варианты осуществления, но специалисты в данной области техники должны признавать, что заявка не ограничена этим. Таким образом, в то время как иллюстративные варианты осуществления заявки описываются подробно в данном документе, следует понимать, что идеи изобретения могут иными и различными способами осуществляться и использоваться, и что прилагаемая формула изобретения имеет намерение истолковываться как включающая в себя такие варьирования, за исключением ограничений посредством предшествующего уровня техники. Различные признаки и аспекты вышеописанной заявки могут использоваться отдельно или объединенно. Дополнительно, варианты осуществления могут использоваться в любом числе окружений и вариантов применения, помимо окружений и вариантов применения, описанных в данном документе, без отступления от более широкой сущности и объема подробного описания. Соответственно, подробное описание и чертежи должны рассматриваться как иллюстративные, а не ограничивающие. Для целей иллюстрации, способы описаны в конкретном порядке. Следует принимать во внимание, что в альтернативных вариантах осуществления, способы могут осуществляться в порядке, отличном от описанного порядка.
[0269] Специалисты в данной области техники должны принимать во внимание, что символы меньше ("<") и больше (">") либо терминология, используемая в данном документе, могут заменяться символы меньше или равно ("≤") и больше или равно ("≥"), соответственно, без отступления от объема этого описания.
[0270] Если компоненты описываются как "выполненные с возможностью" выполнять определенные операции, такая конфигурация может достигаться, например, посредством проектирования электронных схем или других аппаратных средств с возможностью выполнять операцию, посредством программирования программируемых электронных схем (например, микропроцессоров или других подходящих электронных схем) с возможностью выполнять операцию либо посредством любой комбинации вышеозначенного.
[0271] Фраза "соединенный с" означает любой компонент, который физически соединяется с другим компонентом прямо или косвенно, и/или любой компонент, который поддерживает связь с другим компонентом (например, соединяется с другим компонентом по проводному или беспроводному соединению и/или другому подходящему интерфейсу связи) прямо или косвенно.
[0272] Текст формулы изобретения или другой текст, излагающий "по меньшей мере, одно из" набора, указывает то, что один элемент набора или несколько элементов набора удовлетворяют требованию. Например, текст формулы изобретения, излагающий "по меньшей мере, одно из A и B", означает A, B или A и B.
[0273] Различные иллюстративные логические блоки, модули, схемы и этапы алгоритма, описанные в связи с раскрытыми в данном документе вариантами осуществления, могут реализовываться как электронные аппаратные средства, вычислительное программное обеспечение либо как комбинации вышеозначенного. Чтобы понятно иллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы описаны выше, в общем, на основе функциональности. То, реализована эта функциональность в качестве аппаратных средств или программного обеспечения, зависит от конкретного варианта применения и проектных ограничений, накладываемых на систему в целом. Высококвалифицированные специалисты могут реализовывать описанную функциональность различными способами для каждого конкретного варианта применения, но такие решения по реализации не должны быть интерпретированы как вызывающие отступление от объема настоящей заявки.
[0274] Технологии, описанные в данном документе, также могут реализовываться в электронных аппаратных средствах, компьютерном программном обеспечении, микропрограммном обеспечении либо в любой комбинации вышеозначенного. Такие технологии могут реализовываться в любых из множества устройств, таких как компьютеры общего назначения, переносные телефонные аппараты для беспроводной связи или устройства на интегральных схемах, имеющие несколько вариантов использования, включающих в себя вариант применения в переносных телефонных аппаратах для беспроводной связи, а также другие устройства. Любые признаки, описанные как модули или компоненты, могут реализовываться совместно в интегральном логическом устройстве или отдельно как дискретные, но имеющие возможность взаимодействовать логические устройства. При реализации в программном обеспечении, технологии могут реализовываться, по меньшей мере, частично посредством машиночитаемого носителя хранения данных, содержащего программный код, включающий в себя инструкции, которые при выполнении осуществляют один или более способов, описанных выше. Машиночитаемый носитель может формировать часть компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемый носитель хранения данных могут содержать запоминающие устройства или носители хранения данных, такие как оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Дополнительно, либо альтернативно, технологии могут реализовываться, по меньшей мере, частично посредством машиночитаемой среды связи, которая переносит или передает программный код в форме инструкций или структур данных и которая может быть доступной, может считываться и/или может выполняться посредством компьютера, такой как распространяемые сигналы или волны.
[0275] Программный код выполняться посредством процессора, который включает в себя один или более процессоров, например, один или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем логических матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Такой процессор может быть выполнен с возможностью осуществлять любую из технологий, описанных в этом раскрытии сущности. Процессор общего назначения может представлять собой микропроцессор, но в альтернативном варианте, процессор может представлять собой любой традиционный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может реализовываться как комбинация вычислительных устройств, к примеру, как комбинация DSP и микропроцессора, множество микропроцессоров, один или более микропроцессоров вместе с ядром DSP либо любая другая подобная конфигурация. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеприведенную структуру, любую комбинацию вышеприведенной структуры либо любую другую структуру или оборудование, подходящее для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах, функциональность, описанная в данном документе, может предоставляться внутри специализированных программных модулей или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный видеокодер-декодер (кодек).