СПОСОБ СИГНАЛИЗАЦИИ ТИПА СМЕЩЕНИЯ И КОЭФФИЦИЕНТОВ ДЛЯ АДАПТИВНОГО СМЕЩЕНИЯ ВЫБОРОК
METHOD OF SIGNALLING OFFSET TYPE AND COEFFICIENTS FOR SAMPLE ADAPTIVE OFFSET

[0001] Данная заявка притязает на преимущество по Предварительной заявке на патент США № 61/484,624, поданной 10 мая 2011 года, и Предварительной заявке на патент США № 61/503,454, поданной 30 июня 2011 года, которые настоящим полностью включаются в этот документ по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие изобретения относится к кодированию видео, а конкретнее к методикам для выполнения сигнализации и кодирования адаптивного смещения выборок в процессе кодирования видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут встраиваться в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, видеоигровые устройства, игровые приставки, сотовые или спутниковые радиотелефоны, устройства для видеоконференцсвязи и т. п. Цифровые видеоустройства реализуют методики сжатия видео, например описанные в стандартах, заданных MPEG-2, MPEG-4, H.263 ITU-T, H.264 ITU-T/MPEG-4, часть 10, Улучшенное кодирование видео (AVC), стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке, и расширениях таких стандартов, чтобы эффективнее передавать, принимать и хранить цифровую видеоинформацию.
[0004] Методики сжатия видео включают в себя пространственное предсказание и/или временное предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео видеокадр или секцию можно разделить на блоки. Каждый блок можно разделить еще дальше. Блоки в кадре или секции с внутренним кодированием (I) кодируются с использованием пространственного предсказания относительно эталонных выборок в соседних блоках в одном и том же кадре или секции. Блоки в кадре или секции с внешним кодированием (P или B) могут использовать пространственное предсказание относительно эталонных выборок в соседних блоках в одном и том же кадре или секции или временное предсказание относительно эталонных выборок в других эталонных кадрах. Пространственное или временное предсказание приводит к блоку с предсказанием для блока, который подлежит кодированию. Остаточные данные представляют собой разности пикселей между исходным блоком, который подлежит кодированию, и блоком с предсказанием.
[0005] Блок с внешним кодированием кодируется в соответствии с вектором движения, который указывает на блок эталонных выборок, образующих блок с предсказанием, и остаточными данными, указывающими разность между кодированным блоком и блоком с предсказанием. Блок с внутренним кодированием кодируется в соответствии с режимом внутреннего кодирования и остаточными данными. Для дополнительного сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально упорядоченные в двумерный массив, можно сканировать в конкретном порядке для создания одномерного вектора коэффициентов преобразования для энтропийного кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В общем, данное раскрытие изобретения описывает методики для кодирования видеоданных. Данное раскрытие изобретения описывает методики для выполнения сигнализации и кодирования адаптивного смещения выборок в процессе кодирования видео. Методики из раскрытия изобретения включают в себя процесс сигнализации на основе слияния и на основе предсказания для информации об адаптивном смещении выборок (то есть значений смещения и типа смещения).
[0007] В одном примере раскрытия изобретения предлагается способ кодирования значений адаптивного смещения выборок в процессе кодирования видео. Способ включает в себя определение информации о смещении для текущего раздела, сравнение информации о смещении текущего раздела с информацией о смещении одного или более соседних разделов, кодирование команды слияния в случае, когда информация о смещении одного из упомянутых одного или более соседних разделов является такой же, как информация о смещении текущего раздела, и кодирование одной из множества команд предсказания в случае, когда информация о смещении упомянутых одного или более соседних разделов не является такой же, как информация о смещении текущего раздела.
[0008] В другом примере раскрытия изобретения предлагается устройство, сконфигурированное для кодирования значений адаптивного смещения выборок в процессе кодирования видео. Устройство включает в себя видеокодер, сконфигурированный для сравнения информации о смещении текущего раздела с информацией о смещении одного или более соседних разделов, кодирования команды слияния в случае, когда информация о смещении одного из упомянутых одного или более соседних разделов является такой же, как информация о смещении текущего раздела, и кодирования одной из множества команд предсказания в случае, когда информация о смещении упомянутых одного или более соседних разделов не является такой же, как информация о смещении текущего раздела.
[0009] В другом примере раскрытия изобретения предлагается способ декодирования значений адаптивного смещения выборок в процессе декодирования видео. Способ включает в себя прием команды слияния или одной из множества команд предсказания для текущего раздела, копирование информации о смещении из соседнего раздела в текущий раздел в случае, когда принята команда слияния, и выполнение процесса предсказания смещения для текущего раздела в случае, когда принята одна из множества команд предсказания.
[0010] В другом примере раскрытия изобретения предлагается устройство, сконфигурированное для декодирования значений адаптивного смещения выборок в процессе декодирования видео. Устройство включает в себя видеодекодер, сконфигурированный для приема команды слияния или одной из множества команд предсказания для текущего раздела, копирования информации о смещении из соседнего раздела в текущий раздел в случае, когда принята команда слияния, и выполнения процесса предсказания смещения для текущего раздела в случае, когда принята одна из множества команд предсказания.
[0011] Подробности одного или более примеров излагаются в прилагаемых чертежах и описании ниже. Другие признаки, цели и преимущества станут очевидны из описания, чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1 - концептуальная схема, изображающая структуру квадродерева для единиц кодирования в процессе кодирования видео.
[0013] Фиг. 2 - концептуальная схема, показывающая четыре возможных типа смещения по границе.
[0014] Фиг. 3 - концептуальная схема, показывающая примерные типы смещения по диапазону.
[0015] Фиг. 4 - блок-схема, иллюстрирующая примерную систему кодирования и декодирования видео.
[0016] Фиг. 5 - блок-схема, иллюстрирующая примерный видеокодер.
[0017] Фиг. 6 - концептуальная схема, изображающая возможные соседние разделы, используемые при сигнализации информации о смещении.
[0018] Фиг. 7A - концептуальная схема примера кодирования синтаксиса адаптивного смещения в режиме слияния.
[0019] Фиг. 7B - концептуальная схема примера кодирования синтаксиса адаптивного смещения в первом режиме предсказания.
[0020] Фиг. 7C - концептуальная схема примера кодирования синтаксиса адаптивного смещения во втором режиме предсказания.
[0021] Фиг. 7D - концептуальная схема примера кодирования синтаксиса адаптивного смещения в третьем режиме предсказания.
[0022] Фиг. 8 - блок-схема, иллюстрирующая примерный видеодекодер.
[0023] Фиг. 9 - блок-схема алгоритма, иллюстрирующая примерный способ кодирования видео с использованием адаптивного смещения выборок.
[0024] Фиг. 10 - блок-схема алгоритма, иллюстрирующая примерный способ декодирования видео с использованием адаптивного смещения выборок.
ПОДРОБНОЕ ОПИСАНИЕ
[0025] В общем, данное раскрытие изобретения описывает методики для кодирования видеоданных. Данное раскрытие изобретения описывает методики для кодирования значений адаптивного смещения выборок в процессе кодирования видео.
[0026] Цифровые видеоустройства реализуют методики сжатия видео, чтобы эффективнее кодировать и декодировать цифровую видеоинформацию. Сжатие видео может применять методики пространственного (внутрикадрового) предсказания и/или временного (межкадрового) предсказания, чтобы уменьшить или устранить избыточность, присущую видеопоследовательностям.
[0027] Для кодирования видео в соответствии, в качестве одного примера, со стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке Объединенной команды по кодированию видео (JCT-VC), видеокадр можно разделить на единицы кодирования. Единица кодирования (CU) относится, как правило, к области изображения, которая служит в качестве основной единицы, к которой применяются различные инструменты кодирования для сжатия видео. CU обычно имеет яркостную компоненту, обозначенную как Y, и две компоненты цветности, обозначенные как U и V. В зависимости от формата дискретизации видео размер компонент U и V с точки зрения количества выборок может совпадать или отличаться от размера компоненты Y. CU обычно квадратная и может считаться аналогичной так называемому макроблоку, например, в других стандартах кодирования видео, таких как H.264 ITU-T. С целью иллюстрации в данной заявке будет описываться кодирование в соответствии с некоторыми предложенными в настоящее время особенностями развивающегося стандарта HEVC. Однако описанные в данном раскрытии изобретения методики могут быть полезны для других процессов кодирования видео, например процессов, заданных в соответствии с H.264 или другим стандартом, или частных процессов кодирования видео.
[0028] Работа по стандартизации HEVC основывается на модели устройства кодирования видео, называемой Экспериментальной моделью HEVC (HM). HM предполагает несколько возможностей устройств кодирования видео по сравнению с устройствами в соответствии, например, с H.264 ITU-T/AVC. Например, тогда как H.264 предоставляет девять режимов кодирования с внутренним предсказанием, HM предоставляет целых тридцать четыре режима кодирования с внутренним предсказанием.
[0029] В соответствии с HM CU может включать в себя одну или более единиц предсказания (PU) и/или одну или более единиц преобразования (TU). Синтаксические данные в потоке битов могут задавать наибольшую единицу кодирования (LCU), которая является наибольшей CU с точки зрения количества пикселей. В общем CU имеет сходную с макроблоком из H.264 цель за исключением того, что CU не имеет отличия в размере. Таким образом, CU можно разделить на суб-CU. В общем, ссылки на CU в данном раскрытии изобретения могут относиться к наибольшей единице кодирования изображения или к суб-CU в LCU. LCU можно разделить на суб-CU, и каждую суб-CU можно дополнительно разделить на суб-CU. Синтаксические данные для потока битов могут задавать максимальное количество раз, которое можно делить LCU, называемое глубиной CU. Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU). Данное раскрытие изобретения также использует термин "блок" или "часть" для ссылки на любую из CU, PU или TU. Обычно "часть" может относиться к любому поднабору видеокадра.
[0030] LCU может ассоциироваться со структурой данных квадродерева. Фиг. 1 - концептуальная схема разделения квадродерева. Обычно структура данных квадродерева включает в себя один узел на каждую CU, при этом корневой узел соответствует LCU. Если CU разделяется на четыре суб-CU, то узел, соответствующий CU, включает в себя четыре листа, каждый из которых соответствует одной из суб-CU. Каждый узел в структуре данных квадродерева может предоставлять синтаксические данные для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделяется ли соответствующая узлу CU на суб-CU. Синтаксические элементы для CU можно задать рекурсивно, и они могут зависеть от того, разделяется ли CU на суб-CU. Если CU больше не разделяется, то она называется листовой CU. В данном раскрытии изобретения 4 суб-CU в листовой CU также будут называться листовыми CU, хотя и отсутствует явное разделение исходной листовой CU. Например, если CU с размером 16x16 больше не разделяется, то четыре суб-CU 8x8 также будут называться листовыми CU, хотя CU 16x16 никогда не разделялась.
[0031] Кроме того, TU в листовых CU также могут ассоциироваться с соответствующими структурами данных квадродерева. То есть листовая CU может включать в себя квадродерево, указывающее, как листовая CU разделяется на TU. Данное раскрытие изобретения ссылается на квадродерево как на квадродерево CU, указывая, как разделяется LCU, и на квадродерево как на квадродерево TU, указывая, как листовая CU разделяется на TU. Корневой узел квадродерева TU, как правило, соответствует листовой CU, тогда как корневой узел квадродерева CU, как правило, соответствует LCU. TU в квадродереве TU, которые не разделяются, называются листовыми TU.
[0032] Листовая CU может включать в себя одну или более единиц предсказания (PU). Обычно PU представляет всю или часть соответствующей CU и может включать в себя данные для извлечения эталонной выборки для PU. Например, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя или точность в одну восьмую пикселя), эталонный кадр, на который указывает вектор движения, и/или список ссылок (например, список 0 или список 1) для вектора движения. Данные для листовой CU, задающей PU (несколько PU), также могут описывать, например, разделение CU на одну или более PU. Режимы разделения могут отличаться в зависимости от того, является ли CU некодированной, кодированной в режиме внутреннего предсказания или кодированной в режиме внешнего предсказания. Для внутреннего кодирования PU может считаться тем же, что и листовая единица преобразования, описанная ниже.
[0033] Кодирование адаптивного смещения выборок (SAO) в настоящее время рассматривается для принятия в стандарт HEVC. В общем, добавление значений смещения к пикселям в видеокадре (например, кадре с предсказанием для внешнего предсказания или внутреннего предсказания) может улучшить кодирование во время изменений освещенности между кадрами видеопоследовательности, например, во время вспышек, темнеющего неба или других типов изменений освещенности между кадрами. Например, значения смещения могут применяться к пикселям предсказанного видеоблока, чтобы сместить значения видеоблока с предсказанием, чтобы компенсировать изменения освещенности. Предшествующие стандарты кодирования видео, например H.264, применяли типы и значения смещения единообразно по всем блокам или кадрам пикселей. Методики SAO допускают применение разных значений смещения к разным пикселям (или блокам) в зависимости от показателей классификации пикселя (или блока). Возможные показатели классификации включают в себя показатели активности, например показатели границы и показатели диапазона. Описание классификаций смещения можно найти в C.-M. Fu, C.-Y. Chen, C.-Y. Tsai, Y.-W. Huang, S. Lei, "CE13: Sample Adaptive Offset with LCU-Independent Decoding", JCT-VC Contribution, E049, Женева, февраль 2011 г.
[0034] В текущей реализации SAO в рабочем варианте стандарта HEVC каждый раздел (который состоит из набора LCU) может иметь один из трех типов смещения (также называемых классификацией пикселей): без смещения, тип смещения 0/1 на основе классификации диапазона и тип 0/1/2/3 на основе классификации границы. Каждый тип смещения на основе классификации диапазона имеет 16 возможных значений смещения, тогда как каждый тип на основе классификации границы имеет 4 возможных значения смещения. Если один из этих типов смещения выбирается для использования для раздела, то декодеру отправляется информация, указывающая соответствующий тип смещения и значения смещения.
[0035] Тип смещения по границе классифицирует каждый пиксель на основе информации о границе. Фиг. 2 - концептуальная схема, показывающая четыре возможных классификации смещения по границе (также называемых типами смещения), предложенные в настоящее время для HEVC. Граница для текущего пикселя C определяется относительно двух соседних пикселей (1 и 2). Тип 0 смещения по границе (SAO_EO_0) является горизонтальной границей. Тип 1 смещения по границе (SAO_EO_1) является вертикальной границей. Типы смещения по границе 2 (SAO_EO_2) и 3 (SAO_EO_3) являются диагональными границами. Для каждого значения типа смещения по границе четыре значения смещения определяются и сигнализируются в потоке битов кодированного видео для использования декодером.
[0036] Для смещения по диапазону пиксели классифицируются на разные диапазоны на основе интенсивности. Фиг. 3 - концептуальная схема, показывающая примерные диапазоны на основе значения интенсивности. Для классификации смещения по диапазону пиксели категоризируются на 32 диапазона. 16 диапазонов в центре классифицируются в одну группу (тип 0 смещения по диапазону), а оставшиеся диапазоны классифицируются во вторую группу (тип 1 смещения диапазону). Для каждой группы диапазонов 16 значений смещения определяются и сигнализируются в потоке битов кодированного видео для использования видеодекодером.
[0037] Данное раскрытие изобретения предлагает способы и методики, чтобы эффективнее отправлять тип смещения и значения смещения для каждого раздела. В этом смысле раздел может включать в себя несколько единиц кодирования (CU) (аналогичных так называемым макроблоками в стандарте H.264) или даже несколько наибольших единиц кодирования (LCU).
[0038] В одном примере раскрытия изобретения предлагаются методики для кодирования значений адаптивного смещения выборок в процессе кодирования видео. Предложенные методики включают в себя определение информации о смещении для текущего раздела, сравнение информации о смещении текущего раздела с информацией о смещении одного или более соседних разделов, кодирование команды слияния в случае, когда информация о смещении одного из упомянутых одного или более соседних разделов является такой же, как информация о смещении текущего раздела, и кодирование одной из множества команд предсказания в случае, когда информация о смещении упомянутых одного или более соседних разделов не является такой же, как информация о смещении текущего раздела.
[0039] В другом примере раскрытия изобретения предлагаются методики для декодирования значений адаптивного смещения выборок в процессе декодирования видео. Предложенные методики включают в себя прием команды слияния или одной из множества команд предсказания для текущего раздела, копирование информации о смещении из соседнего раздела в текущий раздел в случае, когда принята команда слияния, и выполнение процесса предсказания смещения для текущего раздела в случае, когда принята одна из множества команд предсказания.
[0040] Фиг. 4 - блок-схема, иллюстрирующая примерную систему кодирования и декодирования видео 10, которая может конфигурироваться для использования методик для выполнения сигнализации и кодирования адаптивного смещения выборок в соответствии с примерами из данного раскрытия изобретения. Как показано на фиг. 4, система 10 включает в себя устройство-источник 12, которое передает кодированное видео в устройство-адресат 14 по каналу 16 связи. Кодированные видеоданные также можно сохранить на запоминающем носителе 34 или файловом сервере 36, и к ним можно осуществлять доступ с помощью устройства-адресата 14 по желанию. Когда они сохранены на запоминающем носителе или файловом сервере, видеокодер 20 может предоставлять кодированные видеоданные другому устройству, например сетевому интерфейсу, устройству с возможностью прожига или штамповки компакт-диска (CD), диска Blu-ray или цифрового видеодиска (DVD), или другим устройствам для сохранения кодированных видеоданных на запоминающем носителе. Также устройство, обособленное от видеодекодера 30, например сетевой интерфейс, устройство считывания CD или DVD или т.п., может извлекать кодированные видеоданные из запоминающего носителя и предоставлять извлеченные данные видеодекодеру 30.
[0041] Устройство-источник 12 и устройство-адресат 14 могут содержать любое из широкого спектра устройств, включая настольные компьютеры, ноутбуки (то есть переносные компьютеры), планшетные компьютеры, телевизионные приставки, телефонные трубки, например так называемые смартфоны, телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, игровые приставки или т.п. Во многих случаях такие устройства могут оборудоваться для осуществления беспроводной связи. Поэтому канал 16 связи может содержать беспроводной канал, проводной канал или сочетания беспроводного канала и проводного каналов, подходящего для передачи кодированных видеоданных. Аналогичным образом к файловому серверу 36 можно осуществлять доступ с помощью устройства-адресата 14 посредством любого стандартного соединения передачи данных, включая Интернет-соединение. Это соединение может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.п.) или сочетание их обоих, которое подходит для обращения к кодированным видеоданным, сохраненным на файловом сервере.
[0042] Методики для выполнения сигнализации и кодирования адаптивного смещения выборок в соответствии с примерами из данного раскрытия изобретения могут применяться к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как эфирные телевизионные передачи, кабельные телевизионные передачи, спутниковые телевизионные передачи, передачи потокового видео, например через Интернет, кодирование цифрового видео для сохранения на запоминающем носителе, декодирование цифрового видео, сохраненного на запоминающем носителе, или других приложений. В некоторых примерах система 10 может конфигурироваться для поддержки однонаправленной или двунаправленной передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, телевизионное вещание и/или видеотелефония.
[0043] В примере из фиг. 4 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20, модулятор/демодулятор 22 и передатчик 24. В устройстве-источнике 12 источник 18 видео может включать в себя такой источник, как устройство видеозахвата, например видеокамера, видеоархив, содержащий ранее захваченное видео, интерфейс источника видеосигнала для приема видео от поставщика видеоконтента, и/или система компьютерной графики для формирования данных компьютерной графики в качестве исходного видео, либо сочетание таких источников. В качестве одного примера, если источником 18 видео является видеокамера, то устройство-источник 12 и устройство-адресат 14 могут образовывать так называемые камерофоны или видеотелефоны. Однако описанные в данном раскрытии изобретения методики могут быть применимы к кодированию видео в целом и могут применяться к беспроводным и/или проводным приложениям, или к приложению, в котором кодированные видеоданные хранятся на локальном диске.
[0044] Захваченное, предварительно захваченное или сформированное компьютером видео может кодироваться видеокодером 20. Кодированная видеоинформация может модулироваться модемом 22 в соответствии с неким стандартом связи, например протоколом беспроводной связи, и передаваться устройству-адресату 14 посредством передатчика 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включающие в себя усилители, фильтры, и одну или более антенн.
[0045] Захваченное, предварительно захваченное или сформированное компьютером видео, которое кодируется видеокодером 20, также можно сохранить на запоминающем носителе 34 или файловом сервере 36 для последующего потребления. Запоминающий носитель 34 может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память или любые другие подходящие цифровые запоминающие носители для хранения кодированного видео. К кодированному видео, сохраненному на запоминающем носителе 34, можно потом осуществлять доступ с помощью устройства-адресата 14 для декодирования и воспроизведения.
[0046] Файловый сервер 36 может быть любым типом сервера, способным к хранению кодированного видео и передаче кодированного видео устройству-адресату 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, сетевые устройства хранения (NAS), локальный диск или любой другой тип устройства, способный к хранению кодированных видеоданных и их передачу устройству-адресату. Передача кодированных видеоданных от файлового сервера 36 может быть потоковой передачей, загрузкой или их сочетанием. К файловому серверу 36 можно осуществлять доступ с помощью устройства-адресата 14 посредством любого стандартного соединения передачи данных, включая Интернет-соединение. Это соединение может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB и т.п.) или сочетание их обоих, которое подходит для обращения к кодированным видеоданным, сохраненным на файловом сервере.
[0047] Устройство-адресат 14 в примере из фиг. 4 включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. Приемник 26 в устройстве-адресате 14 принимает информацию по каналу 16, и модем 28 демодулирует информацию для создания демодулированного потока битов для видеодекодера 30. Информация, переданная по каналу 16, может включать в себя различную синтаксическую информацию, сформированную видеокодером 20 для использования видеодекодером 30 при декодировании видеоданных. Такой синтаксис также может включаться в кодированные видеоданные, сохраненные на запоминающем носителе 34 или файловом сервере 36. Каждый из видеокодера 20 и видеодекодера 30 может образовывать часть соответствующего кодера-декодера (кодека), который способен к кодированию или декодированию видеоданных. В данном раскрытии изобретения термин "кодировщик" относится к кодеру, декодеру или кодеку, и все термины "кодировщик", "кодер", "декодер" и "кодек" относятся к специальным машинам, предназначенным для кодирования (кодирования и/или декодирования) видеоданных в соответствии с данным раскрытием изобретения.
[0048] Устройство 32 отображения может объединяться с устройством-адресатом 14 или быть внешним по отношению к нему. В некоторых примерах устройство-адресат 14 может включать в себя встроенное устройство отображения, а также конфигурироваться для сопряжения с внешним устройством отображения. В других примерах устройство-адресат 14 может быть устройством отображения. В общем, устройство 32 отображения отображает пользователю декодированные видеоданные и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0049] В примере из фиг. 4 канал 16 связи может содержать любое беспроводное или проводное средство связи, например радиочастотный (RF) спектр или одну или более физических линий передачи, или любое сочетание беспроводных и проводных средств. Канал 16 связи может образовывать часть пакетной сети, например локальной сети, региональной сети или глобальной сети, такой как Интернет. Канал 16 связи в целом представляет любое подходящее средство связи или совокупность разных средств связи для передачи видеоданных от устройства-источника 12 к устройству-адресату 14, включая любое подходящее сочетание проводных или беспроводных средств. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для упрощения связи от устройства-источника 12 к устройству-адресату 14.
[0050] Видеокодер 20 и видеодекодер 30 могут работать в соответствии с неким стандартом сжатия видео, например стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке, и могут соответствовать Экспериментальной модели HEVC (HM). В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать в соответствии с другими собственными или промышленными стандартами, например стандартом H.264 ITU-T, в качестве альтернативы называемым MPEG-4, часть 10, Улучшенное кодирование видео (AVC), или расширениями таких стандартов. Однако методики в данном раскрытии изобретения не ограничиваются никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и H.263 ITU-T.
[0051] Хотя и не показано на фиг. 4, в некоторых аспектах видеокодер 20 и видеодекодер 30 могут быть объединены с аудио кодером и декодером и могут включать в себя подходящие модули мультиплексирования-демультиплексирования или другие аппаратные средства и программное обеспечение, чтобы справляться с кодированием аудио и видео в общем потоке данных или в отдельных потоках данных. Если применимо, то в некоторых примерах модули мультиплексирования-демультиплексирования могут соответствовать протоколу мультиплексора H.223 ITU или другим протоколам, например протоколу дейтаграмм пользователя (UDP).
[0052] Видеокодер 20 и видеодекодер 30 могут быть реализованы в виде любой из множества подходящих схем кодера, например одного или более микропроцессоров, цифровых процессоров сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их сочетаний. Когда методики реализуются частично в программном обеспечении, устройство может хранить команды для программного обеспечения на подходящем, не временном компьютерно-читаемом носителе и исполнять команды на аппаратных средствах, использующих один или более процессоров, для выполнения методик из данного раскрытия изобретения. Каждый из видеокодера 20 и видеодекодера 30 может включаться в один или более кодеров или декодеров, любой из которых может встраиваться как часть объединенного кодера/декодера (кодека) в соответствующем устройстве.
[0053] Видеокодер 20 может реализовывать любую или все методики из данного раскрытия изобретения для выполнения сигнализации и кодирования адаптивного смещения выборок в процессе кодирования видео. Также видеодекодер 30 может реализовывать любую или все эти методики для выполнения кодирования адаптивного смещения выборок в процессе кодирования видео. Кодировщик видео, описанный в данном раскрытии изобретения, может относиться к видеокодеру или видеодекодеру. Аналогичным образом модуль кодирования видео может относиться к видеокодеру или видеодекодеру. Также кодирование видео может относиться к кодированию видео или декодированию видео.
[0054] В одном примере из раскрытия изобретения видеокодер 20 в устройстве-источнике 12 может конфигурироваться для сравнения информации о смещении текущего раздела с информацией о смещении одного или более соседних разделов, кодирования команды слияния в случае, когда информация о смещении одного из упомянутых одного или более соседних разделов является такой же, как информация о смещении текущего раздела, и кодирования одной из множества команд предсказания в случае, когда информация о смещении упомянутых одного или более соседних разделов не является такой же, как информация о смещении текущего раздела.
[0055] В другом примере из раскрытия изобретения видеодекодер 30 в устройстве-адресате 14 может конфигурироваться для приема команды слияния или одной из множества команд предсказания для текущего раздела, копирования информации о смещении из соседнего раздела в текущий раздел в случае, когда принята команда слияния, выполнения процесса предсказания смещения для текущего раздела в случае, когда принята одна из множества команд предсказания.
[0056] Фиг. 5 - блок-схема, иллюстрирующая пример видеокодера 20, который может использовать методики для кодирования и сигнализации значений адаптивного смещения выборок, которые описаны в данном раскрытии изобретения. Видеокодер 20 с целью иллюстрации будет описываться применительно к кодированию HEVC, но без ограничения данного раскрытия изобретения в отношении других стандартов или способов кодирования, которые могут требовать сканирования коэффициентов преобразования. Видеокодер 20 может выполнять внутреннее и внешнее кодирование CU в видеокадрах. Внутреннее кодирование опирается на пространственное предсказание, чтобы уменьшить или устранить пространственную избыточность в видеоданных в данном видеокадре. Внешнее кодирование опирается на временное предсказание, чтобы уменьшить или устранить временную избыточность между текущим кадром и ранее кодированными кадрами видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких режимов пространственного сжатия видео. Внешние режимы, например однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного сжатия видео.
[0057] Как показано на фиг. 5, видеокодер 20 принимает текущий видеоблок в видеокадре, который подлежит кодированию. В примере из фиг. 5 видеокодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 внутреннего предсказания, буфер 64 эталонных кадров, сумматор 50, модуль 52 преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 52 преобразования, проиллюстрированный на фиг. 5, является модулем, который применяет фактическое преобразование или сочетания преобразований к блоку остаточных данных, и его не нужно путать с блоком коэффициентов преобразования, который также может называться единицей преобразования (TU) в CU. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования, сумматор 62 и модуль 43 SAO. Также может включаться фильтр уменьшения блочности для фильтрации границ блока, чтобы удалить артефакты блочности из восстановленного видео. При желании фильтр уменьшения блочности обычно фильтровал бы выходной сигнал сумматора 62.
[0058] Во время процесса кодирования видеокодер 20 принимает видеокадр или секцию, которые будут кодироваться. Кадр или секцию можно разделить на несколько видеоблоков, например, наибольших единиц кодирования (LCU). Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого видеоблока относительно одного или более блоков в одном или более эталонных кадрах, чтобы обеспечить временное сжатие. Модуль 46 внутреннего предсказания может выполнять кодирование с внутренним предсказанием принятого видеоблока относительно одного или более соседних блоков в том же кадре или секции в качестве блока, который подлежит кодированию, чтобы обеспечить пространственное сжатие.
[0059] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основе результатов искажения от скорости передачи для каждого режима, и предоставляет результирующий блок, предсказанный внутренне или внешне (например, единицу предсказания (PU)) сумматору 50, чтобы сформировать данные остаточного блока, и сумматору 62, чтобы восстановить кодированный блок для использования в эталонном кадре. Сумматор 62 объединяет предсказанный блок с обратно квантованными, обратно преобразованными данными от модуля 60 обратного преобразования для блока, чтобы восстановить кодированный блок, как подробнее описано ниже. Некоторые видеокадры можно обозначить как I-кадры, где все блоки в I-кадре кодируются в режиме внутреннего предсказания. В некоторых случаях модуль 46 внутреннего предсказания может выполнять кодирование с внутренним предсказанием блока в P- или B-кадре, например, когда поиск движения, выполненный модулем 42 оценки движения, не привел к достаточному предсказанию блока.
[0060] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть в значительной степени объединены, но иллюстрируются отдельно с концептуальной целью. Оценка движения (или поиск движения) является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать перемещение единицы предсказания в текущем кадре относительно эталонной выборки в эталонном кадре. Модуль 42 оценки движения вычисляет вектор движения для единицы предсказания в кадре с внешним кодированием путем сравнения единицы предсказания с эталонными выборками в эталонном кадре, сохраненном в буфере 64 эталонных кадров. Эталонная выборка может быть блоком, который признан точно совпадающим с частью CU, включающей в себя кодируемую PU, с точки зрения разности пикселей, которая может определяться с помощью суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других показателей разности. Эталонная выборка может возникать в любом месте в эталонном кадре или эталонной секции, и не обязательно на границе блока (например, единицы кодирования) в эталонном кадре или секции. В некоторых примерах эталонная выборка может возникать в дробном положении пикселя.
[0061] Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения. Часть эталонного кадра, идентифицированная вектором движения, может называться эталонной выборкой. Модуль 44 компенсации движения может вычислить значение предсказания для единицы предсказания текущей CU, например, путем извлечения эталонной выборки, идентифицированной вектором движения для PU.
[0062] Модуль 46 внутреннего предсказания может внутренне предсказать принятый блок, в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения. Модуль 46 внутреннего предсказания может предсказать принятый блок относительно соседних, ранее кодированных блоков, например блоков выше, выше и справа, выше и слева, или слева от текущего блока, предполагая порядок кодирования для блоков слева направо и сверху вниз. Модуль 46 внутреннего предсказания может оснащаться рядом разных режимов внутреннего предсказания. Например, модуль 46 внутреннего предсказания на основе размера кодируемой CU может оснащаться некоторым количеством режимов направленного предсказания, например, тридцатью пятью режимами направленного предсказания.
[0063] Модуль 46 внутреннего предсказания может выбирать режим внутреннего предсказания, например, путем вычисления значений ошибки для различных режимов внутреннего предсказания и выбора режима, который дает наименьшее значение ошибки. Режимы направленного предсказания могут включать в себя функции для объединения значений соседних в пространственном отношении пикселей и применения объединенных значений к одному или более положениям пикселей в PU. Как только вычислены значения для всех положений пикселей в PU, модуль 46 внутреннего предсказания может вычислить значение ошибки для режима предсказания на основе разностей пикселей между PU и принятым блоком, который подлежит кодированию. Модуль 46 внутреннего предсказания может продолжить проверку режимов внутреннего предсказания, пока не обнаружится режим внутреннего предсказания, который дает приемлемое значение ошибки. Модуль 46 внутреннего предсказания затем может отправить PU в сумматор 50.
[0064] Видеокодер 20 создает остаточный блок путем вычитания данных предсказания, вычисленных модулем 44 компенсации движения или модулем 46 внутреннего предсказания, из исходного кодируемого видеоблока. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двумерной матрице значений разности пикселей, где количество значений в остаточном блоке такое же, как количество пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, то есть ошибке, между значениями совмещенных пикселей в PU и в исходном блоке, который подлежит кодированию. Разности могут быть разностями цветности или яркости в зависимости от типа блока, который кодируется.
[0065] Модуль 52 преобразования может создать одну или более единиц преобразования (TU) из остаточного блока. Модуль 52 преобразования выбирает преобразование из множества преобразований. Преобразование может выбираться на основе одной или более характеристик кодирования, таких как размер блока, режим кодирования или т.п. Модуль 52 преобразования затем применяет выбранное преобразование к TU, создавая видеоблок, содержащий двумерный массив коэффициентов преобразования. Модуль 52 преобразования может выбрать раздел преобразования в соответствии с вышеописанными методиками в данном раскрытии изобретения. К тому же модуль 52 преобразования может сигнализировать выбранный раздел преобразования в потоке битов кодированного видео.
[0066] Модуль 52 преобразования может отправить результирующие коэффициенты преобразования модулю 54 квантования. Модуль 54 квантования затем может квантовать эти коэффициенты преобразования. Модуль 56 энтропийного кодирования затем может выполнить сканирование квантованных коэффициентов преобразования в матрице в соответствии с режимом сканирования. Данное раскрытие изобретения описывает модуль 56 энтропийного кодирования как выполняющий сканирование. Однако следует понимать, что в других примерах сканирование могли бы выполнять другие модули обработки, например модуль 54 квантования.
[0067] Как только коэффициенты преобразования сканируются в одномерный массив, модуль 56 энтропийного кодирования может применить к коэффициентам энтропийное кодирование, например CAVLC, CABAC, синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC) или другую методологию энтропийного кодирования.
[0068] Чтобы выполнить CAVLC, модуль 56 энтропийного кодирования может выбрать код переменной длины для символа, который подлежит передаче. Кодовые слова в VLC могут быть построены так, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может добиться экономии битов по сравнению, например, с использованием кодовых слов равной длины для каждого символа, который подлежит передаче.
[0069] Чтобы выполнить CABAC, модуль 56 энтропийного кодирования может выбрать контекстную модель для применения к некоторому контексту, чтобы кодировать символы, которые будут переданы. Контекст может относиться, например, к тому, являются ли соседние значения ненулевыми. Модуль 56 энтропийного кодирования также может энтропийно кодировать синтаксические элементы, например сигнал, представляющий выбранное преобразование. В соответствии с методиками в данном раскрытии изобретения модуль 56 энтропийного кодирования может выбирать контекстную модель, используемую для кодирования этих синтаксических элементов, например, на основе направления внутреннего предсказания для режимов внутреннего предсказания, положения сканирования коэффициента, соответствующего синтаксическим элементам, типа блока и/или типа преобразования, среди прочих факторов, используемых для выбора контекстной модели.
[0070] После энтропийного кодирования с помощью модуля 56 энтропийного кодирования результирующее кодированное видео может передаваться другому устройству, например видеодекодеру 30, или архивироваться для более поздней передачи или извлечения.
[0071] В некоторых случаях модуль 56 энтропийного кодирования или другой модуль видеокодера 20 может конфигурироваться для выполнения, в дополнение к энтропийному кодированию, других функций кодирования. Например, модуль 56 энтропийного кодирования может конфигурироваться для определения значений шаблона кодированного блока (CBP) для CU и PU. Также в некоторых случаях модуль 56 энтропийного кодирования может выполнять кодирование коэффициентов по длинам серий.
[0072] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок в области пикселей, например, для последующего использования в качестве эталонного блока. Модуль 44 компенсации движения может вычислить эталонный блок путем добавления остаточного блока к блоку с предсказанием в одном из кадров в буфере 64 эталонных кадров. Модуль 44 компенсации движения также может применить один или более интерполирующих фильтров к восстановленному остаточному блоку, чтобы вычислить значения субцелых пикселей для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, созданному модулем 44 компенсации движения, чтобы создать восстановленный видеоблок.
[0073] Модуль 43 SAO определяет тип смещения и значения смещения для текущего раздела и добавляет значения смещения к пикселям в восстановленном видеоблоке (то есть текущем разделе), и сигнализирует синтаксис адаптивного смещения в потоке битов кодированного видео для использования декодером. Восстановленный видеоблок со значениями смещения затем сохраняется в буфере 64 эталонных кадров. Восстановленный видеоблок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве эталонного блока, чтобы внешне кодировать блок в последующем видеокадре.
[0074] В некоторых случаях информация о смещении (то есть тип смещения и значения смещения) сигнализируется в потоке битов кодированного видео путем ее отправки как есть, то есть без предсказания или ссылки на другие разделы. Однако эта методика не в состоянии использовать возможные корреляции между разными разделами, которые могут использоваться для повышенной эффективности при кодировании типа смещения и значений смещения. Данное раскрытие изобретения предлагает следующие методики, которые пользуются преимуществами возможных корреляций, чтобы кодировать тип и значения смещения.
[0075] Сначала определяется, применяются ли тип смещения и значения смещения на уровне секции или на уровне раздела. Другими словами, кодер может выбирать, имеет ли вся секция один тип смещения и значение смещения (на основе секции), либо каждый раздел имеет свой тип и значения смещения (на основе раздела). Если выбирается смещение на основе секции, то тип смещения и значения смещения отправляются декодеру без предсказания, и в этом случае значения смещения могут отправляться в синтаксисе уровня секции (например, в заголовке секции) и использоваться для CU в той секции. В противном случае, если выбираются смещения на основе раздела, то кодер может применить сигнализацию информации о смещении на основе слияния или на основе предсказания.
[0076] Модуль 43 SAO может сигнализировать команду слияния в потоке битов кодированного видео, которая инструктирует декодер просто скопировать тип и значения смещения из соседнего раздела для текущего раздела. В качестве альтернативы модуль 43 SAO может сигнализировать команду предсказания в потоке битов кодированного видео, которая инструктирует декодер применить методику предсказания для определения типа смещения и значения смещения для текущего раздела (без слияния).
[0077] Сигнализация информации о смещении на основе слияния и на основе предсказания для текущего раздела может опираться на информацию о смещении соседних разделов относительно текущего раздела. Фиг. 6 - концептуальная схема, изображающая возможные соседние разделы, используемые при сигнализации информации о смещении. Соседние разделы обычно получаются причинным способом (то есть соседние разделы, которые уже декодированы декодером). Примеры местоположений соседнего раздела включают в себя верхние (U), левые (L), верхние левые (UL) и верхние правые (UR) разделы относительно текущего раздела. Соседние разделы могут быть непосредственно смежными с текущим разделом. В другом примере соседние разделы могут быть отдалены от текущего раздела, но находиться в той же единице кодирования (например, в той же LCU).
[0078] Соседние разделы, которые являются возможными кандидатами на слияние, являются доступными (то есть причинными) соседними разделами с одинаковым типом смещения. Например, если тип смещения у текущего раздела является типом 0 смещения по границе (EO0), то причинные соседние разделы с типом EO0 смещения считаются кандидатами на слияние.
[0079] При определении доступных соседних разделов могут применяться разные случаи, когда используется разделение на основе квадродерева. Фиг. 6 показывает случай 1, где непосредственный (то есть смежный) соседний раздел того же размера имеет такой же тип смещения. В случае 2 родитель соседнего раздела имеет такой же тип смещения (то есть раздел с размером, большим текущего раздела). В случае 3 непосредственный соседний раздел такого же размера не имеет такой же тип смещения, но соседний раздел у непосредственного соседнего раздела имеет такой же тип смещения. Каждый из этих трех случаев показывает примеры соседних разделов, которые могут использоваться для режима слияния адаптивного смещения выборок.
[0080] После определения типа смещения и значений смещения для текущего раздела модуль 43 SAO сравнивает тип смещения и значения смещения у текущего раздела с соседними разделами. Режим слияния используется, когда один из соседних разделов имеет тот же тип смещения и значения смещения, что и текущий раздел.
[0081] Фиг. 7A - концептуальная схема примера кодирования синтаксиса адаптивного смещения в режиме слияния. Флаг 1 "слияния" (например, 1 для слияния и 0 для отсутствия слияния, или наоборот) сигнализируется в потоке битов кодированного видео для указания, следует ли декодеру копировать тип смещения и значения смещения у соседнего раздела для текущего раздела (то есть выполнять процесс слияния). Отметим, что флаг слияния может подразумеваться равным 0 (то есть отсутствие слияния), когда отсутствует доступный соседний раздел с задействованным смещением.
[0082] Если используется слияние (то есть флаг слияния установлен в 1), то в дополнение к флагу 1 слияния модуль 43 SAO сигнализирует декодеру индекс 3 соседнего раздела, который указывает индекс соседнего раздела, информация о смещении (то есть тип и значения смещения) которого будет скопирована в текущий раздел во время декодирования видео. Сигнализация индекса соседнего раздела зависит от количества разных доступных соседних разделов (также называемых кандидатами на слияние). Индекс соседнего раздела может не отправляться, когда имеется только один кандидат на слияние. В этой ситуации декодер может логически вывести индекс единственного кандидата на слияние.
[0083] Если модуль 43 SAO сравнивает информацию о смещении текущего раздела со всеми соседними разделами и не находит точного совпадения, то слияние не используется. Если слияние не используется (то есть флаг слияния установлен в 0), то декодеру отправляется тип предсказания (например, с использованием флага «pred_type»). Данное раскрытие изобретения предлагает три возможных типа предсказания.
[0084] Фиг. 7B - концептуальная схема примера кодирования синтаксиса адаптивного смещения в первом режиме предсказания. Первая команда предсказания (то есть pred_type 0) может отправляться в случае, когда модуль 43 SAO определяет, что значения смещения соседнего раздела не идентичны значениям текущего раздела, но достаточно близки, чтобы можно было достичь эффективности по скорости передачи битов путем отправки остаточных значений смещения. Использование pred_type 0 может определяться путем сравнения скорости передачи битов, достигаемой путем отправки остаточных значений смещения, по сравнению со скоростью передачи битов от отправки значений смещения текущего раздела без изменений.
[0085] Для первой команды предсказания флаг 5 pred_type устанавливается в 0. Индекс 7 соседнего раздела является индексом соседнего раздела с предсказанием. Как и режим слияния, pred_type 0 использует соседние разделы, которые имеют такой же тип смещения, как у текущего раздела. Декодер может просто скопировать тип смещения для текущего раздела из соседнего раздела во время процесса декодирования. Остаточные значения 9 смещения также сигнализируются в потоке битов кодированного видео. Остаточные значения смещения создаются путем вычитания значений смещения, определенных для текущего раздела, из значений смещения выбранного соседнего раздела. Декодер тогда может просто прибавить принятые остаточные значения смещения к значениям смещения соседнего раздела, указанного индексом 7 соседнего раздела, чтобы восстановить значения смещения для текущего раздела. Соседние разделы, которые доступны в качестве кандидатов предсказания, можно получить точно так же, как для режима слияния, описанного выше со ссылкой на фиг. 6. Если имеется только один доступный соседний раздел, то можно не сигнализировать индекс соседнего раздела, а вместо этого вывести его с помощью декодера.
[0086] В ситуациях, где никакой соседний раздел не имеет значений смещения, достаточно близких к значениям текущего раздела, чтобы достичь эффективности кодирования путем отправки остатка, вторая команда предсказания (pred_type 1) может сигнализироваться в потоке битов кодированного видео. Фиг. 7C - концептуальная схема примера кодирования синтаксиса адаптивного смещения во втором режиме предсказания. В pred_type 1 тип 11 смещения и значения 13 смещения для текущего раздела сигнализируются в кодированном потоке битов без изменений. По существу, в этом режиме декодеру не нужно обращаться ни к какому соседнему разделу, а можно просто принять тип смещения и значения смещения для текущего раздела.
[0087] Третья команда предсказания (pred_type 2) может отправляться в ситуациях, где модуль 43 SAO определяет, что значения смещения у текущего раздела такие же, как у соседнего раздела, но тип смещения отличается. Фиг. 7D - концептуальная схема примера кодирования синтаксиса адаптивного смещения в третьем режиме предсказания. В этом случае индекс 7 соседнего раздела указывает соседний раздел, из которого нужно копировать значения смещения для текущего раздела. К тому же тип 11 смещения для текущего раздела также сигнализируется в потоке битов кодированного видео. Отметим, что это немного отличается от флага слияния, так как из соседнего раздела копируются только значения смещения, а не тип смещения. Получение кандидатов предсказания для типа 2 предсказания немного отличается от такового для типа 0 предсказания и режима слияния. Вместо рассмотрения причинных соседей с таким же типом смещения тип 2 предсказания рассматривает соседние разделы с другими типами смещения. Например, если тип смещения у текущего раздела является типом 0 смещения по границе (EO0), то соседи с EO1/2/3 считаются кандидатами предсказания.
[0088] Фиг. 8 - блок-схема, иллюстрирующая пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере из фиг. 8 видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 эталонных кадров, модуль 79 SAO и сумматор 80. Видеодекодер 30 в некоторых примерах может выполнять проход декодирования, в целом обратный по отношению к проходу кодирования, описанному по отношению к видеокодеру 20 (см. фиг. 5).
[0089] Модуль 70 энтропийного декодирования выполняет процесс энтропийного декодирования над кодированным потоком битов, чтобы извлечь одномерный массив коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, используемого видеокодером 20 (например, CABAC, CAVLC и т.п.). Процесс энтропийного кодирования, используемый кодером, может сигнализироваться в кодированном потоке битов или может быть предварительно определенным процессом.
[0090] В некоторых примерах модуль 70 энтропийного декодирования (или модуль 76 обратного квантования) может сканировать принятые значения с использованием сканирования, зеркально отражающего режим сканирования, используемый модулем 56 энтропийного кодирования (или модулем 54 квантования) в видеокодере 20. Хотя сканирование коэффициентов может выполняться в модуле 76 обратного квантования, сканирование с целью иллюстрации будет описываться как выполняемое модулем 70 энтропийного декодирования. К тому же структура и функциональные возможности модуля 70 энтропийного декодирования, модуля 76 обратного квантования и других модулей видеодекодера 30 могут существенно объединяться друг с другом, хотя для простоты иллюстрации показаны в виде отдельных функциональных модулей.
[0091] Модуль 76 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например аналогичный процессам, предложенным для HEVC или заданным стандартом декодирования H.264. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного видеокодером 20 для CU, чтобы определить степень квантования, а также степень обратного квантования, которое следует применить. Модуль 76 обратного квантования может обратно квантовать коэффициенты преобразования либо до, либо после того, как коэффициенты преобразуются из одномерного массива в двумерный массив.
[0092] Модуль 78 обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах модуль 78 обратного преобразования может определять обратное преобразование на основе сигнализации от видеокодера 20 или путем логического выведения преобразования из одной или более характеристик кодирования, таких как размер блока, режим кодирования или т.п. В некоторых примерах модуль 78 обратного преобразования может определять преобразование для применения к текущему блоку на основе сигнализированного преобразования в корневом узле квадродерева для LCU, включающей в себя текущий блок. В качестве альтернативы преобразование может сигнализироваться в корне квадродерева TU для CU листа в квадродереве LCU. В некоторых примерах модуль 78 обратного преобразования может применять каскадное обратное преобразование, в котором модуль 78 обратного преобразования применяет два или более обратных преобразований к коэффициентам преобразования текущего декодируемого блока.
[0093] Модуль 74 внутреннего предсказания может формировать данные предсказания для текущего блока в текущем кадре на основе сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков в текущем кадре.
[0094] На основе извлеченного направления предсказания движения, индекса эталонного кадра и вычисленного текущего вектора движения модуль компенсации движения создает блок с компенсированным движением для текущей части. Эти блоки с компенсированным движением по существу восстанавливают блок с предсказанием, используемый для создания остаточных данных.
[0095] Модуль 72 компенсации движения может создавать блоки с компенсированным движением, выполняя по возможности интерполяцию на основе интерполирующих фильтров. В синтаксические элементы могут включаться идентификаторы для интерполирующих фильтров, которые будут использоваться для оценки движения с точностью до субпикселя. Модуль 72 компенсации движения может использовать интерполирующие фильтры, которые использовались видеокодером 20 во время кодирования видеоблока, чтобы вычислить интерполированные значения для субцелых пикселей эталонного блока. Модуль 72 компенсации движения может определить интерполирующие фильтры, используемые видеокодером 20, в соответствии с принятой синтаксической информацией, и использовать интерполирующие фильтры для создания блоков с предсказанием.
[0096] Более того, модуль 72 компенсации движения и модуль 74 внутреннего предсказания в примере с HEVC могут использовать часть синтаксической информации (например, предоставленную квадродеревом) для определения размеров LCU, используемых для кодирования кадра (кадров) в кодированной видеопоследовательности. Модуль 72 компенсации движения и модуль 74 внутреннего предсказания также могут использовать синтаксическую информацию для определения информации разделения, которая описывает то, как разделяется каждая CU кадра в кодированной видеопоследовательности (а также то, как разделяются суб-CU). Синтаксическая информация также может включать в себя режимы, указывающие, как кодируется каждое разделение (например, внутреннее или внешнее предсказание, а для внутреннего предсказания - режим кодирования с внутренним предсказанием), один или более эталонных кадров (и/или списки ссылок, содержащие идентификаторы для эталонных кадров) для каждой PU с внешним кодированием, и другую информацию для декодирования кодированной видеопоследовательности.
[0097] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, сформированными модулем 72 компенсации движения или модулем 74 внутреннего предсказания, чтобы образовать декодированные блоки. Модуль 79 SAO затем удаляет смещение, привнесенное кодером. Модуль 79 SAO выполняет этот процесс в соответствии с принятым синтаксисом, который указывает информацию о смещении для раздела, например синтаксисом, описанным выше со ссылкой на фиг. 7A-D.
[0098] Если принимается команда слияния, то модуль 79 SAO копирует информацию о смещении в текущий раздел из соседнего раздела, указанного индексом 3 соседнего раздела (см. фиг. 7A).
[0099] Если принимается первая команда предсказания (pred_type 0), то модуль 79 SAO копирует тип смещения в текущий раздел из соседнего раздела, указанного индексом 7 соседнего раздела (см. фиг. 7B). К тому же модуль 79 SAO добавляет принятые остаточные значения 9 смещения к значениям смещения индекса соседнего раздела, указанного индексом 7 соседнего раздела, чтобы восстановить значения смещения для текущего раздела (см. фиг. 7B).
[0100] Если принимается вторая команда предсказания (pred_type 1), то модуль 79 SAO использует принятые тип 11 смещения и значения 13 смещения в качестве информации о смещении для текущего раздела (см. фиг. 7C).
[0101] Если принимается третья команда предсказания (pred_type 2), то модуль 79 SAO копирует в текущий раздел значения смещения из соседнего раздела, указанного индексом 7 соседнего раздела (см. фиг. 7D). К тому же модуль 79 SAO использует принятый тип 11 смещения в качестве типа смещения для текущего раздела.
[0102] При желании также можно применить фильтр уменьшения блочности для фильтрации декодированных блоков, чтобы удалить артефакты блочности. Дополнительная фильтрация также может применяться либо внутри цикла, либо после цикла. Декодированные видеоблоки затем сохраняются в буфере 82 эталонных кадров, который предоставляет эталонные блоки для последующей компенсации движения, а также создает декодированное видео для представления на устройстве отображения (например, устройстве 32 отображения из фиг. 4). Если применяется фильтрация внутри цикла, то декодированные видеоблоки, сохраненные для последующей компенсации движения, являются отфильтрованными блоками, а если применяется фильтрация после цикла, то декодированные видеоблоки, сохраненные для последующей компенсации движения, являются нефильтрованными блоками.
[0103] Фиг. 9 - блок-схема алгоритма, иллюстрирующая примерный способ кодирования видео с использованием адаптивного смещения выборок. Способ из фиг. 9 описывается с точки зрения видеокодера 20, показанного на фиг. 5, хотя методики из фиг. 9 могут выполнять и другие устройства. Как показано на фиг. 9, видеокодер 20 может конфигурироваться для кодирования значений адаптивного смещения выборок в процессе кодирования видео. Видеокодер 20 может определить информацию о смещении для текущего раздела (этап 120) и сравнить информацию о смещении текущего раздела с информацией о смещении одного или более соседних разделов (этап 122). Информация о смещении может включать в себя тип смещения и значения смещения. Видеокодер 20 кодирует команду слияния в случае, когда информация о смещении одного из упомянутых одного или более соседних разделов является такой же, как информация о смещении текущего раздела (этап 124). Видеокодер 20 кодирует одну из множества команд предсказания в случае, когда информация о смещении упомянутых одного или более соседних разделов не является такой же, как информация о смещении текущего раздела (этап 126).
[0104] Команда слияния инструктирует декодер скопировать информацию о смещении одного из упомянутых одного или более соседних разделов для текущего раздела. Команда слияния может включать в себя флаг слияния и индекс одного из упомянутых одного или более соседних разделов с такой же информацией о смещении, как и у текущего раздела.
[0105] В одном примере кодирование одной из множества команд предсказания может включать в себя кодирование первой команды предсказания, которая инструктирует декодер получить информацию о смещении для текущего раздела из информации о смещении одного из упомянутых одного или более соседних разделов. Первая команда предсказания может включать в себя индекс одного из упомянутых одного или более соседних разделов и остаточные значения смещения, причем остаточные значения смещения создаются путем вычитания значений смещения текущего раздела из значений смещения одного из упомянутых одного или более соседних разделов. Видеокодер 20 может кодировать первую команду предсказания в случае, когда эффективности по скорости передачи битов можно достичь путем отправки остаточных значений смещения.
[0106] В другом примере кодирование одной из множества команд предсказания включает в себя кодирование второй команды предсказания, которая включает в себя информацию о смещении для текущего раздела. Видеокодер 20 может кодировать вторую команду предсказания в случае, когда никакой эффективности по скорости передачи битов нельзя достичь путем отправки остаточных значений смещения.
[0107] В другом примере кодирование одной из множества команд предсказания включает в себя кодирование третьей команды предсказания, которая включает в себя индекс одного из упомянутых одного или более соседних разделов, из которого нужно копировать значения смещения, а также включает в себя тип смещения для текущего раздела.
[0108] Фиг. 10 - блок-схема алгоритма, иллюстрирующая примерный способ декодирования видео с использованием адаптивного смещения выборок. Способ из фиг. 10 описывается с точки зрения видеодекодера 30, показанного на фиг. 8, хотя методики из фиг. 10 могут выполнять и другие устройства. Как показано на фиг. 10, видеодекодер 30 может конфигурироваться для декодирования значений адаптивного смещения выборок в процессе декодирования видео. Видеодекодер может конфигурироваться для приема команды слияния или одной из множества команд предсказания для текущего раздела (этап 130). Видеодекодер конфигурируется для копирования информации о смещении из соседнего раздела в текущий раздел в случае, когда принята команда слияния (этап 132). Команда слияния включает в себя флаг слияния и индекс соседнего раздела. Информация о смещении может включать в себя тип смещения и значения смещения.
[0109] Видеодекодер также конфигурируется для выполнения процесса предсказания смещения для текущего раздела в случае, когда принята одна из множества команд предсказания (этап 134).
[0110] Множество команд предсказания может включать в себя первую, вторую и третью команду предсказания. В случае, когда принята первая команда предсказания, процесс предсказания смещения получает информацию о смещении для текущего раздела из информации о смещении одного из упомянутых одного или более соседних разделов. Первая команда предсказания может включать в себя индекс одного из упомянутых одного или более соседних разделов и остаточные значения смещения. Видеодекодер 20 получает значения смещения для текущего раздела путем добавления значений смещения упомянутого одного соседнего раздела к остаточным значениям смещения.
[0111] В случае, когда принята вторая команда предсказания, видеодекодер 20 также принимает информацию о смещении. Принятая информация о смещении используется для текущего раздела.
[0112] В случае, когда принята третья команда предсказания, видеодекодер 20 также принимает индекс одного из упомянутых одного или более соседних разделов, из которого нужно копировать значения смещения, а также принимает тип смещения. Видеодекодер 20 выполняет процесс предсказания смещения путем получения информации о смещении для текущего раздела путем копирования значений смещения из упомянутого одного соседнего раздела для текущего раздела и путем назначения текущему разделу принятого типа смещения.
[0113] В одном или более примерах описываемые функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их сочетании. Если они реализованы в программном обеспечении, то функции могут храниться или передаваться в виде одной или более команд либо кода на компьютерно-читаемом носителе и исполняться аппаратным модулем обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые запоминающие носители, которые соответствуют материальному носителю, такому как запоминающие носители данных, или средства связи, включающие в себя любой носитель, который способствует переносу компьютерной программы из одного места в другое, например, в соответствии с неким протоколом связи. Таким образом, компьютерно-читаемые носители в целом могут соответствовать (1) материальным компьютерно-читаемым запоминающим носителям, которые не изменяются со временем, или (2) средству связи, такому как сигнал или несущая. Запоминающие носители данных могут быть любыми доступными носителями, к которым можно осуществлять доступ с помощью одного или более компьютеров либо одного или более процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в данном раскрытии изобретения. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0114] В качестве примера, а не ограничения, такие компьютерно-читаемые запоминающие носители могут содержать RAM, ROM, EEPROM, компакт-диск или другой накопитель на оптических дисках, накопитель на магнитных дисках или других магнитных запоминающих устройств, флэш-память либо любой другой носитель, который может использоваться для хранения нужного программного кода в виде команд или структур данных, и к которому можно осуществлять доступ с помощью компьютера. Также любое соединение корректно называть компьютерно-читаемым носителем. Например, если команды передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например инфракрасная, радио и микроволновая, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например инфракрасная, радио и микроволновая, включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы или другие кратковременные носители, а вместо этого ориентированы на долговременные, материальные запоминающие носители. Термин «диск» при использовании в данном документе включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также следует включить в область компьютерно-читаемых носителей.
[0115] Команды могут исполняться одним или более процессорами, например одним или более цифровыми процессорами сигналов (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми пользователем логическими матрицами (FPGA) или другими эквивалентными интегральными либо дискретными логическими схемами. Соответственно, термин "процессор" при использовании в данном документе может относиться к любой вышеупомянутой структуре или к любой другой структуре, подходящей для реализации описанных в этом документе методик. К тому же в некоторых особенностях функциональные возможности, описанные в этом документе, могут быть предоставлены в специализированных аппаратных и/или программных модулях, сконфигурированных для кодирования и декодирования, или встроены в объединенный кодек. Также методики можно было бы полностью реализовать в одной или более схемах или логических элементах.
[0116] Методики из данного раскрытия изобретения могут быть реализованы в широком спектре устройств или аппаратуры, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, набор микросхем). Различные компоненты, модули или блоки описываются в данном раскрытии изобретения для подчеркивания функциональных особенностей устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требуют реализации с помощью разных аппаратных модулей. Точнее, как описано выше, различные модули могут объединяться в аппаратный модуль кодека или предоставляться совокупностью взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0117] Описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.