ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[1] В настоящей заявке испрашивается приоритет по заявке на патент США № 17 / 095,583 «СПОСОБ И УСТРОЙСТВО ДЛЯ СИГНАЛИЗАЦИИ ФЛАГА ПРОПУСКА, поданной 11 ноября 2020 г., в которой испрашивается приоритет предварительной заявки США № 62/959 621, "СПОСОБЫ СИГНАЛИЗАЦИИ ФЛАГА ПРОПУСКА", поданной 10 января 2020 года. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.
Область техники, к которой относится изобретение
[2] Настоящее изобретение описывает варианты осуществления, в основном относящиеся к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[3] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста изобретения. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе описания уровня техники, а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве предшествующего уровня техники в отношении настоящего изобретения.
[4] Кодирование и декодирование видео могут выполняться с использованием интер-предсказания изображений и интра-предсказания изображений. Несжатое цифровое видео может включать в себя серию изображений, причем каждое изображение имеет пространственный размер, например, 1920 x 1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображений (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080p60 4:2:0 с частотой 8 бит на отсчет (разрешение отсчета яркости 1920x1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.
[5] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых из сжатого исходного сигнала может быть восстановлена точная копия исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал полезным для предполагаемого применения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, пользователи определенных потребительских приложений потоковой передачи могут допускать более высокие искажения, чем пользователи приложений распределения телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия.
[6] Видеокодер и видеодекодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[7] Технологии видеокодеков могут включать в себя методы, известные как интра-кодирование. При интра-кодировании значения отсчетов представлены без ссылки на отсчеты или другие данные из ранее восстановленных опорных изображений. В некоторых видеокодеках изображение пространственно разбивается на блоки отсчетов. Когда все блоки отсчетов кодируются в интра-режиме, это изображение может быть интра-изображением. ИНтра-изображения и их производные, такие как изображения обновления независимого декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в кодированном потоке битов видео и сеанса видео или как неподвижное изображение. Осчеты интра-блока могут подвергаться преобразованию, а коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Интра-предсказание может быть методом, который минимизирует значения отсчетов в области до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты AC, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.
[8] Традиционное интра-кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует интра-предсказание. Однако некоторые новые технологии сжатия видео включают в себя методы, которые пытаются, например, из окружающих данных отсчетов и/или метаданных, полученных во время кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования блоков данных. Такие методы в дальнейшем называются методами «интра-предсказания». Следует отметить, что по меньшей мере в некоторых случаях интра-предсказание использует только опорные данные из текущего восстанавливаемого изображения, а не из опорных изображений.
[9] Может быть много разных форм интра-предсказания. Когда в данной технологии кодирования видео можно использовать более одного из таких методов, используемый метод может быть закодирован в режиме интра-предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, и они могут быть закодированы индивидуально или включены в кодовое слово режима. Выбор, какое кодовое слово использовать для данной комбинации режима/подрежима/параметра, может повлиять на повышение эффективности кодирования за счет интра-предсказания, как и технология энтропийного кодирования, используемая для преобразования кодовых слов в поток битов.
[10] Определенный режим интра-предсказания был введен в H.264, усовершенствован в H.265 и дополнительно усовершенствован в новых технологиях кодирования, таких как совместная модель исследования (JEM), универсальное кодирование видео (VVC) и набор тестов (BMS). Блок предсказателя может быть сформирован с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения отсчетов соседних отсчетов копируются в блок предсказания в соответствии с направлением. Ссылка на используемое направление может быть закодирована в потоке битов или сама может быть предсказана.
[11] На фиг. 1 в правом нижнем углу изображено подмножество девяти направлений предсказания, известных из 33 возможных направлений предсказания H.265 (соответствующих 33 угловым режимам из 35 интра-режимов). Точка, где сходятся стрелки (101), представляет собой предсказываемый образец. Стрелки указывают направление, в котором предсказывается отсчет. Например, стрелка (102) указывает, что отсчет (101) предсказывается на основе отсчета или отсчетов в правом верхнем углу под углом 45 градусов от горизонтали. Аналогично, стрелка (103) указывает, что отсчет (101) предсказывается из отсчета или отсчетов в нижнем левом углу отсчета (101) под углом 22,5 градуса от горизонтали.
[12] В верхнем левом углу фиг. 1 изображен квадратный блок (104) из 4×4 отсчетов (обозначен пунктирной жирной линией). Квадратный блок (104) включает в себя 16 отсчетов, каждый из которых помечен буквой «S», его положение в измерении Y (например, индекс строки) и его положение в измерении X (например, индекс столбца). Например, отсчет S21 - это второй отсчет в измерении Y (сверху) и первый (слева) отсчет в измерении X. Аналогично, отсчет S44 является четвертым отсчетом в блоке (104) как по Y, так и по X измерениям. Поскольку размер блока 4x4 отсчета, S44 находится внизу справа. Далее показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет помечается буквой R, его положением Y (например, индекс строки) и положением X (индекс столбца) относительно блока (104). И в H.264, и в H.265 отсчеты предсказания соседствуют с восстанавливаемым блоком; поэтому нет необходимости использовать отрицательные значения.
[13] Интра-предсказание изображения может работать путем копирования значений опорных отсчетов из соседних отсчетов в соответствии с сигнальным направлением предсказания. Например, предположим, что кодированный поток битов видео включает в себя сигнализацию, которая для этого блока указывает направление предсказания, соответствующее стрелке (102), то есть отсчеты предсказываются из отсчета предсказания или отсчетов в правом верхнем углу под углом 45 градусов от горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются на основе одного и того же опорного отсчета R05. Отсчет S44 затем предсказывается на основе опорного отсчета R08.
[14] В некоторых случаях значения нескольких опорных отсчетов могут быть объединены, например, посредством интерполяции, чтобы вычислить опорный отсчет; особенно когда направления не делятся на 45 градусов без остатка.
[15] Количество возможных направлений увеличивалось по мере развития технологии кодирования видео. В H.264 (2003 год) может быть представлено девять различных направлений. Это число увеличилось до 33 в H.265 (2013 год), а JEM/VVC/BMS на момент данного изобретения может поддерживать до 65 направлений. Были проведены эксперименты для определения наиболее вероятных направлений, и определенные методы энтропийного кодирования используются для представления этих вероятных направлений в небольшом количестве битов, принимая определенный штраф за менее вероятные направления. Кроме того, сами направления иногда могут быть предсказаны из соседних направлений, используемых в соседних, уже декодированных блоках.
[16] Фиг. 2 иллюстрирует схему (201), которая изображает 65 направлений интра-предсказания согласно JEM, чтобы проиллюстрировать увеличивающееся количество направлений предсказания с течением времени.
[17] Отображение битов направлений интра-предсказания в кодированном битовом потоке видео, которые представляют направление, может отличаться от технологии кодирования видео к технологии кодирования видео; и может варьироваться, например, от простых прямых отображений направления предсказания в режим интра-предсказания, в кодовые слова, в сложные адаптивные схемы, включающие наиболее вероятные режимы, и аналогичные методы. Однако во всех случаях могут быть определенные направления, которые статистически менее вероятны в видеоконтенте, чем некоторые другие направления. Поскольку целью сжатия видео является уменьшение избыточности, эти менее вероятные направления в хорошо работающей технологии кодирования видео будут представлены большим числом битов, чем более вероятные направления.
[18] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок отсчетных данных из ранее восстановленного изображения или его части (опорное изображение) после пространственного сдвига в направлении, указанном вектором движения (далее MV), используется для предсказвания вновь восстановленного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как восстанавливаемое в настоящее время изображение. MV могут иметь два измерения X и Y или три измерения, причем третье является показателем используемого опорного изображения (последнее, косвенно, может быть измерением времени).
[19] В некоторых методах сжатия видео MV, применимый к определенной области отсчетных данных, может быть предсказан из других MV, например, из тех, которые относятся к другой области отсчетных данных, пространственно смежных с восстанавливаемой областью и предшествующих этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая степень сжатия. Предсказание MV может работать эффективно, например, потому что при кодировании входного видеосигнала, полученного с камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим отдельный MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из MV соседней области. Это приводит к тому, что MV, найденный для данной области, аналогичен или совпадает с MV, предсказанным из окружающих MV, и который, в свою очередь, может быть представлен после энтропийного кодирования в меньшем количестве битов, чем то, которое было бы использовано при кодировании МВ напрямую. В некоторых случаях предсказание MV может быть примером сжатия без потерь сигнала (а именно: MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях само предсказание MV может быть с потерями, например, из-за ошибок округления при вычислении предиктора из нескольких окружающих MV.
[20] Различные механизмы прогнозирования MV описаны в H.265/HEVC (ITU-T Rec. H.265, «High Efficiency Video Coding», декабрь 2016 г.). Из множества механизмов предсказания MV, которые предлагает H.265, здесь описывается метод, далее именуемый «пространственным слиянием».
[21] Как показано на фиг.3, текущий блок (301) содержит отсчеты, которые были обнаружены кодером во время процесса поиска движения как предсказываемые из предыдущего блока того же размера, который был пространственно сдвинут. Вместо того, чтобы кодировать этот MV напрямую, MV может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных A0, A1 и B0, B1, B2 (от 302 до 306 соответственно). В H.265 предсказание MV может использовать предикторы из того же опорного изображения, который использует соседний блок.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[22] Аспекты изобретения относятся к способам и устройствам для кодирования/декодирования видео. В некоторых примерах устройство для декодирования видео включает в себя схему приема и схему обработки. В некоторых вариантах осуществления схема обработки декодирует информацию предсказания для блока в I-слайсе из кодированного битового потока видео и определяет, возможен ли режим интра-блочного копирования (IBC) для блока в I-слайсе на основе информации предсказания и ограничение размера режима IBC. Кроме того, в варианте осуществления, схема обработки декодирует, в ответ на то, что режим IBC возможен для блока в I-секции, флаг, который указывает, применен ли режим пропуска к блоку из кодированного битового потока видео. Затем схема обработки восстанавливает блок по меньшей мере частично на основе флага.
[23] Кроме того, в некоторых примерах схема обработки определяет флаг в ответ на невозможность режима IBC для блока в I-слайсе.
[24] В некоторых вариантах осуществления схема обработки выполняет определение, что режим IBC невозможен для блока в I-слайсе в ответ на то, что размер блока в I-слайсе больше порогового значения. В варианте осуществления схема обработки выполняет определение, что режим IBC невозможен для блока в I-слайсе, в ответ на то, что по меньшей мере одно из ширины блока и высоты блока превышает пороговое значение. В некоторых примерах схема обработки определяет наличие флага в кодированном битовом потоке видео на основе добавленного условия, которое сравнивает размер блока с пороговым значением. Добавленное условие исключает наличие флага в ответ на то, что размер блока в I-слайсе превышает пороговое значение.
[25] В некоторых примерах схема обработки выполняет определение наличия флага в кодированном битовом потоке видео на основе существующего условия, которое модифицируется на основе сравнения размера и порогового значения. В примере существующее условие определяет, является ли блок интер-кодированным блоком. В другом примере существующее условие определяет, включен ли режим IBC.
[26] Аспекты изобретения также относятся к невременному машиночитаемому носителю, на котором хранятся инструкции, которые при исполнении компьютером для декодирования видео побуждают компьютер выполнять способ декодирования видео.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[27] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более понятны из следующего подробного описания и прилагаемых чертежей, на которых:
[28] Фиг. 1 - схематическая иллюстрация примерного подмножества режимов интра-предсказания.
[29] Фиг. 2 - иллюстрация примерных направлений интра-предсказания.
[30] Фиг.3 - схематическая иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном примере.
[31] Фиг.4 - схематическая иллюстрация упрощенной блок-схемы системы (400) связи в соответствии с вариантом осуществления.
[32] Фиг.5 - схематическая иллюстрация упрощенной блок-схемы системы (500) связи в соответствии с вариантом осуществления.
[33] Фиг. 6 - схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[34] Фиг. 7 - схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантом осуществления.
[35] Фиг.8 - блок-схема кодера в соответствии с другим вариантом осуществления.
[36] Фиг.9 - блок-схема декодера в соответствии с другим вариантом осуществления.
[37] Фиг. 10 - пример интра-блочного копирования согласно варианту осуществления изобретения.
[38] Фиг. 11 - примерная таблица синтаксиса для сигнализации режима предсказаняи на уровне единицы кодирования.
[39] Фиг. 12A-12E - примерная таблица синтаксиса уровня единицы дерева кодирования.
[40] Фиг. 13 - примерная таблица синтаксиса на уровне единицы кодирования согласно некоторым вариантам осуществления изобретения.
[41] Фиг. 14 - примерная таблица синтаксиса на уровне дерева кодирования согласно некоторым вариантам осуществления изобретения.
[42] Фиг. 15 - блок-схема, описывающая пример процесса согласно некоторым вариантам осуществления изобретения.
[43] Фиг.16 - схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
Осуществление изобретения
[44] На фиг.4 проиллюстрирована упрощенная блок-схема системы (400) связи согласно варианту осуществления настоящего изобретения. Система (400) связи включает в себя множество оконечных устройств, которые могут связываться друг с другом, например, через сеть (450). Например, система (400) связи включает в себя первую пару оконечных устройств (410) и (420), соединенных между собой через сеть (450). В примере с фиг.4 первая пара оконечных устройств (410) и (420) выполняет однонаправленную передачу данных. Например, оконечное устройство (410) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством (410)) для передачи другому оконечному устройству (420) через сеть (450). Кодированные видеоданные могут быть переданы в форме одного или более кодированных битовых потоков видео. Оконечное устройство (420) может принимать кодированные видеоданные из сети (450), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т. п.
[45] В другом примере система (400) связи включает в себя вторую пару оконечных устройств (430) и (440), которые выполняют двунаправленную передачу кодированных видеоданных, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных, в примере, каждое оконечное устройство из оконечных устройств (430) и (440) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством) для передачи на другое оконечное устройство из оконечных устройств (430) и (440) через сеть (450). Каждое оконечное устройство из оконечных устройств (430) и (440) также может принимать кодированные видеоданные, переданные другим оконечным устройством из оконечных устройств (430) и (440), и может декодировать кодированные видеоданные для восстановления видеоизображений, и может отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.
[46] В примере с фиг.4 оконечные устройства (410), (420), (430) и (440) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но принципы настоящего изобретения не могут быть ограничены этим. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (450) представляет собой любое количество сетей, которые передают кодированные видеоданные между оконечными устройствами (410), (420), (430) и (440), включая, например, проводные (соединенные проводами) и/или беспроводные сети связи. Сеть (450) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (450) могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.
[47] На фиг.5 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.
[48] Система потоковой передачи может включать в себя подсистему (513) захвата, которая может включать в себя источник (501) видео, например цифровую камеру, создающий, например, поток видеоизображений (502), которые не сжаты. В примере поток видеоизображений (502) включает в себя отсчеты, снятые цифровой камерой. Поток видеоизображений (502), изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (504) (или кодированными битовыми потоками видео), может обрабатываться электронным устройством (520), которое включает в себя видео кодер (503), подключенный к источнику (501) видео. Кодер (503) видео может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированные видеоданные (504) (или кодированный битовый поток видео (504)), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком видеоизображений (502), могут быть сохранены на сервере потоковой передачи (505) для будущего использования. Одна или более клиентских подсистем потоковой передачи, таких как клиентские подсистемы (506) и (508) с фиг.5 могут получить доступ к потоковому серверу (505) для извлечения копий (507) и (509) кодированных видеоданных (504). Клиентская подсистема (506) может включать в себя видеодекодер (510), например, в электронном устройстве (530). Видеодекодер (510) декодирует входящую копию (507) кодированных видеоданных и создает исходящий поток видеоизображений (511), которые могут быть визуализированы на дисплее (512) (например, экране дисплея) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи кодированные видеоданные (504), (507) и (509) (например, битовые потоки видео) могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-T H.265. В одном примере разрабатываемый стандарт кодирования видео неофициально известен как универсальное кодирование видео (VVC). Раскрытый объект изобретения может использоваться в контексте VVC.
[49] Следует отметить, что электронные устройства (520) и (530) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (520) может включать в себя видеодекодер (не показан), а электронное устройство (530) также может включать в себя видеокодер (не показан).
[50] На фиг.6 показана блок-схема видеодекодера (610) согласно варианту осуществления настоящего изобретения. Видеодекодер (610) может быть включен в электронное устройство (630). Электронное устройство (630) может включать в себя приемник (631) (например, приемную схему). Видеодекодер (610) может использоваться вместо видеодекодера (510) в примере с фиг.5.
[51] Приемник (631) может принимать одну или несколько кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (610); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (601), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (631) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (631) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (631) и энтропийным декодером/парсером (620) (далее «парсер(620)») может быть подключена буферная память (615). В некоторых приложениях буферная память (615) является частью видеодекодера (610). В других случаях она может находиться снаружи видеодекодера (610) (не показано). В других случаях может иметься буферная память (не изображена) снаружи видеодекодера (610), например, для борьбы с дрожанием сети, и, кроме того, другая буферная память (615) внутри видеодекодера (610), например, для обработки времени воспроизведения. Когда приемник (631) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (615) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буферная память (615), которая может быть сравнительно большой и может быть предпочтительно адаптивного размера, и может по меньшей мере частично быть реализована в операционной системе или аналогичных элементах (не изображены) снаружи видеодекодера (610).
[52] Видеодекодер (610) может включать в себя парсер (620) для восстановления символов (621) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (610), и потенциально информацию для управления устройством визуализации, таким как устройство визуализации (612) (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (630), но может быть подключено к электронному устройству (630), как показано на фиг.6. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Парсер (620) может выполнять парсинг/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование закодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (620) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Парсер (620) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[53] Парсер (620) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буферной памяти (615), чтобы создавать символы (621).
[54] Восстановление символов (621) может задействовать множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: интер и интра изображение, интер и интра блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (620). Поток такой управляющей информации подгруппы между парсером (620) и множеством модулей ниже не показан для ясности.
[55] Помимо уже упомянутых функциональных блоков, видеодекодер (610) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.
[56] Первым модулем является модуль (651) масштабирования/обратного преобразования. Модуль (651) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (621) от парсера (620). Модуль (651) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (655).
[57] В некоторых случаях выходные отсчеты модуля (651) масштабирования/обратного преобразования могут относиться к интра-кодированному блоку; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (652) интра-предсказания изображения. В некоторых случаях модуль (652) интра-предсказания изображения генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из буфера текущего изображения (658). Буфер текущего изображения (658) буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (655), в некоторых случаях, добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (652) интра-предсказания, к информации выходных отсчетов, предоставляемой модулем (651) масштабирования/обратного преобразования.
[58] В других случаях выходные отсчеты модуля (651) масштабирования/обратного преобразования могут относиться к блоку с интер-кодированием и потенциально с компенсацией движения. В таком случае модуль (653) предсказания с компенсацией движения может обращаться к памяти (657) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (621), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (655) к выходу модуля (651) масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (657) опорных изображений, откуда модуль (653) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (653) предсказания с компенсацией движения в форме символов (621), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (657) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы прогнозирования вектора движения и так далее.
[59] Выходные отсчеты агрегатора (655) могут подвергаться различным методам петлевой фильтрации в модуле (656) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемые модулю (656) петлевой фильтрации как символы (621) из парсера (620), но также может реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные петлей значения отсчетов.
[60] Выходной сигнал модуля (656) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (612) визуализации, а также сохранен в памяти (657) опорных изображений для использования в будущем интер-кадровом предсказании.
[61] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, парсером (620)), буфер (658) текущего изображения может стать частью памяти (657) опорных изображений, и буфер свежего текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.
[62] Видеодекодер (610) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как ITU-T Rec. H.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического опорного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.
[63] В варианте осуществления приемник (631) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (610) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[64] На фиг.7 показана блок-схема видеодекодера (703) согласно варианту осуществления настоящего изобретения. Видеокодер (703) включен в электронное устройство (720). Электронное устройство (720) включает в себя передатчик (740) (например, передающую схему). Видеокодер (703) может использоваться вместо видеокодера (503) в примере с фиг.5.
[65] Видеокодер (703) может принимать отсчеты видео от источника (701) видео (который не является частью электронного устройства (720) в примере c фиг.7), который может захватывать видеоизображение(я) для кодирования с помощью видеокодера (703). В другом примере источник (701) видео является частью электронного устройства (720).
[66] Источник (701) видео может предоставить исходную видеопоследовательность для кодирования видеокодером (703) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, BT.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (701) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (701) видео может быть камерой, которая захватывает информацию о локальном изображении в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[67] Согласно варианту осуществления кодер (703) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (743) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (750). В некоторых вариантах осуществления контроллер (750) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером (750), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Контроллер (750) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (703), оптимизированному для определенной конструкции системы.
[68] В некоторых вариантах осуществления видеокодер (703) конфигурирован для работы в петле кодирования. В качестве упрощенного описания, в примере, петля кодирования может включать в себя кодер (730) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения, которое должно быть кодировано, и опорного изображения (изображений)), и (локальный) декодер (733), встроенный в видеокодер (703). Декодер (733) восстанавливает символы для создания данных отсчетов аналогично тому, как (удаленный) декодер также может создавать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память опорных изображений (734). Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти опорных изображений (734) также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые бы «видел» декодер при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.
[69] Работа «локального» декодера (733) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (610), который уже был подробно описан выше в связи с фиг.6. Кратко ссылаясь также на фиг.6, однако, поскольку символы доступны, и кодирование/декодирование символов в закодированную видеопоследовательность энтропийным кодером (745) и парсером (620) может быть без потерь, части энтропийного декодирования видеодекодера (610), включая буферную память (615) и парсер (620), не могут быть полностью реализованы в локальном декодере (733).
[70] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсинга/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[71] Во время работы в некоторых примерах исходный кодер (730) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (732) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказанием для входного изображения.
[72] Локальный видеодекодер (733) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных кодером (730) источника. Операции механизма (732) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг.7), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (733) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (734) опорных изображений. Таким образом, видеокодер (703) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[73] Предсказатель (735) может выполнять поиски с предсказанием для механизма (732) кодирования. То есть, для нового изображения, которое должно быть кодировано, предсказатель (735) может искать в памяти (734) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предсказатель (735) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем (735), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (734) опорных изображений.
[74] Контроллер (750) может управлять операциями кодирования исходного кодера (730), включая, например, установку параметров и параметров субгруппы, используемых для кодирования видеоданных.
[75] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (745). Энтропийный кодер (745) переводит символы, сгенерированные различными функциональными модулями, в закодированную видеопоследовательность путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.
[76] Передатчик (740) может буферизовать кодированную видеопоследовательность(и), созданную энтропийным кодером (745), чтобы подготовить ее к передаче через канал (760) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить кодированные видеоданные. Передатчик (740) может обеспечивать слияние кодированных видеоданных из видеокодера (703) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[77] Контроллер (750) может управлять работой видеокодера (703). Во время кодирования контроллер (750) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:
[78] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы интра-изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.
[79] Изображение с предсказанием (P-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[80] Изображение с двунаправленным предсказанием (B-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[81] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4x4, 8x8, 4x8 или 16x16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интра-предсказание). Пиксельные блоки P-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки B-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[82] Видеокодер (703) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как ITU-T Rec. H.265. В своей работе видеокодер (703) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[83] В варианте осуществления передатчик (740) может передавать дополнительные данные с кодированным видео. Исходный кодер (730) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и так далее.
[84] Видео может быть захвачено как множество исходных изображений (видеоизображений) во временной последовательности. Интра-кадровое предсказание (часто сокращенно называемое интра-предсказанием) использует пространственную корреляцию в данном изображении, а интер-кадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[85] В некоторых вариантах осуществления при интер-кадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.
[86] Кроме того, метод режима слияния может использоваться в интер-кадровом предсказании для повышения эффективности кодирования.
[87] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как интер-кадровые предсказания и интра-кадровые предсказания, выполняются в единице блоков. Например, в соответствии со стандартом HEVC, изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU) для сжатия, причем CTU в изображении имеют одинаковый размер, например 64x64 пикселей, 32x32 пикселей или 16x16 пикселей. В общем, CTU включает в себя три блока дерева кодирования (CTB), которые представляют собой один CTB яркости и два CTB цветности. Каждая CTU может быть рекурсивно разделена на квадродерево на одну или множество единиц кодирования (CU). Например, CTU размером 64x64 пикселей можно разделить на один CU из 64x64 пикселей, или 4 CU из 32x32 пикселей, или 16 CU из 16x16 пикселей. В примере каждый CU анализируется для определения типа предсказания для CU, такого как тип интер-предсказания или тип интра-предсказания. CU разделяется на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. Обычно каждая PU включает в себя блок предсказания яркости (PB) и два PB цветности. В варианте осуществления операция предсказания при кодировании (кодировании/декодировании) выполняется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, такую как 8x8 пикселей, 16x16 пикселей, 8x16 пикселей, 16x8 пикселей и т. п.
[88] На фиг.8 показана схему видеокодера (803) согласно другому варианту осуществления изобретения. Видеокодер (803) конфигурирован для приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое является частью кодированной видеопоследовательности. В одном примере видеокодер (803) используется вместо видеокодера (503) в примере с фиг.5.
[89] В примере HEVC видеокодер (803) принимает матрицу значений отсчетов для блока обработки, такого как блок предсказания из 8x8 отсчетов и т. п. Видеокодер (803) определяет, закодирован ли блок обработки лучше всего при использовании интра-режима, интер-режима или режима двойного предсказания, используя, например, оптимизацию скорости-искажения. Когда блок обработки должен быть кодирован в интра-режиме, видеокодер (803) может использовать метод интра-предсказания для кодирования блока обработки в кодированное изображение; а когда блок обработки должен быть кодирован в интер-режиме или режиме двойного предсказания, видеокодер (803) может использовать метод интер-предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео режим слияния может быть субрежимом интер-кадрового предсказания, в котором вектор движения выводится из одного или нескольких предсказателей вектора движения без преимущества кодированной компоненты вектора движения снаружи предсказателей. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применимый к рассматриваемому блоку. В одном примере видеокодер (803) включает в себя другие компоненты, такие как модуль выбора режима (не показан), для определения режима блоков обработки.
[90] На примере с фиг.8 видеокодер (803) включает в себя интер-кодер (830), интра-кодер (822), вычислитель (823) остатка, переключатель (826), кодер (824) остатка, общий контроллер (821) и энтропийный кодер (825), соединенные вместе, как показано на фиг.8.
[91] Интер-кодер (830) конфигурирован для приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоков в предыдущих изображениях и последующих изображениях), генерации информации интер-предсказания (например, описания избыточной информации согласно методу интер-кодирования, векторов движения, информации режима слияния) и вычисления результатов интер-предсказания (например, предсказанный блок) на основе информации интер-предсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются декодированными опорными изображениями, которые декодируются на основе кодированной видеоинформации.
[92] Интра-кодер (822) конфигурирован для приема отсчетов текущего блока (например, блока обработки), в некоторых случаях сравнения блока с блоками, уже кодированными в том же изображении, генерации квантованных коэффициентов после преобразования, а в некоторых случаях также информации интра-предсказания (например, информации направления интра-предсказания согласно одному или более методов интра-кодирования). В одном примере интра-кодер (822) также вычисляет результаты интра-предсказания (например, предсказанный блок) на основе информации интра-предсказания и опорных блоков в одном и том же изображении.
[93] Общий контроллер (821) конфигурирован для определения общих данных управления и управления другими компонентами видеокодера (803) на основе общих данных управления. В одном примере общий контроллер (821) определяет режим блока и подает управляющий сигнал на переключатель (826) на основе режима. Например, когда режим является интра-режимом, общий контроллер (821) управляет переключателем (826), чтобы выбрать результат интра-режима для использования вычислителем (823) остатка, и управляет энтропийным кодером (825), чтобы выбрать информацию интра-предсказания и включить информацию интра-предсказания в битовый поток; и когда режимом является интер-режим, общий контроллер (821) управляет переключателем (826), чтобы выбрать результат интер-предсказания для использования вычислителем (823) остатка, и управляет энтропийным кодером (825), чтобы выбрать информацию интер-предсказания и включить информацию интер-предсказания в битовый поток.
[94] Вычислитель (823) остатка конфигурирован для вычисления разницы (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (822) или интер-кодера (830). Кодер (824) остатка конфигурирован для работы на основе данных остатка, чтобы кодировать данные остатка, чтобы генерировать коэффициенты преобразования. В одном примере кодер (824) остатка конфигурирован для преобразования данных остатка из пространственной области в частотную область и генерации коэффициентов преобразования. Коэффициенты преобразования затем подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (803) также включает в себя декодер (828) остатка. Декодер (828) остатка конфигурирован для выполнения обратного преобразования и генерации декодированных данных остатка. Декодированные данные остатка могут подходящим образом использоваться интра-кодером (822) и интер-кодером (830). Например, интер-кодер (830) может генерировать декодированные блоки на основе декодированных данных остатка и информации интер-предсказания, а интра-кодер (822) может генерировать декодированные блоки на основе декодированных данных остатка и информации интра-предсказания. Декодированные блоки соответствующим образом обрабатываются для генерирования декодированных изображений, и декодированные изображения могут быть буферизованы в схеме памяти (не показана) и использоваться в качестве опорных изображений в некоторых примерах.
[95] Энтропийный кодер (825) конфигурирован для форматирования битового потока, чтобы включить в него кодированный блок. Энтропийный кодер (825) конфигурирован для включения различной информации в соответствии с подходящим стандартом, таким как стандарт HEVC. В одном примере энтропийный кодер (825) конфигурирован для включения общих данных управления, выбранной информации предсказания (например, информации интра-предсказания или информации интер-предсказания), информации остатка и другой подходящей информации в битовом потоке. Отметим, что согласно раскрытому объекту изобретения при кодировании блока в субрежиме слияния либо интер-режима, либо режима двойного предсказания информация остатка отсутствует.
[96] На фиг.9 показана схема видеодекодера (910) согласно другому варианту осуществления изобретения. Видеодекодер (910) конфигурирован для приема кодированных изображений, которые являются частью кодированной видеопоследовательности, и декодирования кодированных изображений для создания восстановленных изображений. В одном примере видеодекодер (910) используется вместо видеодекодера (510) в примере с фиг.5.
[97] В примере с фиг.9 видеодекодер (910) включает в себя энтропийный декодер (971), интер-декодер (980), декодер (973) остатка, модуль (974) восстановления и интра-декодер (972), соединенные вместе, как показано на фиг.9.
[98] Энтропийный декодер (971) может быть конфигурирован для восстановления из кодированного изображения определенных символов, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать в себя, например, режим, в котором кодируется блок (такой как, например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в субрежиме слияния или другом субрежиме), информацию предсказания (такую как, например, информация интра-предсказания или информация интер-предсказания), которая может идентифицировать определенный отсчет или метаданные, которые используются для предсказания интра-декодером (972) или интер-декодером (980), соответственно, остаточную информацию в форме, например, квантованных коэффициентов преобразования и т. п. В одном примере, когда режимом предсказания является интер-режим или режим двунаправленного предсказания, информация интер-предсказания предоставляется в интер-декодер (980); а когда тип предсказания является типом интра-предсказания, информация интра-предсказания предоставляется в интра-декодер (972). Остаточная информация может подвергаться обратному квантованию и предоставляется декодеру (973) остатка.
[99] Интер-декодер (980) конфигурирован для приема информации интер-прогнозирования и генерации результатов интер-предсказания на основе информации интер-предсказания.
[100] Интра-декодер (972) конфигурирован для приема информации интра-предсказания и генерации результатов предсказания основе информации интра-предсказания.
[101] Декодер (973) остатка конфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования, и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (973) остатка может также потребовать определенную управляющую информацию (чтобы включить параметр квантователя (QP)), и эта информация может быть предоставлена энтропийным декодером (971) (путь данных не показан, поскольку это может быть только управляющая информация малого объема).
[102] Модуль (974) восстановления конфигурирован для объединения в пространственной области остатка, выводимого декодером (973) остатка, и результатов предсказания (выводимых модулями интер или интра-предсказания, в зависимости от случая) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что другие подходящие операции, такие как операция деблокирования и т. п., могут выполняться для улучшения визуального качества.
[103] Следует отметить, что видеокодеры (503), (703) и (803) и видеодекодеры (510), (610) и (910) могут быть реализованы с использованием любого подходящего метода. В варианте осуществления видеокодеры (503), (703) и (803) и видеодекодеры (510), (610) и (910) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (503), (703) и (703) и видеодекодеры (510), (610) и (910) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[104] Аспекты изобретения предоставляют методы сигнализации для флага режима пропуска.
[105] Компенсация на основе блоков может использоваться для интер-предсказания и интра-предсказания. Для интер-предсказания компенсация на основе блоков из другого изображения известна как компенсация движения. Для интра-предсказания компенсация на основе блоков также может выполняться из ранее восстановленной области в пределах того же изображения. Компенсация на основе блоков из восстановленной области в пределах того же изображения называется компенсацией блока внутри изображения, ссылкой на текущее изображение (CPR) или копией внутри блока (IBC). Вектор смещения, который указывает смещение между текущим блоком и опорным блоком в одном и том же изображении, называется вектором блока (или сокращенно BV). В отличие от вектора движения при компенсации движения, который может иметь любое значение (положительное или отрицательное, в направлении x или y), вектор блока имеет несколько ограничений, гарантирующих, что опорный блок доступен и уже восстановлен. Кроме того, в некоторых примерах для рассмотрения параллельной обработки исключается некоторая эталонная область, которая является границей тайла или границей формы лестницы волнового фронта.
[106] Кодирование вектора блока может быть явным или неявным. В явном режиме (или называемом режимом расширенного предсказания вектора движения (AMVP) при внешнем кодировании) передается разность между вектором блока и его предсказателем; в неявном режиме вектор блока восстанавливается из предсказателя (называемого предсказателем вектора блока) аналогично вектору движения в режиме слияния. В некоторых реализациях разрешение блочного вектора ограничено целочисленными позициями; в других системах блочный вектор может указывать на дробные позиции.
[107] Использование интра-блочного копирования на уровне блока может быть передано с помощью флага уровня блока, называемого флагом IBC. В одном варианте осуществления флаг IBC передается, когда текущий блок не кодируется в режиме слияния. В других примерах использование копии интра-блока на уровне блока сигнализируется подходом ссылочного индекса. Текущее декодируемое изображение затем обрабатывается как опорное изображение. В примере такое опорное изображение помещается в последнюю позицию в списке опорных изображений. Это специальное опорное изображение также управляется вместе с другими временными опорными изображениями в буфере, таком как буфер декодированных изображений (DPB).
[108] Существуют также некоторые варианты для интра-блочного копирования, такие как перевернутая интра-блочная копия (опорный блок переворачивается по горизонтали или вертикали перед использованием для предсказания текущего блока) или строковое интра-блочное копирование (каждая единица компенсации внутри блока кодирования MxN является линия Mx1 или 1xN).
[109] Фиг. 10 - пример интра-блочного копирования согласно варианту осуществления изобретения. Текущее изображение (1000) находится в процессе декодирования. Текущее изображение (1000) включает в себя восстановленную область (1010) (область с точками) и область, которая должна быть декодирована (1020) (белая область). Текущий блок (1030) восстанавливается декодером. Текущий блок (1030) может быть восстановлен из опорного блока (1040), который находится в восстановленной области (1010). Смещение позиции между опорным блоком (1040) и текущим блоком (1030) называется вектором блока (1050) (или BV (1050)).
[110] В некоторых примерах интра-копия блока рассматривается как отдельный режим, отличный от режима интра-предсказания или режима интер-предсказания, сигнализация интра-копии блока может быть указана на уровне блока с использованием комбинации флагов, таких как pred_mode_ibc_flag и pred_mode_flag.
[111] В связанном примере блок кодирования может быть закодирован в режиме интра-предсказания или в режиме интер-предсказания. В связанном примере флаг режима предсказания «pred_mode_flag» с 1 битом может сигнализироваться или выводиться на уровне блока кодирования, чтобы различать режимы кодирования для текущего блока. Например, если pred_mode_flag равно 0, используется MODE_INTER (режим интер-кадрового предсказания); в противном случае (pred_mode_flag равно 1) используется MODE_INTRA (режим интра-предсказания).
[112] Когда используется интра-копия блока, решение о режиме может быть определено на основе значений pred_mode_flag и pred_mode_ibc_flag.
[113] В некоторых примерах (например, версия VVC) максимальный размер блока для интра-кодированного CU может достигать 128x128; максимальный размер блока для интра-кодированного CU может достигать 128x128; максимальный размер блока для CU, кодированного с интра-копией блока, может достигать 64x64, и все это в отсчетах с кодированием яркости. При использовании отдельного дерева кодирования яркости/цветности максимально возможный размер CU цветности в цветовом формате 4: 2: 0 будет 32x32.
[114] В некоторых примерах для блоков, которые интер-кодируются (кодируются с использованием режима интер-предсказания) или кодируются IBC (кодируются с использованием режима IBC), параметры движения могут быть предсказаны, например, в режиме слияния или режиме пропуска. В режиме слияния видеокодер создает список кандидатов параметров движения (например, опорных изображений и векторов движения), используя в качестве кандидатов параметры движения из соседних блоков, включая соседние по пространству блоки и соседние по времени блоки. О выбранных параметрах движения можно сигнализировать от видеокодера к видеодекодеру путем передачи индекса выбранного кандидата из списка кандидатов. В видеодекодере после декодирования индекса параметры движения соответствующего блока выбранного кандидата могут быть унаследованы. Видеокодер и видеодекодер конфигурированы для создания одних и тех же списков на основе уже закодированных блоков. Следовательно, на основе индекса видеодекодер может идентифицировать параметры движения кандидата, выбранного видеокодером.
[115] В режиме пропуска параметры движения могут быть предсказаны так же, как и в режиме слияния. Кроме того, в режиме пропуска к предсказанному блоку не добавляются остаточные данные, тогда как в режиме слияния остаточные данные добавляются к предсказанному блоку. Создание списка и передача индекса для идентификации кандидата в списке, описанном выше со ссылкой на режим слияния, обычно также выполняется в режиме пропуска. В некоторых вариантах осуществления флаг пропуска на уровне блока кодирования может использоваться, чтобы указать, кодируется ли блок с использованием режима пропуска или нет.
[116] Фиг. 11 иллюстрирует примерную таблицу синтаксиса (1100) для режима предсказания сигнализации на уровне единицы кодирования (или блока кодирования). Таблица синтаксиса (1100) условно извлекает из кодированного битового потока видео три флага, cu_skip_flag, pred_mode_flag и pred_mode_ibc_flag, как показано позициями (1101), (1102) и (1103) на фиг. 11.
[117] В частности, cu_skip_flag [x0] [y0] - это флаг пропуска. Флаг пропуска cu_skip_flag [x0] [y0], равный 1, указывает, что текущая единица кодирования кодируется в режиме пропуска. Таким образом, когда текущая единица кодирования находится в слайсе P (кодируется посредством интер-предсказания) или B (кодируется посредством двунаправленного интер-предсказания), после cu_skip_flag [x0] [y0] не анализируются никакие другие элементы синтаксиса, кроме одного или нескольких из следующих: флаг режима IBC pred_mode_ibc_flag [x0] [y0] и структура синтаксиса merge_data (). Когда текущая единица кодирования находится в I-слайсе, никакие элементы синтаксиса, кроме merge_idx [x0] [y0], не анализируются после cu_skip_flag [x0] [y0].
[118] Флаг пропуска cu_skip_flag [x0] [y0], равный 0, указывает, что единица кодирования не в режиме пропуска. Индексы массива x0, y0 определяют местоположение (x0, y0) верхнего левого отсчета яркости рассматриваемого блока кодирования относительно верхнего левого отсчета яркости изображения.
[119] Когда cu_skip_flag [x0] [y0] не присутствует в кодированном битовом потоке видео, cu_skip_flag [x0] [y0] может быть выведено равным 0.
[120] Кроме того, pred_mode_flag, равный 0, указывает, что текущая единица кодирования кодируется в режиме интер-предсказания; а pred_mode_flag, равный 1, указывает, что текущая единица кодирования кодируется в режиме интра-предсказания.
[121] В некоторых вариантах осуществления pred_mode_flag отсутствует в кодированном битовом потоке видео, и можно вывести pred_mode_flag. Вывод pred_mode_flag может быть основан на переменной modeType. Как правило, переменная modeType указывает, можно ли использовать режим интра-предсказания (MODE_INTRA), режим IBC (MODE_IBC), режим палитры (MODE_PLT) и режим интер-предсказания (MODE_TYPE_ALL), или можно использовать только режимы кодирования intra, IBC и палитры. (MODE_TYPE_INTRA), или могут ли использоваться только режимы интра-кодирования (MODE_TYPE_INTER) для единиц кодирования внутри узла дерева кодирования. Например, когда переменная modeType равна MODE_TYPE_ALL, можно использовать все из режима интра-предсказания, режима IBC, режима палитры и режима интер-предсказания; когда переменной modeType является MODE_TYPE_INTRA, можно использовать режим интра-предсказания, режим IBC и режим палитры; и когда переменная modeType равна MODE_TYPE_INTER, может использоваться только режим интер-предсказания.
[122] В некоторых примерах переменная modeType используется для управления возможными разрешенными типами режима предсказания для определенных небольших размеров CU. В корне CTU (где сначала вызывается синтаксис coding_tree ()) значение этой переменной устанавливается равным MODE_TYPE_ALL (что означает отсутствие ограничений). Следовательно, для больших CU, таких как 128x128, 128x64, 64x128, modeType должен быть установлен в MODE_TYPE_ALL. Когда большой CU разбивается на более мелкие CU, переменная modeType для маленьких CU может быть уточнена, например, на основе переменной treeType. В варианте осуществления схема дерева кодирования поддерживает возможность для компонента яркости и соответствующего компонента (компонентов) цветности иметь отдельные древовидные структуры блоков. В примере для секций P и B CTB яркости и цветности в CTU совместно используют одну и ту же древовидную структуру кодирования (например, одно дерево). Для I-слайсов CTB яркости и цветности в CTU могут иметь отдельные древовидные структуры блоков (например, двойное дерево), а случай разделения CTU с использованием отдельных структур блочного дерева называется разделением двойного дерева. Когда применяется разделение двойного дерева, CTB яркости может быть разделен на CU яркости с помощью древовидной структуры кодирования яркости (например, DUAL_TREE_LUMA), а CTB цветности могут быть разделены на CU цветности с помощью древовидной структуры кодирования цветности (например, DUAL_TREE_CHROMA). Таким образом, CU в I-слайсе может включать в себя блок кодирования компонента яркости и может включать в себя блоки кодирования двух компонентов цветности, а CU в P- или B-слайсе включает в себя блоки кодирования всех трех цветовых компонентов, если видео не является монохромным. В примере переменная treeType указывает, используется ли одиночное дерево (SINGLE_TREE) или двойное дерево для единицы кодирования, отделенной от единицы дерева кодирования; когда используется двойное дерево, переменная treeType указывает, обрабатываются ли в настоящий момент компоненты яркости (DUAL_TREE_LUMA) или компоненты цветности (DUAL_TREE_CHROMA).
[123] В некоторых вариантах реализации pre_mode_flag выводится следующим образом:
- Если cbWidth (ширина единицы кодирования) равна 4, а cbHeight (высота единицы кодирования) равна 4, pred_mode_flag предполагается равным 1 по той причине, что в некоторых примерах режим интер-предсказания не применяется до блоков 4х4;
- в противном случае, если modeType равен MODE_TYPE_INTRA, pred_mode_flag считается равным 1;
- в противном случае, если modeType равен MODE_TYPE_INTER, pred_mode_flag считается равным 0;
- в противном случае, pred_mode_flag предполагается равным 1 при декодировании I-слайса и равным 0 при декодировании P- или B-слайса соответственно.
[124] Переменная CuPredMode [chType] [x] [y] представляет собой режим предсказания, полученный следующим образом для x = x0..x0 + cbWidth? 1 и y = y0..y0 + cbHeight? 1:
- Если pred_mode_flag равен 0, CuPredMode [chType] [x] [y] устанавливается равным MODE_INTER (режим интер-предсказания);
- в противном случае (pred_mode_flag равно 1) CuPredMode [chType] [x] [y] устанавливается равным MODE_INTRA (режим интра-предсказания).
[125] Кроме того, флаг pred_mode_ibc_flag, равный 1, указывает, что текущая единица кодирования кодируется в режиме IBC. Флаг pred_mode_ibc_flag, равный 0, указывает, что текущая единица кодирования не кодируется в режиме IBC.
[126] В некоторых вариантах осуществления pred_mode_ibc_flag отсутствует в кодированном битовом потоке видео, и его можно вывести. Вывод pred_mode_ibc_flag может быть основан на переменной modeType и переменной treeType.
[127] Например, pred_mode_ibc_flag можно вывести следующим образом:
- Если cu_skip_flag [x0] [y0] равно 1, а cbWidth равно 4, а cbHeight равно 4, pred_mode_ibc_flag считается равным 1;
- в противном случае, если cbWidth или cbHeight равны 128, предполагается, что pred_mode_ibc_flag равно 0;
- в противном случае, если modeType равен MODE_TYPE_INTER, pred_mode_ibc_flag считается равным 0;
- в противном случае, если treeType равно DUAL_TREE_CHROMA, pred_mode_ibc_flag считается равным 0;
- в противном случае предполагается, что pred_mode_ibc_flag равняется значению sps_ibc_enabled_flag при декодировании I-слайса и 0 при декодировании P- или B-слайса соответственно.
[128] Когда pred_mode_ibc_flag равно 1, переменная CuPredMode [chType] [x] [y] устанавливается равной MODE_IBC для x = x0..x0 + cbWidth - 1 и y = y0..y0 + cbHeight - 1.
[129] Фиг. 12A-12E - примерная таблица (1200) синтаксиса уровня единицы дерева кодирования. В этом примере входным параметром modeTypeCurr является переменная modeType, унаследованная от родительского узла.
[130] Следует отметить, что синтаксис и семантика в некоторых примерах, таких как синтаксис с фиг. 11, не может правильно отражать ограничения размера блока, применяемые среди режимов интра/интер/IBC. Например, условия (1110) с фиг. 11 эквивалентны выполнению логического или (| |) первого условия (! (cbWidth = = 4 && cbHeight = = 4) && (modeType! = = MODE_TYPE_INTRA)) и второго условия (sps_ibc_enabled_flag). Первое условие проверяет, соответствует ли логическое значение (! (cbWidth = = 4 && cbHeight = = 4) && (modeType! = = MODE_TYPE_INTRA)) равно 1 или 0. Второе условие проверяет, является ли логическое значение (sps_ibc_enabled_flag) 1 или 0. Первое условие, равное 1, указывает, что текущий кодируемый блок является интер-кодированным блоком. Второе условие, равное 1, указывает, что режим IBC включен. На фиг. 11 пример, когда по крайней мере одно из первого условия и второго условия равно 1, а treeType не равно DUAL_TREE_CHROMA, флаг пропуска (например, cu_skip_flag [x0] [y0]) представлен в кодированном потоке битов видео и может быть декодирован. Однако в примере единица кодирования в I-слайсе может иметь по меньшей мере один размер (ширину и/или высоту) больше 64. Параметры единицы кодирования могут привести к тому, что первое условие будет равно 1, и/или второе условие будет равно 1. Однако блок кодирования не может быть интер-кодирован (из-за I-слайса) и не может быть кодирован IBC (из-за того, что по меньшей мере один размер больше 64). Таким образом, условия (1110) не могут правильно отражать ограничения размера блока, применяемые среди режимов интра/интер/IBC.
[131] Некоторые аспекты изобретения предоставляют методы для правильного отражения ограничений размера блока, применяемых среди режимов интра/интер/IBC. Следующие ниже описания основаны на предположении, что режим интра-блочного копирования (IBC) рассматривается как отдельный режим, отличный от интра или интер режимов. Методы могут сигнализировать флаг пропуска (например, cu_skip_flag [x0] [y0]), только когда режим IBC возможен в I-слайсе. Если возможен только интра-режим, не нужно сигнализировать о флаге пропуска; вместо этого можно сделать вывод, что флаг пропуска равен 0.
[132] В варианте осуществления, дополнительные условия могут быть наложены на сигнализацию флага пропуска, так что, когда размер блока CU предполагает, что возможен только интра-режим (размер блока превышает максимальный размер блока IBC), флаг пропуска не сигнализируется (не представлен в битовой кодировке видео). Вместо этого можно сделать вывод, что флаг пропуска равен 0.
[133] В примере, когда блок в I-слайсе больше 64 отсчетов яркости либо на стороне ширины, либо на стороне высоты, блок не может быть интер-кодирован и не может быть кодирован IBC, и, таким образом, возможен только интра-режим (режим интра-предсказания) для блока.
[134] Фиг. 13 иллюстрирует примерную таблицу (1300) синтаксиса согласно некоторым вариантам осуществления изобретения. Как показано номером позиции (1310) на фиг. 13, третье условие (! ( slice_type = I && (cbWidth> 64 | | cbHeight> 64))) добавляется для объединения (использован логический и оператор &&) с первым условием и вторым условием. Когда блок в I-слайсе больше 64 отсчетов яркости либо на стороне ширины, либо на стороне высоты, третьим условием может быть 0. Тогда комбинация первого условия, второго условия и третьего условия равна 0. Таким образом, флаг пропуска (cu_skip_flag [x0] [y0]) не передается (не представлен в кодированном потоке битов видео).
[135] В другом варианте осуществления первое условие и/или второе условие можно соответствующим образом изменить, чтобы применить ограничения размера для режима IBC. В некоторых примерах назначение modeType изменяется таким образом, что, когда размер блока CU предполагает, что в I-слайсе возможен только интра-режим (размер блока превышает максимальный размер блока IBC), modeType устанавливается в MODE_TYPE_INTRA, что может вызвать первое условие быть равным 0. В некоторых вариантах осуществления, если (slice_type == I && (cbWidth> 64 || cbHeight> 64)), то modeType устанавливается в MODE_TYPE_INTRA.
[136] Фиг. 14 иллюстрирует примерную таблицу (1400) синтаксиса на уровне дерева кодирования согласно некоторым вариантам осуществления изобретения. Как показано номером позиции (1410), когда блок в I-слайсе превышает 64 отсчета яркости либо на стороне ширины, либо на стороне высоты, переменная modeTypeCurrr устанавливается в MODE_TYPE_INTRA. Переменная modeTypeCurr является входным параметром для синтаксиса coding_unit (), как показано синтаксисами на фиг. 14 и фиг. 13. Следовательно, в таблице синтаксиса coding_unit () результат первого условия равен 0. В другом примере в синтаксисе coding_unit () переменная modeType устанавливается в MODE_TYPE_INTRA перед первым предложением «if», когда блок в I-слайсе превышает 64 отсчета яркости либо на стороне ширины, либо на стороне высоты. Таким образом, результат первого условия равен 0.
[137] В некоторых примерах вторые условия можно изменить, чтобы применить ограничения по размеру для режима IBC. Например, второе условие изменяется на (sps_ibc_enabled_flag && cbWidth <= 64 && cbHeight <= 64). Таким образом, когда блок в I-слайсе больше 64 отсчетов яркости либо на стороне ширины, либо на стороне высоты, результатом второго условия будет 0.
[138] Следует отметить, что варианты осуществления настоящего изобретения можно использовать по отдельности или комбинировать в любом порядке.
[139] Фиг. 15 иллюстрирует блок-схему, описывающую процесс (1500) согласно варианту осуществления изобретения. Процесс (1500) может использоваться при восстановления блока, чтобы сгенерировать блок предсказания для восстанавливаемого блока. В различных вариантах осуществления процесс (1500) выполняется схемой обработки, например схемой обработки в оконечных устройствах (410), (420), (430) и (440), схемой обработки, которая выполняет функции видеокодера (503), схемой обработки, которая выполняет функции видеодекодера (510), схемой обработки, которая выполняет функции видеодекодера (610), схемой обработки, которая выполняет функции видеокодера (703), и т.п. В некоторых вариантах осуществления процесс (1500) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (1500). Процесс начинается на (S1501) и переходит на (S1510).
[140] На этапе (S1510) информация предсказания для блока в I-слайсе декодируется из кодированного битового потока видео.
[141] На этапе (S1520) определяется, возможен ли режим IBC для блока, на основе информации предсказания и ограничения размера режима IBC. В некоторых вариантах осуществления режим IBC определяется как невозможный для блока в I-слайсе в ответ на то, что размер блока превышает пороговое значение. В варианте осуществления определяется, что режим IBC невозможен для блока, когда по меньшей мере одно из ширины или высоты блока больше порогового значения.
[142] В некоторых вариантах осуществления возможность режима IBC для блока в I-слайсе определяет, находится ли флаг (флаг режима пропуска) для блока в кодированном потоке битов видео. В некоторых примерах синтаксис включает некоторые существующие условия для определения наличия флага режима пропуска. В варианте осуществления наличие флага в кодированном битовом потоке видео также определяется на основе добавленного условия, которое сравнивает размер блока с пороговым значением. Добавленное условие исключает наличие флага в ответ на то, что размер блока в I-слайсе превышает пороговое значение.
[143] В лругом варианте осуществления, определяют наличие флага в кодированном битовом потоке видео на основе существующего условия, которое модифицируется для сравнения размера блока с пороговым значением. В примере существующее условие - это первое условие, которое определяет, является ли блок интер-кодированным блоком, и первое условие модифицируется на основе сравнения размера блока с пороговым значением. В другом примере существующее условие - это второе условие, которое определяет, включен ли режим IBC, и второе условие модифицируется на основе сравнения размера блока с пороговым значением.
[144] На этапе (S1530) флаг, который указывает, применен ли режим пропуска к блоку, декодируется из потока битов в ответ на то, что режим IBC возможен для блока в I-слайсе в некоторых примерах. Кроме того, в некоторых примерах флаг может выводиться в ответ на невозможность режима IBC для блока в I-слайсе.
[145] На этапе (S1540) блок восстанавливается по меньшей мере частично на основе флага. В примере, когда флаг указывает режим пропуска, блок восстанавливается на основе режима пропуска. Затем процесс переходит к (S1599) и завершается.
[146] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг.16 показана компьютерная система (1600), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.
[147] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и и т. п., одним или более центральными процессорами компьютера (CPU), графическими процессорами (CPU) и т. п.
[148] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т. п.
[149] Компоненты, показанные на фиг.16 для компьютерной системы (1600), являются примерными по своей сущности и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1600).
[150] Компьютерная система (1600) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[151] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображено): клавиатура (1601), мышь (1602), трекпад (1603), сенсорный экран (1610), управляющая перчатка (не показана), джойстик (1605), микрофон (1606), сканер (1607), камера (1608).
[152] Компьютерная система (1600) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1610), управляющей перчатки (не показана) или джойстика (1605), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1609), наушники (не показаны)), устройства вывода изображения (например, экраны (1610), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[153] Компьютерная система (1600) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1620) с CD/DVD или подобные носители (1621), флэш-накопитель (1622), съемный жесткий диск или твердотельный накопитель (1623), унаследованные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.
[154] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[155] Компьютерная система (1600) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т. д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т. п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т. д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1649) (например, к портам USB компьютерной системы (1600)); другие обычно интегрированы в ядро компьютерной системы (1600) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1600) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.
[156] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1640) компьютерной системы (1600).
[157] Ядро (1640) может включать в себя один или более центральных процессоров (CPU) (1641), графических процессоров (GPU) (1642), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (FPGA) (1643), аппаратных ускорителей (1644) для определенных задач и т. д. Эти устройства, наряду с постоянной памятью (ROM) (1645), памятью с произвольным доступом (1646), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. (1647), могут быть подключены через системную шину (1648). В некоторых компьютерных системах системная шина (1648) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных CPU, GPU и т. п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1648) ядра, либо через периферийную шину (1649). Архитектура периферийной шины включает PCI, USB и т. п.
[158] CPU (1641), GPU (1642), FGPA (1643) и ускорители (1644) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1645) или RAM (1646). Переходные данные также могут храниться в RAM (1646), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1647). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или более CPU ЦП (1641), GPU (1642), ЗУ большой емкости (1647), ROM (1645), RAM (1646) и т. п.
[159] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[160] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру (1600) и, в частности, ядро (1640), может обеспечивать функциональность за счет процессора (ов) (включая CPU, GPU, FPGA, ускорители и т.п.), исполняющего программное обеспечение, воплощенное на одном или нескольких материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1640), которые имеют невременной характер, например, внутренним ЗУ (1647) большой емкости ядра или ROM (1645). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1640). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может заставить ядро (1640) и, в частности, процессоры в нем (включая CPU, GPU, FGPA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM (1646), и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1644)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (IC)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее изобретение включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.
[161]
Приложение A: Сокращения
JEM: объединенная исследовательская модель
VVC: универсальное кодирование видео
BMS: набор тестов
MV: вектор движения
HEVC: высокоэффективное видеокодирование
SEI: дополнительная расширенная информация
VUI: информация о свойствах видео
GOPs: группы изображений
TUs: единицы преобразования,
PUs: единицы предсказания
CTUs: единицы дерева кодирования
CTBs: блоки дерева кодирования
PBs: блоки предсказания
HRD: гипотетический эталонный декодер
SNR: соотношение сигнал-шум
CPU: центральные процессоры
GPU: графические процессоры
CRT:электронно-лучевая трубка
LCD: жидкокристаллический дисплей
OLED: органический светоизлучающий диод
CD: компакт-диск
DVD: Цифровой видеодиск
ROM: постоянное запоминающее устройство
RAM:оперативное запоминающее устройство
ASIC: интегральная схема специального назначения
PLD: программируемое логическое устройство
LAN: локальная сеть
GSM: глобальная система мобильной связи
LTE: долгосрочное развитие
CANBus: шина локальной сети контроллера
USB: универсальная последовательная шина
PCI: соединение периферийных компонентов
FPGA: программируемые пользователем вентильные матрицы
SSD: твердотельный накопитель
IC: интегральная схема
CU: единица кодирования
[162] Хотя это описание раскрывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем изобретения. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в рамках его сущности и объема.
Изобретение относится к области кодирования или декодирования видео. Техническим результатом является повышение эффективности и скорости кодирования. Предложено устройство декодирования видео, включающее: схему приема и схему обработки, которая декодирует информацию предсказания для блока в I-слайсе из кодированного битового потока видео и определяет, возможен ли режим интраблочного копирования (IBC) для блока в I-слайсе. В ответ на параметр типа слайса, указывающий I слайс и по меньшей мере ширину или высоту блока больше 64, схема обработки устанавливает параметр типа текущего режима в MODE_TYPE_INTRA. Кроме того, в варианте осуществления схема обработки декодирует флаг, который указывает, применен ли режим пропуска к блоку из кодированного битового потока видео. Затем схема обработки восстанавливает блок по меньшей мере частично на основе флага. 3 н. и 11 з.п. ф-лы, 20 ил.
1. Способ декодирования видео в декодере, включающий следующие этапы: декодируют, с помощью процессора, информацию предсказания для блока в I-слайсе из кодированного битового потока видео;
причем в ответ на любое из: (i) параметр типа слайса, указывающий I-слайс и размер блока, превышающий пороговое значение, и (ii) параметр типа текущего режима установлен как MODE_TYPE_INTRA, что указывает, что только режим интра-предсказания возможен для блока в I-слайсе, определяют, что флаг, указывающий, применен ли к блоку режим пропуска, не сигнализируется в кодированном битовом потоке видео, и делают вывод о равенстве 0 флага, что указывает, что к блоку не применен режим пропуска;
в ответ на параметр типа слайса, указывающий I-слайс и размер блока меньше порогового значения, или параметр типа текущего режима, не установленный как MODE_TYPE_INTRA в I-слайсе, декодируют, с помощью процессора, флаг, указывающий, применен ли режим пропуска к блоку из кодированного битового потока видео; и
восстанавливают, с помощью процессора, блок по меньшей мере частично на основе флага.
2. Способ по п. 1, в котором пороговое значение составляет 64.
3. Способ по п. 1, дополнительно включающий следующий этап:
определяют наличие флага в кодированном битовом потоке видео на основе добавленного условия, сравнивающего размер блока с пороговым значением, причем добавленное условие исключает наличие флага в ответ на то, что размер блока в I-слайсе больше порогового значения.
4. Способ по п. 1, дополнительно включающий следующий этап:
определяют наличие флага в кодированном битовом потоке видео на основе существующего условия, которое модифицируется для сравнения размера блока с пороговым значением.
5. Способ по п. 4, в котором существующее условие определяет, является ли блок интер-кодированным блоком.
6. Способ по п. 4, в котором существующее условие определяет, включен ли режим IBC.
7. Устройство для декодирования видео, содержащее схему обработки, конфигурированную для:
декодирования информации предсказания для блока в I-слайсе из кодированного битового потока видео;
причем в ответ на любое из: (i) параметр типа слайса, указывающий I-слайс и размер текущего блока, превышающий пороговое значение, и (ii) параметр типа текущего режима установлен как MODE_TYPE_INTRA, что указывает, что только режим интра-предсказания возможен для блока в I-слайсе, схема обработки определяет, что флаг, указывающий, применен ли к блоку режим пропуска, не сигнализируется в кодированном битовом потоке видео, и делает вывод о равенстве 0 флага, что указывает, что к блоку не применен режим пропуска;
в ответ на параметр типа слайса, указывающий I-слайс и размер блока меньше порогового значения, или параметр типа текущего режима, не установленный как MODE_TYPE_INTRA в I-слайсе, декодирования флага, указывающего, применен ли режим пропуска к блоку из кодированного битового потока видео; и
восстановления блока по меньшей мере частично на основе флага.
8. Устройство по п. 7, причем пороговое значение составляет 64.
9. Устройство по п. 7, причем схема обработки конфигурирована для:
определения наличия флага в кодированном битовом потоке видео на основе добавленного условия, сравнивающего размер блока с пороговым значением, причем добавленное условие исключает наличие флага в ответ на то, что размер блока в I-слайсе больше порогового значения.
10. Устройство по п. 7, причем схема обработки конфигурирована для:
определения наличия флага в кодированном битовом потоке видео на основе существующего условия, которое модифицируется на основе сравнения размера и порогового значения.
11. Устройство по п. 10, причем существующее условие определяет, является ли блок интер-кодированным блоком.
12. Устройство по п. 10, причем существующее условие определяет, включен ли режим IBC.
13. Невременный машиночитаемый носитель, хранящий инструкции, которые при исполнении компьютером для декодирования видео побуждают компьютер выполнять:
декодирование информации предсказания для блока в I-слайсе из кодированного битового потока видео;
причем в ответ на любое из: (i) параметр типа слайса, указывающий I-слайс и размер текущего блока, превышающий пороговое значение, и (ii) параметр типа текущего режима установлен как MODE_TYPE_INTRA, что указывает, что только режим интра-предсказания возможен для блока в I-слайсе, определяется, что флаг, указывающий, применен ли к блоку режим пропуска, не сигнализируется в кодированном битовом потоке видео, и делается вывод о равенстве 0 флага, что указывает, что к блоку не применен режим пропуска;
в ответ на параметр типа слайса, указывающий I-слайс и размер блока меньше порогового значения, или параметр типа текущего режима, не установленный как MODE_TYPE_INTRA в I-слайсе, декодирование флага, указывающего, применен ли режим пропуска к блоку из кодированного битового потока видео; и
восстановление блока по меньшей мере частично на основе флага.
14. Невременный машиночитаемый носитель по п. 13, причем пороговое значение составляет 64.
US 2016241858 A1, 2016.08.18 | |||
US 2016100186 A1, 2016.04.07 | |||
СПОСОБ ВИДЕОКОДИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ПРЕДСКАЗАНИЯ НА ОСНОВАНИИ КОПИИ ВНУТРИКАДРОВОГО БЛОКА | 2014 |
|
RU2630888C1 |
WEIJIA ZHU еt al., CE8-related: Palette Mode Coding, Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-N0258-v1, 14th Meeting: Geneva, 19-27 March 2019 | |||
ЗЕРКАЛЬНОЕ ОТОБРАЖЕНИЕ БЛОКОВ И РЕЖИМ ПРОПУСКА В ИНТРА-ОСНОВАННОМ НА КОПИИ БЛОКА ПРЕДСКАЗАНИИ | 2014 |
|
RU2657210C2 |
RU 2017140987 A, 2019.07.02. |
Авторы
Даты
2023-08-11—Публикация
2021-01-04—Подача