[0001] Настоящая заявка испрашивает приоритет заявки США № 16/567,966, поданной 11 сентября 2019, предварительной заявки США № 62/730,504, поданной 12 сентября 2018, все содержание каждой из которых включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и декодированию видео.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0003] Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, в том числе цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или стационарные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видео-телеконференций, устройства потоковой передачи (стриминга) видео и тому подобное. Цифровые видеоустройства реализуют методы кодирования видео, такие как методы, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Расширенное кодирование видео (AVC), стандарте Высокоэффективное кодирование видео (HEVC), ITU-T H.265/Высокоэффективное кодирование видео (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методов кодирования видео.
[0004] Методы кодирования видео включают в себя пространственное (внутри картинки, внутрикадровое) предсказание и/или временное (между картинками, межкадровое) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, вырезка (slice, слайс) видео (т.е. картинка видео или часть картинки видео) может разбиваться на блоки видео, которые могут также упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Блоки видео в интра-кодированной (I) вырезке картинки кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в той же самой картинке. Блоки видео в интер-кодированной (P или B) вырезке картинки могут использовать пространственное предсказание по отношению к опорным выборкам в соседних блоках в той же самой картинке или временное предсказание по отношению к опорным выборкам в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
Краткое описание сущности изобретения
[0005] В общем, настоящее раскрытие описывает методы, которые могут снизить использование памяти для временного предсказания в адаптивной контурной фильтрации (ALF). По сравнению с временным предсказанием, принятым в JEM 7, описанные методы могут обеспечивать значительное сокращение памяти при незначительных потерях или полном отсутствии потерь в эффективности сжатия. Методы настоящего раскрытия могут быть использованы для разработки более практичных реализаций ALF в усовершенствованных кодеках видео, таких как расширения H.265/HEVC и стандарты кодирования видео следующего поколения, включая H.266/VVC.
[0006] В одном примере, способ декодирования данных видео включает в себя сохранение наборов параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение наборов параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодирование одного или более блоков данных видео; и фильтрацию одного или более блоков с использованием параметров ALF одномерного массива.
[0007] В другом примере, устройство для декодирования данных видео включает в себя память, сконфигурированную, чтобы сохранять данные видео, и один или более процессоров, реализованных в схемах и сконфигурированных, чтобы сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве в памяти, одномерный массив имеет предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем один или более процессоров сконфигурированы, чтобы сохранять, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодировать один или более блоков данных видео; и фильтровать один или более блоков с использованием параметров ALF одномерного массива. Устройство может дополнительно кодировать один или более блоков перед декодированием одного или более блоков.
[0008] В другом примере, компьютерно-читаемый запоминающий носитель имеет сохраненные на нем инструкции, которые, при исполнении, предписывают процессору сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение наборов параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодировать один или более блоков данных видео; и фильтровать один или более блоков с использованием параметров ALF одномерного массива.
[0009] В другом примере, устройство для декодирования данных видео включает в себя средство для сохранения наборов параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение наборов параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; средство для декодирования одного или более блоков данных видео; и средство для фильтрации одного или более блоков с использованием параметров ALF одномерного массива.
[0010] Детали одного или более примеров представлены на приложенных чертежах и в описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0011] Фиг. 1 является концептуальной диаграммой, иллюстрирующей примерную поддержку адаптивного контурного фильтра (ALF).
[0012] Фиг. 2 является концептуальной диаграммой, иллюстрирующей примерные временные уровни в иерархической структуре кадра.
[0013] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может выполнять методы настоящего раскрытия.
[0014] Фиг. 4A и 4B представляют собой концептуальные диаграммы, иллюстрирующие примерную структуру квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).
[0015] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может выполнять методы настоящего раскрытия.
[0016] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может выполнять методы настоящего раскрытия.
[0017] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ декодирования и фильтрации данных видео в соответствии с методами настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0018] Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширения Масштабируемого кодирования видео (SVC) и Многовидового кодирования видео (MVC).
[0019] Кроме того, новый стандарт кодирования видео, а именно, Высокоэффективное кодирование видео (HEVC), был в последнее время разработан Объединенной группой для сотрудничества в области кодирования видео (JCT-VC) Экспертной группы в области кодирования видео (VCEG) и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC. Спецификация проекта HEVC, упоминаемая далее как HEVC WD, доступна из phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip. Стандарт HEVC был финализирован в январе 2013.
[0020] ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) в настоящее время изучают потенциальную потребность в стандартизации будущей технологии кодирования видео с функциональными возможностями сжатия, которые значительно превышают таковые в современном стандарте HEVC (включая его текущие расширения и расширения ближайшего будущего для кодирования экранного содержимого и кодирования высокого динамического диапазона). Указанные группы работают совместно над этими исследованиями в рамках объединенного сотрудничества, известного как Объединенная группа по исследованиям в области видео (JVET), чтобы оценить разработки технологии сжатия, предложенные ее экспертами в этой области. Первая встреча JVET состоялась 19-21 октября 2015. Программное обеспечение, т.е. Модель совместного исследования (JEM 7), доступно из jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/
[0021] В области кодирования видео, хорошо известно применение фильтрации для улучшения качества декодированного сигнала видео. Фильтр может применяться как пост-фильтр, где отфильтрованный кадр не используется для предсказания будущих кадров, или контурный фильтр, где отфильтрованный кадр используется для предсказания будущего кадра. Фильтр может быть спроектирован, например, путем минимизации ошибки между исходным сигналом и декодированным отфильтрованным сигналом. Как в случае коэффициентов преобразования, коэффициенты фильтра , , могут быть квантованы в соответствии с:
[0022] Квантованные коэффициенты преобразования могут затем кодироваться и отправляться в декодер. normFactor может быть равен 2n. Большие значения normFactor могут привести к более точному квантованию. В результате, квантованные коэффициенты фильтра f(k, l) могут обеспечить лучшие рабочие характеристики. Однако очень большие значения normFactor производят коэффициенты f(k, l), обычно требующие больше битов для передачи.
[0023] В декодере, декодированные коэффициенты фильтра f(k, l) применяются к восстановленному изображению R(i, j) следующим образом:
(1)
где i и j являются координатами пикселов в кадре.
[0024] Фиг. 1 является концептуальной диаграммой, иллюстрирующей примерную поддержку адаптивного контурного фильтра (ALF). Внутриконтурный адаптивный фильтр оценивался на стадии HEVC, но не включен в финальную версию.
[0025] Внутриконтурный адаптивный контурный фильтр, использованный в JEM, первоначально был предложен в J. Chen, Y. Chen, M. Karczewicz, X. Li, H. Liu, L. Zhang, X. Zhao, “Coding tools investigation for next generation video coding”, SG16-Geneva-C806, Jan. 2015. Базовая идея является той же самой, что и ALF с адаптацией на основе блока в HM-3 [3]. Для компонента яркости, 4×4 блоки во всей картинке классифицированы на основе направления 1D лапласиана (до 3 направлений) и действия 2D лапласиана (до 5 значений действия). Вычисление направления Dirb и неквантованного действия Actb показано в уравнениях (2)-(5), где указывает восстановленный пиксел с относительной координатой (i, j) сверху-слева от 4×4 блока. Actb дополнительно квантуется в диапазон от 0 до 4 включительно, как описано в T. Wiegand, B. Bross, W.-J. Han, J.-R. Ohm and G. J. Sullivan, “WD3: Working Draft 3 of High-Efficiency Video Coding”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-E603, 5th Meeting: Geneva, CH, 16-23 March 2011.
(2)
(3)
(4)
(5)
[0026] В общем, каждый блок может быть классифицирован на один из 15 (5×3) классов, и индекс присваивается каждому 4×4 блоку в соответствии со значением Dirb и Actb блока. Поэтому, до 15 наборов параметров ALF может сигнализироваться для компонента яркости картинки. Для того чтобы сэкономить затраты на сигнализацию, группы могут объединяться вместе со значением индекса группы. Для каждой объединенной группы, сигнализируется набор коэффициентов ALF. Поддерживается до трех круговых симметричных форм фильтра (как показано на фиг. 1).
[0027] Для обоих компонентов цветности в картинке, применяется единый набор коэффициентов ALF и всегда используется ромбовидный фильтр 5×5.
[0028] На стороне декодера, каждая пиксельная выборка фильтруется, в результате чего получается пиксельное значение I’i, j, как показано в уравнении (6), где L обозначает длину фильтра, fm, n представляет коэффициент фильтра, и o указывает смещение фильтра.
(6)
где и ( .
[0029] В JEM2, битовая глубина, обозначенная BDF, установлена на значение 9, что означает, что коэффициент фильтра может находиться в диапазоне [-256, 256].
[0030] Коэффициенты ALF ранее кодированных картинок сохраняются и разрешаются для повторного использования в качестве коэффициентов ALF текущей картинки. Текущая картинка может выбрать использование коэффициентов ALF, сохраненных для опорных картинок, и тогда обойти сигнализацию коэффициентов ALF. В этом случае, только индекс к одной из опорных картинок сигнализируется, и сохраненные коэффициенты ALF указанной опорной картинки просто наследуются для текущей картинки. Чтобы указать использование временного предсказания, перед отправкой индекса сначала кодируется один флаг.
[0031] В проекте JEM 7, параметры ALF максимум из шести предыдущих картинок/вырезок сохраняются в отдельном массиве для каждого временного уровня. Например, если в иерархической структуре кодирования B/P имеется 5 временных уровней (что имеет место в настройке произвольного доступа, используемой в текущей стандартизации кодирования видео), то как кодер, так и декодер используют массив памяти 5×6, так что в целом имеется 30 элементов памяти для сохранения ранее полученных параметров ALF.
[0032] Традиционный проект JEM 7 эффективно удаляет сохраненные параметры ALF, когда картинка IRAP (I-кадр) кодируется/декодируется. Чтобы избежать дублирования, параметры ALF сохраняются в памяти только в том случае, если они вновь получены посредством сигнализации на стороне декодера (на стороне кодера новые параметры получают посредством оценки/ тренинга). Сохранение параметров выполняется в порядке “первым пришел - первым обслужен” (FIFO) (то есть способом FIFO), поэтому, если массив заполнен, новый набор значений параметров ALF перезаписывает самые старые параметры в порядке декодирования.
[0033] Фиг. 2 представляет собой концептуальную структуру, иллюстрирующую примерные временные уровни в иерархической структуре кадра.
[0034] Одна примерная причина использования двумерного (2D) массива (в памяти) для хранения параметров ALF состоит в том, чтобы сохранить временную масштабируемость в иерархической структуре кодирования кадров B/P. Как показано на фиг. 2, кадр на уровне Ti не может зависеть от (например, не может быть предсказан из) кадра на уровне Tk для i<k. Другими словами, кадр/вырезка на более низком временном уровне (например, T2) не может зависеть от кадров/вырезок на более высоких уровнях (например, T3 и T4). Текущее временное предсказание в ALF, которое описано в заявке США № 15/861,165, поданной 3 января 2018, опубликованной как патентная публикация США № 2018/0192050, сохраняет временную масштабируемость, просто сохранением параметров ALF, полученных из различных временных уровней, в различных строках 2-D массива и обеспечением того, что эти параметры используются без нарушения структуры зависимостей в иерархических кадрах B/P.
[0035] Современный проект временного предсказания может потребовать большого объема памяти. В частности, как в кодере, так и в декодере может потребоваться массив 5×6 с 30 элементами памяти для сохранения параметров ALF. Методы настоящего раскрытия могут значительно снизить требования к памяти за счет использования 1D массива, сохраняя при этом временную масштабируемость.
[0036] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерную систему 100 кодирования и декодирования видео, которая может выполнять методы настоящего раскрытия. Методы настоящего раскрытия в основном направлены на кодирование (кодирование и/или декодирование) данных видео. В принципе, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать необработанное, некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.
[0037] Как показано на фиг. 3, система 100 включает в себя устройство 102 источника, которое обеспечивает кодированные данные видео, подлежащие декодированию и отображению устройством 116 места назначения (получателем), в данном примере. В частности, устройство 102 источника предоставляет данные видео на устройство 116 места назначения посредством компьютерно-читаемого носителя 110. Устройство 102 источника и устройство 116 места назначения могут содержать любое из широкого спектра устройств, включая настольные компьютеры, ноутбуки, планшетные компьютеры, телевизионные приставки, телефоны, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, устройства потоковой передачи видео и тому подобное. В некоторых случаях, устройство 102 источника и устройство 116 места назначения могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.
[0038] В примере на фиг. 3, устройство 102 источника включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство 116 места назначения включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с настоящим раскрытием, кодер 200 видео устройства 102 источника и декодер 300 видео устройства 116 места назначения могут быть сконфигурированы, чтобы применять методы для временного предсказания параметров адаптивного контурного фильтра, которые могут снижать потребление памяти. Таким образом, устройство 102 источника представляет собой пример устройства кодирования видео, в то время как устройство 116 места назначения представляет собой пример устройства декодирования видео. В других примерах, устройство источника и устройство места назначения могут включать в себя другие компоненты или устройства. Например, устройство 102 источника может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство 116 места назначения может взаимодействовать с внешним устройством отображения вместо того, чтобы включать в себя встроенное устройство отображения.
[0039] Система 100, как показано на фиг. 3, является лишь одним примером. В принципе, любое цифровое устройство кодирования и/или декодирования видео может выполнять методы для временного предсказания параметров адаптивного контурного фильтра, которые могут снижать потребление памяти. Устройство 102 источника и устройство 116 места назначения являются лишь примерами таких кодирующих устройств, в которых устройство 102 источника генерирует кодированные данные видео для передачи на устройство 116 места назначения. Настоящее раскрытие ссылается на “кодирующее” устройство как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют собой примеры кодирующих устройств, в частности, кодер видео и декодер видео, соответственно. В некоторых примерах, устройство 102 источника и устройство 116 места назначения могут работать по существу симметрично, так что каждое из устройства 102 источника и устройства 116 места назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать однонаправленную или двунаправленную передачу видео между устройством 102 источника и устройством 116 места назначения, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии.
[0040] В общем случае, источник 104 видео представляет источник данных видео (т.е. необработанных, некодированных данных видео) и предоставляет последовательность картинок (также упоминаемых как “кадры”) данных видео на кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства 102 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс подачи видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию живого видео, архивного видео и генерируемого компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочивать картинки из принятого порядка (иногда называемого “порядком отображения”) в порядок кодирования для кодирования. Кодер 200 видео может генерировать битовый поток, включающий кодированные данные видео. Устройство 102 источника может затем выводить кодированные данные видео через выходной интерфейс 108 на компьютерно-читаемый носитель 110 для приема и/или извлечения данных, например, входным интерфейсом 122 устройства 116 места назначения.
[0041] Память 106 устройства 102 источника и память 120 устройства 116 места назначения представляют собой память общего назначения. В некоторых примерах, памяти 106 и 120 могут хранить необработанные данные видео, например необработанное видео из источника 104 видео и необработанные декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106 и 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео соответственно. Хотя показано отдельно от кодера 200 видео и декодера 300 видео, следует понимать, что кодер 200 видео и декодер 300 видео также могут включать в себя внутреннюю память для функционально сходных или эквивалентных целей. Кроме того, памяти 106 и 120 могут хранить закодированные данные видео, например, выведенные с кодера 200 видео и введенные в декодер 300 видео. В некоторых примерах, части памятей 106 и 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.
[0042] Компьютерно-читаемый носитель 110 может представлять собой любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства 102 источника к устройству 116 места назначения. В одном примере, компьютерно-читаемый носитель 110 представляет коммуникационную среду, позволяющую устройству 102 источника передавать закодированные данные видео непосредственно на устройство 116 места назначения в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, а входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может содержать любую беспроводную или проводную коммуникационную среду, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения связи от устройства 102 источника к устройству 116 места назначения.
[0043] В некоторых примерах, устройство 102 источника может выводить закодированные данные из выходного интерфейса 108 в устройство 112 хранения. Аналогично, устройство 116 места назначения может получать доступ к закодированным данным из устройства 112 хранения через входной интерфейс 122. Устройство 112 хранения может включать в себя любое из множества распределенных или локально доступных носителей хранения данных, таких как накопитель на жестком диске, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители хранения для хранения закодированных данных видео.
[0044] В некоторых примерах, устройство 102 источника может выводить кодированные данные видео на файловый сервер 114 или другое промежуточное устройство хранения, которое может хранить закодированное видео, сгенерированное устройством 102 источника. Устройство 116 места назначения может получать доступ к сохраненным данным видео с файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 116 места назначения. Файловый сервер 114 может представлять собой веб-сервер (например, для веб-сайта), сервер протокола передачи файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство 116 места назначения может получать доступ к закодированным данным видео с файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или комбинацию обоих, которая подходит для доступа к закодированным данным видео, хранящимся на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть сконфигурированы для работы в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их комбинацией.
[0045] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, работающие в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 содержат беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE-Advanced (Расширенное LTE), 5G или тому подобное. В некоторых примерах, если выходной интерфейс 108 содержит беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBeeТМ), стандарт BluetoothTM или тому подобное. В некоторых примерах, устройство 102 источника и/или устройство 116 места назначения могут включать в себя соответствующие однокристальные (SoC) устройства. Например, устройство 102 источника может включать в себя SoC-устройство для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство 116 места назначения может включать в себя SoC-устройство для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.
[0046] Методы настоящего раскрытия могут быть применены к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как эфирные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или других приложений.
[0047] Входной интерфейс 122 устройства 116 места назначения принимает закодированный битовый поток видео со компьютерно-читаемого носителя 110 (например, устройства 112 хранения, файлового сервера 114 или тому подобного). Закодированный битовый поток видео компьютерно-читаемого носителя 110 может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку блоков видео или других кодированных единиц (например, вырезок, картинок, групп картинок, последовательностей или тому подобное). Устройство 118 отображения отображает пользователю декодированные картинки декодированных данных видео. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0048] Хотя не показано на фиг. 3, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть интегрированы с кодером аудио и/или декодером аудио и могут включать соответствующие модули мультиплексирования-демультиплексирования (MUX-DEMUX) или другие аппаратные средства и/или программное обеспечение для обработки мультиплексированных потоков, включающих в себя как аудио, так и видео, в общем потоке данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0049] Как кодер 200 видео, так и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их комбинаций. Когда методы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, не-временном компьютерно-читаемом носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методов настоящего раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0050] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. В качестве альтернативы, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методы настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.
[0051] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео может кодировать компоненты в себя яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, а декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).
[0052] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.
[0053] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, непересекающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.
[0054] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть сконфигурированы для работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT в JEM исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT в JEM может включать в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).
[0055] В структуре разбиения MTT, блоки могут быть разделены с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или более типов разбиений троичного дерева (TT) (также называемого тернарным деревом (ТТ)). Разбиение троичного или тернарного дерева представляет собой разбиение, когда блок разделяется на три подблока. В некоторых примерах, разбиение троичного или тернарного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0056] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать одну структуру QTBT или МТТ для представления компонентов как яркости, так и цветности, в то время как в других примерах, кодер 200 видео и декодер 300 видео могут использовать две или более структур QTBT или МТТ, например, одну структуру QTBT или МТТ для компонента яркости и другую структуру QTBT или МТТ для обоих компонентов цветности (или две структуры QTBT или МТТ для соответствующих компонентов цветности).
[0057] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы для использования разбиения квадродерева в HEVC, разбиения QTBT в соответствии с JEM или других структур разбиения. В целях пояснения, описание методов настоящего раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что методы настоящего раскрытия также могут быть применены к устройствам кодирования видео, сконфигурированным для использования разбиения квадродерева или других типов разбиения.
[0058] Блоки (например, CTU или CU) могут быть сгруппированы в картинке различными способами. В качестве одного примера, “кирпичик” (brick) может относиться к прямоугольной области строк CTU внутри конкретного мозаичного элемента в картинке. Мозаичный элемент (tile, фрагмент) может быть прямоугольной областью CTU в конкретном столбце мозаичных элементов и конкретной строке мозаичных элементов в картинке. Столбец мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, равную высоте картинки, и ширину, заданную синтаксическими элементами (например, как в наборе параметров картинки). Строка мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, заданную синтаксическими элементами (например, как в наборе параметров картинки), и ширину, равную ширине картинки.
[0059] В некоторых примерах, мозаичный элемент может быть разделен на несколько кирпичиков, каждый из которых может включать в себя одну или более строк CTU в мозаичном элементе. Мозаичный элемент, не разделенный на несколько кирпичиков, также может называться кирпичиком. Однако кирпичик, который является истинным подмножеством мозаичного элемента, не может называться мозаичным элементом.
[0060] Кирпичики на картинке также могут быть расположены в вырезке. Вырезка может быть целым числом кирпичиков картинки, которые могут содержаться исключительно в одной единице уровня сетевой абстракции (NAL). В некоторых примерах, вырезка включает в себя либо количество полных мозаичных элементов, либо только последовательную последовательность полных кирпичиков одного мозаичного элемента.
[0061] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео), в терминах вертикального и горизонтального размеров, например, 16×16 выборок или 16 на 16 выборок. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N является неотрицательным целочисленным значением. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном. Например, CU может содержать N×M выборок, где M не обязательно равно N.
[0062] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.
[0063] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной картинки, в то время как интра-предсказание обычно относится к предсказанию СU из ранее кодированных данных той же самой картинки. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с СU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (МSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.
[0064] Некоторые примеры JEM и VVC также обеспечивает режим аффинной компенсации движения, который может рассматриваться как режим интер-предсказания. В режиме аффинной компенсации движения, кодер 200 видео может определять два или более вектора движения, которые представляют непоступательное движение, такое как увеличение или уменьшение масштаба, вращение, движение в перспективе или другие типы нерегулярного движения.
[0065] Для выполнения интра-предсказания, кодер 200 видео может выбрать режим интра-предсказания для генерации блока предсказания. JEM обеспечивает шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем случае, кодер 200 видео выбирает режим интра-предсказания, который описывает соседние выборки для текущего блока (например, блока CU), из которых следует предсказывать выборки текущего блока. Такие выборки обычно могут находиться сверху, сверху и слева или слева от текущего блока в той же картинке, где и текущий блок, в предположении, что кодер 200 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).
[0066] Кодер 200 видео кодирует данные, представляющие режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима слияния. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для режима аффинной компенсации движения.
[0067] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.
[0068] Как отмечалось выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов преобразования. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию.
[0069] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предварительно определенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения преобразованного в последовательную форму вектора, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.
[0070] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу.
[0071] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе картинки и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке картинки, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.
[0072] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео, например, синтаксические элементы, описывающие разбиение картинки на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.
[0073] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения картинки на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.
[0074] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказание) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.
[0075] В соответствии с методами настоящего раскрытия, кодер 200 видео и декодер 300 видео могут быть сконфигурированы для хранения параметров ALF в одном 1-D массиве (или буфере) размера N вместе со значениями идентификатора временного уровня (tId), как показано в таблице 1 ниже:
Таблица 1
[0076] В примере таблицы 1 каждый элемент памяти 1-D массива хранит (i) параметры ALF и (ii) ID временного уровня (tId), указывающий, из какого уровня оцениваются соответствующие параметры ALF. Информация временного уровня может быть сохранена, чтобы гарантировать, что параметр ALF, полученный из более высокого временного уровня (например, tId=4), не используется для кодирования/декодирования кадра/вырезки на более низком временном уровне (например, tId=3).
[0077] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы для применения любого из следующих методов, по отдельности или в любой комбинации, для загрузки, хранения и/или использования параметров ALF для временного предсказания:
1. Для использования во временном предсказании параметров ALF, массив может хранить параметры либо из B-, либо из P-вырезок.
2. В массиве, записи параметров ALF могут храниться в определенном порядке (например, следуя порядку декодирования). Когда все N записей использованы для хранения (т.е. когда массив заполнен), вновь полученные параметры можно сохранить путем удаления одной записи и затем добавления новых параметров в массив.
а. В качестве примера, это может быть выполнено способом FIFO (первым пришел - первым обслужен), где последняя запись в массиве (т.е. самый старый набор параметров) удаляется, когда массив заполнен, и новые параметры сохраняются в первом элементе массива.
b. В другом примере, параметры ALF заменяют определенные сохраненные параметры в буфере, имеющем тот же самый временной ID, например, определенные параметры могут быть самыми старыми параметрами в буфере или менее используемыми, или может применяться любое другое правило.
3. Неотрицательное значение индекса, называемое prevIdx, может сигнализироваться, чтобы идентифицировать, какой набор параметров ALF загружен/использован из буфера для кодирования/ декодирования.
а. Код переменной длины, такой как унарный код, может использоваться для сигнализации prevIdx. Общее доступное количество параметров для определенного временного Id может быть подсчитано в сохраненном буфере, и усеченная бинаризация может использоваться, чтобы сигнализировать prevIdx, имеющий общее доступное количество фильтров минус 1 в качестве максимального индекса. Однако усеченное кодирование может вносить рассогласование между кодером и декодером, например, когда некоторые картинки теряются при передаче.
b. prevIdx может принимать значения от 0 до N-1. В зависимости от типа иерархической структуры кадра, используемой для кодирования, максимальное значение prevIdx может быть меньше.
c. При кодировании вырезки/картинки, возможные кандидаты для временного предсказания могут быть определены путем прохождения по наборам, включенным в массив, и все или некоторые наборы параметров с равным или меньшим tId рассматриваются как эффективные кандидаты.
d. Сигнализация записи массива (определение параметров ALF, используемых для кодирования) может зависеть от ID временного уровня текущего кодируемого кадра. В частности, prevIdx может соответствовать другой записи в массиве в зависимости от ID временного уровня текущего кодируемого/декодируемого кадра.
i. В качестве примера, проиллюстрированного в таблице 2 ниже, prevIdx=1 может указывать на следующие две разные записи в массиве в зависимости от tId текущего кодируемого кадра:
1. prevIdx=1 соответствует 4-ой записи в массиве, хранящей Alf(P4, 1), при кодировании кадра с tId=1, поскольку это второй возможный вариант, разрешенный для кодирования, чтобы сохранить временную масштабируемость, где Alf(P4, 1) является первым кандидатом, сигнализируемым с помощью prevIdx=0.
2. prevIdx=1 соответствует 2-ой записи в массиве, хранящей Alf(P2, 2), при кодировании кадра с tId=2, поскольку это второй возможный вариант, разрешенный для кодирования, где Alf(P1, 1) является первым вариантом, соответствующим prevIdx=0.
Таблица 2
е. В случае потери кадра (например, из-за потери пакета при отправке битового потока видео по сети), декодер может выбрать не добавлять какую-либо запись в массив, он может ввести фиктивную (то есть предварительно сконфигурированную) запись, поэтому даже при потере картинки в буфер добавляется фиктивная запись. В любом случае, пока применяются перечисленные выше методы, временная масштабируемость сохраняется. Другими словами, когда кадр на более высоком уровне теряется (например, T3), кадры на более низких уровнях все еще могут декодироваться (например, T1 и T2).
f. В другом примере, картинки или вырезки с более низким временным Id могут нести информацию о параметрах ALF для более высоких временных ID, в этом случае, если картинка с более высоким временным ID потеряна, параметры могут быть получены из картинок с более низким временным ID. Эти параметры также могут включать в себя то, несет ли картинка с более высоким временным ID такие параметры ALF, что эти параметры или фиктивные (предварительно сконфигурированные) параметры могут быть добавлены в буфер.
g. В другом примере, способы управления буфером картинок декодера (DPB) могут быть применены к временной обработке параметров ALF, поскольку управление DPB включает в себя обработку потерянных картинок.
4. В зависимости от важности параметров ALF (например, важность может быть измерена на основе того, как часто они используются, или на основе информации об их временном уровне), некоторые из этих важных параметров ALF могут фиксироваться и сохраняться в буфере до тех пор, когда будет кодироваться следующая I-вырезка. Такую метрику важности можно использовать для ранжирования и переупорядочивания записей, чтобы уменьшить непроизводительные издержки сигнализации для сигнализации prevIdx (например, унарное кодирование).
5. Дополнительные решения или ограничения на загрузку и сохранение параметров ALF (управление буфером) могут приниматься на основе любой другой дополнительной информации (в дополнение к ID временного уровня) или меры важности, которая также может быть сохранена с параметрами ALF.
6. Отдельные буферы могут использоваться для раздельного кодирования каналов яркости и цветности. В результате каждый отдельный буфер может иметь различную сигнализацию prevIdx для определения параметров ALF, используемых отдельно для каналов яркости и цветности.
[0078] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство 102 источника может транспортировать битовый поток к устройству 116 места назначения по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством 116 места назначения.
[0079] Фиг. 4A и 4B представляют собой концептуальную диаграмму, иллюстрирующую примерную структуру 130 квадродерева/ двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU) 132. Сплошные линии представляют разбиение квадродерева, а пунктирные линии указывают разбиение двоичного дерева. В каждом разделенном (т.е. нелистовом) узле двоичного дерева сигнализируется один флаг для указания, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разделение, а 1 указывает вертикальное разделение в данном примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и вертикали на 4 подблока одинакового размера. Соответственно, кодер 200 видео может кодировать, а декодер 300 видео может декодировать синтаксические элементы (такие как информация разделения) для уровня дерева области структуры QTBT 130 (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры QTBT 130 (т.е. пунктирные линии). Кодер 200 видео может кодировать, а декодер 300 видео может декодировать данные видео, такие как данные предсказания и преобразования, для CU, представленных конечными листовыми узлами структуры QTBT 130.
[0080] В общем, CTU 132 на фиг. 4B может ассоциироваться с параметрами, определяющими размеры блоков, соответствующих узлам структуры QTBT 130 на первом и втором уровнях. Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимально допустимый размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимально допустимый размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющий максимально допустимую глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимально допустимый размер листового узла двоичного дерева).
[0081] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может разбиваться в соответствии с разбиением квадродерева. То есть узлы первого уровня являются либо листовыми узлами (не имеющими дочерних узлов), либо имеют четыре дочерних узла. Пример структуры QTBT 130 представляет такие узлы, как включающие родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше, чем максимально допустимый размер корневого узла двоичного дерева (MaxBTSize), то узлы могут дополнительно разбиваться на соответствующие двоичные деревья. Разделение двоичного дерева одного узла может повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимально допустимого размера листового узла двоичного дерева (MinBTSize) или максимально допустимой глубины двоичного дерева (MaxBTDepth). Пример структуры QTBT 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодирования (CU), которая используется для предсказания (например, предсказания внутри картинки или между картинками) и преобразования, без какого-либо дальнейшего разбиения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.
[0082] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующие 64×64 выборки цветности), MinQTSize устанавливается как 16×16, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и для высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала, чтобы сформировать листовые узлы квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделен на двоичное дерево, так как размер превышает MaxBTSize (т.е. 64×64, в данном примере). В противном случае, листовой узел квадродерева будет дополнительно разбиваться на двоичное дерево. Таким образом, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева, равную 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в данном примере), дальнейшее разделение не допускается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в данном примере), это означает, что дальнейшее горизонтальное разделение не допускается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает, что дальнейшее вертикальное разделение для этого узла двоичного дерева не допускается. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются в соответствии с предсказанием и преобразованием без дальнейшего разбиения.
[0083] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный кодер 200 видео, который может выполнять методы настоящего раскрытия. Фиг. 5 предоставляется с целью объяснения и не должна рассматриваться как ограничивающая способы, как широко проиллюстрировано и описано в настоящем раскрытии. В целях объяснения, настоящее раскрытие описывает кодер 200 видео в контексте стандартов кодирования видео, таких как стандарт кодирования видео HEVC и стандарт кодирования видео H.266, находящийся в стадии разработки. Однако методы настоящего раскрытия не ограничиваются этими стандартами кодирования видео и применимы в общем к кодированию и декодированию видео.
[0084] В примере на фиг. 5, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер декодированных картинок (DPB) 218 и модуль 220 энтропийного кодирования. Любое или все из памяти 230 данных видео, модуля 202 выбора режима, модуля 204 генерации остатка, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, кодер 200 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.
[0085] Память 230 данных видео может сохранять данные видео, которые должны быть кодированы компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, сохраняемые в памяти 230 данных видео, например, от источника 104 видео (фиг. 3). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео с помощью кодера 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть на чипе (однокристальной) с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.
[0086] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью, внутренней для кодера 200 видео, если только специально не описана как таковая, или памятью, внешней для кодера 200 видео, если только специально не описана как таковая. Скорее, ссылку на память 230 данных видео следует понимать как опорную память, которая сохраняет данные видео, которые кодер 200 видео принимает для кодирования (например, данные видео для текущего блока, который должен быть кодирован). Память 106 на фиг. 3 может также обеспечивать временное хранение выходных данных от различных модулей кодера 200 видео.
[0087] Различные модули на фиг. 5 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинация. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0088] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 3) может хранить объектный код программного обеспечения, который кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.
[0089] Память 230 данных видео сконфигурирована для сохранения принятых данных видео. Кодер 200 видео может извлекать картинку данных видео из памяти 230 данных видео и передавать данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными данными видео, которые должны быть закодированы.
[0090] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 интра-предсказания. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутриблочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.
[0091] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования комбинаций параметров кодирования и результирующих значений скорости-искажения для таких комбинаций. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать комбинацию параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых комбинаций.
[0092] Кодер 200 видео может разбивать картинку, извлеченную из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU картинки в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.
[0093] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения, и модулем 226 интра-предсказания), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных картинках (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.
[0094] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют положения опорных блоков в опорных картинках относительно положения текущего блока в текущей картинке. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и комбинировать извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.
[0095] В качестве другого примера, для интра-предсказания или кодирования интра-предсказания, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 интра-предсказания может, обычно, математически комбинировать значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для формирования блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.
[0096] Модуль 202 выбора режима предоставляет блок предсказания в модуль 204 генерации остатка. Модуль 204 генерации остатка получает необработанную, некодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет от выборки к выборке разности между текущим блоком и блоком предсказания. Полученные разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка может также определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть сформирован с использованием одной или нескольких схем вычитания, которые выполняют двоичное вычитание.
[0097] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.
[0098] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодирования яркости и соответствующими блоками кодирования цветности. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.
[0099] Для других методов кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методами кодирования, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодирование в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования.
[0100] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.
[0101] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для формирования блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.
[0102] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем настройки значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.
[0103] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.
[0104] Модуль 216 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев CU. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах. В соответствии с методами настоящего раскрытия, модуль 216 фильтрации может поддерживать массив, включающий параметры адаптивного контурного фильтра (ALF) и ассоциированные значения идентификатора (ID) временного уровня. Массив может иметь предварительно определенный размер N элементов, где N является неотрицательным целочисленным значением. Массив может соответствовать примеру Таблицы 1, как описано выше.
[0105] Таким образом, при выполнении фильтрации декодированных блоков данных видео текущей картинки текущего временного уровня, модуль 216 фильтрации может использовать параметры ALF из массива, которые принадлежат тому же или более низкому временному уровню. В частности, модуль 216 фильтрации может сравнивать ID временного уровня элементов массива с текущим значением ID временного уровня для текущей картинки и выбирать только те параметры ALF, которые имеют ID временного уровня, которые меньше или равны текущему значению ID временного уровня, которое должно использоваться для фильтрации декодированных блоков текущей картинки.
[0106] Модуль 216 фильтрации может сохранять параметры ALF в массиве в порядке декодирования или другом предварительно определенном порядке. Таким образом, модуль 216 фильтрации может заменять существующие параметры ALF в массиве способом “первым пришел - первым обслужен” (FIFO) или приоритизировать удаление из массива параметров ALF на конкретных временных уровнях.
[0107] Модуль 216 фильтрации может определять некоторые параметры ALF в массиве, чтобы использоваться для текущей картинки, и сигнализировать значения, представляющие, какие из параметров ALF используются при фильтрации текущей картинки. Модуль 216 фильтрации может предоставлять эти значения в модуль 220 энтропийного кодирования, который может кодировать значения с использованием унарного кода.
[0108] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в случаях, где операции модуля 216 фильтрации не требуются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где требуются операции модуля 216 фильтрации, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать из DPB 218 опорную картинку, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодируемых картинок. Кроме того, модуль интра-предсказания 226 может использовать восстановленные блоки в DPB 218 текущей картинки для интра-предсказания других блоков в текущей картинке.
[0109] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информацию движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования от переменной к переменной (V2V) длине, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно кодируемыми.
[0110] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или картинки. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.
[0111] Вышеизложенные операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодирования яркости и/или блоков кодирования цветности. Как описано выше, в некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности PU.
[0112] В некоторых примерах, операции, выполняемые в отношении блока кодирования яркости, не требуется повторять для блоков кодирования цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной картинки для блока кодирования яркости не требуется повторять для идентификации MV и опорной картинки для блоков цветности. Скорее, MV для блока кодирования яркости может быть масштабирован для определения MV для блоков цветности, и опорная картинка может быть той же самой. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодирования яркости и блоков кодирования цветности.
[0113] Кодер 200 видео представляет собой пример устройства, сконфигурированного для кодирования данных видео, включающего в себя память, сконфигурированную, чтобы сохранять данные видео, и один или более блоков обработки, реализованных в схемах и сконфигурированных, чтобы сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, включая сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодировать один или более блоков данных видео; и фильтровать один или более блоков с использованием параметров ALF одномерного массива.
[0114] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методы настоящего раскрытия. Фиг. 6 обеспечена в целях пояснения и не ограничивает методы, широко иллюстрируемые и описанные в настоящем раскрытии. Для целей пояснения, настоящее раскрытие описывает декодер 300 видео в соответствии с методами JEM, VVC и HEVC. Однако методы настоящего раскрытия могут выполняться устройствами кодирования видео, которые сконфигурированы в соответствии с другими стандартами кодирования видео.
[0115] В примере на фиг. 6, декодер 300 видео включает в себя память 320 буфера кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер декодированных картинок (DPB) 314. Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 интра-предсказания. Модуль 304 обработки предсказания может включать в себя модули суммирования для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутриблочного копирования (который может образовывать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше или другие функциональные компоненты.
[0116] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из компьютерно-читаемого носителя 110 (фиг. 3). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной картинки, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные картинки, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть на чипе (однокристальной) с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.
[0117] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 3). То есть память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемами обработки декодера 300 видео.
[0118] Различные модули, показанные на фиг. 6, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинации. Подобно фиг. 5, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0119] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, однокристальная память (на чипе) или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.
[0120] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.
[0121] В общем, декодер 300 видео восстанавливает картинку на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”).
[0122] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.
[0123] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0124] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорную картинку в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 5).
[0125] В качестве другого примера, если синтаксические элементы информации предсказания указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации предсказания. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, который по существу аналогичен описанному в отношении модуля 226 интра-предсказания (фиг. 5). Модуль 318 интра-предсказания может извлекать данные из соседних выборок для текущего блока из DPB 314.
[0126] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока предсказания и остаточного блока. Например, модуль 310 восстановления может добавлять выборки остаточного блока к соответствующим выборкам блока предсказания для восстановления текущего блока.
[0127] Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах. В соответствии с методами настоящего раскрытия модуль 312 фильтрации может поддерживать массив, включающий параметры адаптивного контурного фильтра (ALF) и ассоциированные значения идентификатора (ID) временного уровня. Массив может иметь предварительно определенный размер N элементов, где N является неотрицательным целочисленным значением. Массив может соответствовать примеру таблицы 1, как описано выше.
[0128] Таким образом, при выполнении фильтрации декодированных блоков данных видео текущей картинки текущего временного уровня, модуль 312 фильтра может использовать параметры ALF из массива, которые относятся к тому же или более низкому временному уровню. В частности, модуль 312 фильтрации может сравнивать идентификаторы временного уровня элементов массива с текущим значением ID временного уровня для текущей картинки и выбирать только те параметры ALF, которые имеют ID временного уровня, которые меньше или равны текущему значению ID временного уровня, которое должно использоваться для фильтрации декодированных блоков текущей картинки.
[0129] Модуль 312 фильтрации может сохранять параметры ALF в массиве в порядке декодирования или другом предварительно определенном порядке. Таким образом, модуль 312 фильтрации может заменять существующие параметры ALF в массиве способом “первым пришел - первым обслужен” (FIFO) или приоритизировать удаление из массива параметров ALF на конкретных временных уровнях.
[0130] В некоторых примерах, модуль 302 энтропийного декодирования может энтропийно декодировать значения (например, унарные кодированные значения), представляющие, какие параметры ALF должны использоваться при фильтрации текущей картинки. Модуль 302 энтропийного декодирования может предоставлять эти значения в модуль 312 фильтрации, который может определять параметры ALF из значений в массиве, чтобы использоваться для текущей картинки.
[0131] Декодер 300 видео может сохранить отфильтрованные восстановленные блоки в DPB 314. Как обсуждалось выше, DPB 314 может предоставлять опорную информацию, такую как выборки текущей картинки для интра-предсказания и ранее декодированных картинок для последующей компенсации движения, в модуль 304 обработки предсказания. Кроме того, декодер 300 видео может выводить декодированные картинки из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 3.
[0132] Таким образом, декодер 300 видео представляет собой пример устройства декодирования видео, включающего в себя память, сконфигурированную, чтобы сохранять данные видео, и один или несколько блоков обработки, реализованных в схеме и сконфигурированных, чтобы сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, включая сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодировать один или более блоков данных видео; и фильтровать один или более блоков с использованием параметров ALF одномерного массива.
[0133] Фиг. 7 является блок-схемой, иллюстрирующей примерный способ декодирования и фильтрации данных видео согласно методам настоящего раскрытия. Способ согласно фиг. 7 поясняется в отношении декодера 300 видео на фиг. 6 для целей пояснения. Однако следует понимать, что другие устройства кодирования видео могут быть сконфигурированы для выполнения этого или подобного способа. Например, кодер 200 видео может выполнять аналогичный способ, включая кодирование блоков данных видео перед декодированием блоков данных видео, где декодирование и фильтрация выполняются модулем 224 компенсации движения, модулем 226 интра-предсказания, модулем 210 обратного квантования, модулем 212 обработки обратного преобразования, модулем 214 восстановления и модулем 216 фильтрации кодера 200 видео.
[0134] Первоначально, декодер 300 видео может создать экземпляр массива N элементов (350), где N является неотрицательным целочисленным значением. Декодер 300 видео может создать экземпляр массива, например, в памяти, включающей DPB 314, памяти модуля 312 фильтрации или другой памяти в декодере 300 видео. В общем, ссылки на “память” следует понимать как включающие любое или все из этих устройств памяти или устройств памяти внешних для декодера 300 видео, например память 120 на фиг. 3.
[0135] Декодер 300 видео может сохранять параметры адаптивного контурного фильтра (ALF) в элементах массива (352). В частности, как показано в таблице 1 выше, декодер 300 видео может сохранять актуальные параметры ALF в элементах (то есть ячейках) массива, вместе с сохранением соответствующих значений идентификатора (ID) временного уровня с параметрами ALF (354). То есть, значения ID временного уровня указывают значения ID временного уровня картинок, из которых оцениваются или должны оцениваться параметры ALF.
[0136] Декодер 300 видео может затем декодировать один или более блоков текущей картинки в текущем временном уровне (356). Например, декодер 300 видео может предсказывать блоки с использованием интер-предсказания, выполняемого модулем 316 компенсации движения, и/или интра-предсказания, выполняемого модулем 318 интра-предсказания, формируя блоки предсказания. Декодер 300 видео может также выполнять обратное квантование и обратное преобразование квантованных коэффициентов преобразования с использованием модуля 306 обратного квантования и модуля 308 обработки обратного преобразования, формируя остаточные блоки, включающие в себя остаточные выборки. Модуль 310 восстановления может затем объединить остаточные блоки с соответствующими блоками предсказания на основе от выборки к выборке, чтобы сформировать декодированные блоки для текущей картинки.
[0137] Модуль 312 фильтрации может затем выполнять адаптивную контурную фильтрацию декодированных блоков текущей картинки. В частности, согласно методам настоящего раскрытия, модуль 312 фильтрации может определять текущий ID временного уровня для текущей картинки и определять параметры ALF массива, имеющего ID временного уровня, меньшие или равные ID текущего временного уровня, для процесса фильтрации, выполняемого на декодированных блоках. Затем модуль 312 фильтрации может фильтровать декодированные блоки, используя определенные параметры ALF (360). Таким образом, декодер 300 видео может избегать применения параметров ALF картинок, имеющих более высокий ID временного уровня, чем текущий ID временного уровня, к декодированным блокам текущей картинки.
[0138] Затем декодер 300 видео может сохранять отфильтрованные декодированные блоки в DPB 314 (362). Декодер 300 видео может, в конечном счете, вывести декодированную картинку, включающую отфильтрованные, декодированные блоки, а также использовать декодированную картинку в качестве опорной картинки для картинки, подлежащий декодированию после этого. Декодер 300 видео может обновлять параметры ALF в массиве с использованием декодированных данных видео, например, декодированных параметров битового потока и/или данных, определенных из самой декодированной картинки.
[0139] В некоторых случаях, добавление параметров ALF в массив может превысить размер N буфера. В таких случаях, декодер 300 видео может удалить существующие параметры из буфера, например, способом “первым пришел - первым обслужен” (FIFO). Таким образом, декодер 300 видео может удалить самые старые параметры ALF из массива и добавить самые новые параметры ALF вместо удаленных самых старых параметров ALF.
[0140] Таким образом, способ согласно фиг. 7 представляет собой пример способа декодирования данных видео, включающего в себя сохранение наборов параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение наборов параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID) временного уровня, указывающего временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодирование одного или более блоков данных видео; и фильтрацию одного или более блоков с использованием параметров ALF одномерного массива.
[0141] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методов могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методов). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.
[0142] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой их комбинации. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или кода на компьютерно-читаемом носителе и исполняться аппаратным модулем обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители, которые соответствуют осязаемому носителю, такому как носитель хранения данных, или коммуникационной среде, включающей в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, компьютерно-читаемые носители обычно могут соответствовать (1) осязаемым компьютерно-читаемым запоминающим носителям, которые являются не-временными, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями хранения данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0143] В качестве примера, а не ограничения, такие компьютерно-читаемые запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как компьютерно-читаемый носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые запоминающие носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на не-временные, осязаемые носители информации. Магнитный диск (disk) и оптический диск (disc), как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем компьютерно-читаемых носителей.
[0144] Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термины “процессор” и “схема обработки”, используемые здесь, могут относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в комбинированный кодек. Кроме того, методы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0145] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методов, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0146] Были описаны различные примеры. Эти и другие примеры входят в объем следующей формулы изобретения.
Изобретение относится к декодированию видео. Технический результат заключается в снижении использования памяти для временного предсказания в адаптивной контурной фильтрации (ALF) при незначительных потерях или полном отсутствии потерь в эффективности сжатия. Такой результат достигается за счёт того, что устройство для декодирования данных видео включает в себя память, сконфигурированную, чтобы сохранять данные видео, и один или более процессоров, реализованных в схемах и сконфигурированных, чтобы сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве в памяти, причем одномерный массив имеет предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем один или более процессоров сконфигурированы, чтобы сохранять, в одном или более элементах памяти массива, как соответствующие параметры ALF, так и значение идентификатора (ID) временного уровня, указывающее временной уровень, из которого должны оцениваться соответствующие параметры ALF; декодировать один или более блоков данных видео; и фильтровать один или более блоков с использованием параметров ALF одномерного массива. 4 н. и 26 з.п. ф-лы, 2 табл., 8 ил.
1. Способ декодирования данных видео, причем способ содержит:
сохранение наборов параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение наборов параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID), указывающего один или более наборов параметров, которые являются эффективными кандидатами для временного предсказания соответствующих параметров ALF, причем наборы параметров ALF задают коэффициенты ALF соответствующих фильтров ALF;
декодирование одного или более блоков данных видео, включающее в себя для по меньшей мере одного из блоков из одного или более блоков:
определение опорной картинки в буфере декодированных картинок, подлежащем использованию для декодирования по меньшей мере одного из блоков, причем опорная картинка является отдельной от каждого из одного или более наборов параметров и от одномерного массива, имеющего предварительно определенный размер N элементов памяти;
формирование блока предсказания для по меньшей мере одного из блоков из опорной картинки; и
комбинирование остаточного блока для по меньшей мере одного из блоков с блоком предсказания для формирования декодированного блока для по меньшей мере одного из блоков; и
фильтрацию упомянутого одного или более блоков, включающих в себя упомянутый по меньшей мере один из блоков, с использованием параметров ALF одномерного массива.
2. Способ по п. 1, причем сохранение наборов параметров ALF содержит сохранение параметров ALF из по меньшей мере одной из B-вырезки или P-вырезки.
3. Способ по п. 1, причем сохранение наборов параметров ALF содержит сохранение наборов параметров ALF в определенном порядке.
4. Способ по п. 3, причем упомянутый определенный порядок содержит порядок декодирования.
5. Способ по п. 3, причем, когда принят новый набор параметров ALF и все из N элементов памяти использованы, способ дополнительно содержит:
удаление одной записи из одного из элементов памяти; и
сохранение нового набора параметров ALF в одном из элементов памяти.
6. Способ по п. 5, причем удаление одной записи содержит выбор одного из элементов памяти в соответствии с порядком “первым пришел - первым обслужен” (FIFO).
7. Способ по п. 5, причем удаление одной записи содержит выбор одного из элементов памяти так, что один из элементов памяти имеет значение ID, общее со значением ID нового набора параметров ALF.
8. Способ по п. 1, дополнительно содержащий сохранение предыдущей индексной переменной, имеющей значение, представляющее, какой из наборов параметров ALF должен использоваться для фильтрации.
9. Способ по п. 8, причем предыдущая индексная переменная имеет формат унарного кода.
10. Способ по п. 8, причем значение предыдущей индексной переменной находится в диапазоне от 0 до N-1.
11. Способ по п. 8, причем упомянутый один или более блоков включены в картинку, имеющую текущий ID, и при этом фильтрация содержит фильтрацию упомянутого одного или более блоков с использованием параметров ALF, включенных в массив, имеющих ID, равные или меньшие, чем текущий ID.
12. Способ по п. 8, дополнительно содержащий кодирование значения, представляющего запись массива в соответствии с ID текущей кодируемой картинки.
13. Способ по п. 1, дополнительно содержащий:
обнаружение, что картинка была потеряна из битового потока, включающего в себя данные видео; и
добавление предварительно сконфигурированного набора параметров ALF для картинки, которая была потеряна.
14. Способ по п. 1, в котором первая вырезка данных видео включает в себя один или более блоков, причем способ дополнительно содержит предотвращение удаления одного или более из сохраненных наборов параметров ALF из одномерного массива до тех пор, пока не будет декодирована вырезка с интра-предсказанием (I-вырезка) данных видео, последующая относительно первой картинки в порядке декодирования.
15. Способ по п. 1, дополнительно содержащий кодирование упомянутого одного или более блоков перед декодированием упомянутого одного или более блоков.
16. Устройство для декодирования данных видео, причем устройство содержит:
память, сконфигурированную, чтобы сохранять данные видео; и
один или более процессоров, реализованных в схемах и сконфигурированных, чтобы:
сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве в памяти, причем одномерный массив имеет предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем один или более процессоров сконфигурированы, чтобы сохранять, в одном или более элементах памяти массива, как соответствующие параметры ALF, так и значение идентификатора (ID), указывающее один или более наборов параметров, которые являются эффективными кандидатами для временного предсказания соответствующих параметров ALF, причем наборы параметров ALF задают коэффициенты ALF соответствующих фильтров ALF;
декодировать один или более блоков данных видео, причем, чтобы декодировать по меньшей мере один из блоков из одного или более блоков, один или более процессоров сконфигурированы, чтобы:
определять опорную картинку в буфере декодированных картинок, подлежащем использованию для декодирования по меньшей мере одного из блоков, причем опорная картинка является отдельной от каждого из одного или более наборов параметров и от одномерного массива, имеющего предварительно определенный размер N элементов памяти;
формировать блок предсказания для по меньшей мере одного из блоков из опорной картинки; и
комбинировать остаточный блок для по меньшей мере одного из блоков с блоком предсказания для формирования декодированного блока для по меньшей мере одного из блоков; и
фильтровать упомянутый один или более блоков с использованием параметров ALF одномерного массива.
17. Устройство по п. 16, причем один или более процессоров сконфигурированы, чтобы сохранять наборы параметров ALF в порядке декодирования.
18. Устройство по п. 17, причем, когда принят новый набор параметров ALF и все из N элементов памяти использованы, один или более процессоров сконфигурированы, чтобы:
выбирать один из элементов памяти в соответствии с порядком “первым пришел - первым обслужен” (FIFO);
удалять выбранный один из элементов памяти; и
сохранять новый набор параметров ALF в выбранном одном из элементов памяти.
19. Устройство по п. 16, причем один или более процессоров сконфигурированы, чтобы поддерживать предыдущую индексную переменную, имеющую значение, представляющее, какой из наборов параметров ALF должен использоваться для фильтрации.
20. Устройство по п. 19, причем упомянутый один или более блоков включены в картинку, имеющую текущий ID, и при этом один или более процессоров сконфигурированы, чтобы фильтровать упомянутый один или более блоков с использованием параметров ALF, включенных в массив, имеющих ID, равные или меньшие, чем текущий ID.
21. Устройство по п. 19, причем один или более процессоров дополнительно сконфигурированы, чтобы кодировать значение, представляющее запись массива, в соответствии с ID текущей кодируемой картинки.
22. Устройство по п. 16, причем один или более процессоров дополнительно сконфигурированы, чтобы кодировать упомянутый один или более блоков перед декодированием упомянутого одного или более блоков.
23. Устройство по п. 16, дополнительно содержащее дисплей, сконфигурированный, чтобы отображать данные видео.
24. Устройство по п. 16, причем устройство содержит одно или более из камеры, компьютера, мобильного устройства, устройства вещательного приемника или телевизионной приставки.
25. Некратковременный компьютерно-читаемый запоминающий носитель, содержащий сохраненные на нем инструкции, которые, при исполнении, предписывают процессору:
сохранять наборы параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение наборов параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID), указывающего один или более наборов параметров, которые являются эффективными кандидатами для временного предсказания соответствующих параметров ALF, причем наборы параметров ALF задают коэффициенты ALF соответствующих фильтров ALF;
декодировать один или более блоков данных видео, причем инструкции, которые предписывают процессору декодировать один или более блоков включают в себя инструкции, которые предписывают процессору декодировать по меньшей мере один из одного или более блоков, включающие в себя инструкции, которые предписывают процессору:
определять опорную картинку в буфере декодированных картинок, подлежащем использованию для декодирования по меньшей мере одного из блоков, причем опорная картинка является отдельной от каждого из одного или более наборов параметров и от одномерного массива, имеющего предварительно определенный размер N элементов памяти;
формировать блок предсказания для по меньшей мере одного из блоков из опорной картинки; и
комбинировать остаточный блок для по меньшей мере одного из блоков с блоком предсказания для формирования декодированного блока для по меньшей мере одного из блоков; и
фильтровать упомянутый один или более блоков с использованием параметров ALF одномерного массива.
26. Компьютерно-читаемый запоминающий носитель по п. 25, дополнительно содержащий инструкции, которые предписывают процессору сохранять наборы параметров ALF в порядке декодирования.
27. Компьютерно-читаемый запоминающий носитель по п. 25, дополнительно содержащий инструкции, которые предписывают процессору поддерживать предыдущую индексную переменную, имеющую значение, представляющее, какой из наборов параметров ALF должен использоваться для фильтрации.
28. Компьютерно-читаемый запоминающий носитель по п. 25, дополнительно содержащий инструкции, которые предписывают процессору кодировать упомянутый один или более блоков перед декодированием упомянутого одного или более блоков.
29. Устройство для декодирования данных видео, причем устройство содержит:
средство для сохранения наборов параметров адаптивного контурного фильтра (ALF) в одномерном массиве, имеющем предварительно определенный размер N элементов памяти, где N является положительным целочисленным значением, причем сохранение набора параметров ALF содержит сохранение, в одном или более элементах памяти массива, как соответствующих параметров ALF, так и значения идентификатора (ID), указывающего один или более наборов параметров, которые являются эффективными кандидатами для временного предсказания соответствующих параметров ALF, причем наборы параметров ALF задают коэффициенты ALF соответствующих фильтров ALF;
средство для декодирования одного или более блоков данных видео, включающее в себя средство для декодирования по меньшей мере одного блока из одного или более блоков, причем средство для декодирования по меньшей мере одного блока включает в себя:
средство для определения опорной картинки в буфере декодированных картинок, подлежащем использованию для декодирования по меньшей мере одного из блоков, причем опорная картинка является отдельной от каждого из одного или более наборов параметров и от одномерного массива, имеющего предварительно определенный размер N элементов памяти;
средство для формирования блока предсказания для по меньшей мере одного из блоков из опорной картинки; и
средство для комбинирования остаточного блока для по меньшей мере одного из блоков с блоком предсказания для формирования декодированного блока для по меньшей мере одного из блоков; и
средство для фильтрации упомянутого одного или более блоков с использованием параметров ALF одномерного массива.
30. Устройство по п. 29, дополнительно содержащее средство для кодирования упомянутого одного или более блоков данных видео перед декодированием упомянутого одного или более блоков данных видео.
US 20180192050 A1, 05.07.2018 | |||
US 20150382018 A1, 31.12.2015 | |||
US 20110274158 A1, 10.11.2011 | |||
US 20130113880 A1, 09.05.2013 | |||
US 20140092978 A1, 03.04.2014 | |||
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОДАННЫХ | 2015 |
|
RU2653299C2 |
Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации | 2014 |
|
RU2639958C2 |
Авторы
Даты
2023-09-11—Публикация
2019-09-12—Подача