×
20.02.2016
216.014.d12b

ОБЪЕДИНЕННАЯ СТРУКТУРА ДЛЯ СХЕМ ДЕЛЕНИЯ КАРТИНКИ

Вид РИД

Изобретение

Юридическая информация Свернуть Развернуть

Авторы

Правообладатели

Краткое описание РИД Свернуть Развернуть
Аннотация: Изобретение относится к видеокодированию. Техническим результатом является упрощение видеокодирования за счет сокращения количества битов, о которых видиокодер сигнализирует. Кодировщик видео может управлять предсказанием в картинке сквозь границы вырезок в пределах картинки. В одном примере первый элемент синтаксиса может управлять предсказанием в картинке сквозь границы вырезок для вырезок картинки. Если предсказание в картинке сквозь границы вырезок разрешено для картинки, то второй элемент синтаксиса может управлять, для отдельных вырезок, разрешено ли предсказание в картинке сквозь границы вырезок для этой вырезки. 4 н. и 19 з.п. ф-лы, 9 ил., 3 табл.
Реферат Свернуть Развернуть

[0001] Эта заявка испрашивает приоритет предварительной заявки на патент США 61/551,862 поданной 26 октября 2011, все содержимое которой включено в настоящее описание по ссылке.

ОБЛАСТЬ ТЕХНИКИ

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

УРОВЕНЬ ТЕХНИКИ

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

[0006] ФИГ. 2A и 2B являются концептуальными диаграммами, иллюстрирующими пример разделения квадродерева, примененного к наибольшей единице кодирования (LCU).

[0007] ФИГ. 3 является концептуальной диаграммой, которая иллюстрирует примерный порядок кодирования, когда картинка разделена на множество ячеек.

[0008] ФИГ. 4 является концептуальной диаграммой, которая иллюстрирует параллельную обработку фронта волны.

[0009] ФИГ. 5 является блок-схемой, иллюстрирующей пример видео кодера, который может реализовать методы, описанные в настоящем раскрытии.

[0010] ФИГ. 6 является блок-схемой, иллюстрирующей пример видео декодера, который декодирует закодированную видео последовательность.

[0011] ФИГ. 7 является последовательностью операций, изображающей примерный способ согласно методам, описанным в настоящем раскрытии.

[0012] ФИГ. 8 является последовательностью операций, изображающей примерный способ согласно методам, описанным в настоящем раскрытии.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

ПОДРОБНОЕ ОПИСАНИЕ

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

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

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

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

[0023] Энтропийные вырезки могут быть подобны вырезкам. Однако, единицы CU в пределах энтропийных вырезок может быть предсказаны сквозь границу вырезки. Энтропийные вырезки также традиционно отличаются от обычных вырезок по их структуре заголовка вырезки. Энтропийные вырезки могут использовать поднабор полей, которые присутствуют в заголовке обычной вырезки, в то же время наследуя недостающие поля из заголовка главной вырезки, которая предшествует энтропийной вырезке в порядке декодирования. Чтобы указать, что энтропийная вырезка должна унаследовать недостающие поля из заголовка главной вырезки, может использоваться элемент синтаксиса, упомянутый в настоящем раскрытии как lightweight_slice_flag. Например, когда этот элемент синтаксиса установлен равным 1, энтропийная вырезка наследует недостающие поля из заголовка главной вырезки.

[0024] Ячейки можно рассматривать как прямоугольные области в пределах картинки, хотя ячейки могут также принимать другие формы. Вырезки могут или пересекать границы ячейки, или вырезки могут быть ограничены тем, чтобы существовать только в пределах ячеек. Чтобы декодировать ячейки, видео декодер может изменить порядок, в котором он декодирует единицы CU, таким образом, что видео декодер декодирует единицы CU в порядке сканирования растра в пределах ячейки. Каждая ячейка может включать в себя множественные вырезки. В некоторых случаях для одной вырезки может быть возможно пересечь границы ячейки, в этом случае вырезка может присутствовать во множественных ячейках. Кроме того, две или более ячеек могут быть обработаны параллельно, если эти две или более ячеек закодированы независимо. Две ячейки рассматриваются как закодированные независимо, если декодирование одной ячейки не полагается на какую-либо информацию, содержавшуюся во второй плитке.

[0025] WPP является методом, с помощью которого картинка может быть разделена на "волны" или "фронты волны", которые являются наборами строк единиц CU в пределах картинки. Картинка может иметь R строк единиц CU и быть разделена на N волн или фронтов волны, таким образом, что для каждого значения X (0<=X <=N), волны, имеющие R%N==X, принадлежат одному и тому же набору (где “%” соответствует оператору взятия модуля). В этом способе видео декодер может декодировать каждый набор волн картинки параллельно. Например, картинка может быть разделена на строки, и каждая из строк может быть идентифицирована значением фронта волны чередующимся образом. Например, первая - третья строки могут быть идентифицированы как значения фронта волны от 0 до 2, соответственно. Четвертая строка может быть затем идентифицирована как значение 0 фронта волны, пятая строка будет идентифицирована как значение 1 фронта волны, шестая строка может быть идентифицирована как значение 2 фронта волны, и т.д.

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

[0027] В настоящее время каждая из этих схем разделения требует, чтобы видео кодер сигнализировал информацию по-разному, так, чтобы видео декодер знал конкретную схему разделения, которая использовалась на стороне видео кодера для картинки. Как используется в настоящем раскрытии, картинка вообще относится к единице видео, которая включает в себя по меньшей мере одну из вырезки, энтропийной вырезки, ячейки, или волны, или некоторой комбинации вырезок, энтропийных вырезок, ячеек и/или волн. Хотя картинка может быть в целом рассматриваться соответствующей одному полному кадру видео данных, картинка может в некоторых случаях включать в себя меньше видео данных, чем полный кадр. Когда настоящее раскрытие относится к картинке, можно предполагать, что единицы CU этой картинки все соответствуют общему временному случаю.

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

[0029] В дополнение к объединению способы настоящего раскрытия могут относится к потенциальным ограничениям при декодировании картинки, которая предсказывается, используя эти схемы разделения. Например, для текущей энтропийной вырезки, если родительская вырезка (то есть вырезка, из которой энтропийная вырезка наследует несигнализированные поля) потеряна, или другая энтропийная вырезка, для которой разрешено предсказание в картинке сквозь две энтропийные вырезки, потеряна, тогда текущая энтропийная вырезка становится бесполезной, поскольку нет достаточной информации, чтобы декодировать энтропийную вырезку. В качестве другого примера, ячейки и WPP, которые сигнализированы отдельно, могут быть инкапсулированы в различных вырезках, и каждая из этих различных вырезок может включать в себя полный заголовок вырезки. Такая сигнализация полного заголовка вырезки для каждой ячейки и WPP может быть ненужным потреблением полосы частот, так как передачи заголовка вырезки однократно может быть достаточным. Могут быть другие недостатки, такие как параметры инициализации CABAC, которые полагаются на типы вырезки, где типы вырезки могут быть не доступны в случаях, когда энтропийная вырезка должна унаследовать тип вырезки, таким образом делая трудным синтаксически разобрать заголовок вырезки такой энтропийной вырезки. Кроме того, в текущей сигнализации заголовка вырезки начальный адрес для вырезки внедрен в заголовке вырезки; однако, удобный доступ к начальному адресу может быть желательным для видео декодера, чтобы обнаружить начало новой закодированной картинки.

[0030] В способах настоящего раскрытия элементы синтаксиса набора параметров последовательности (SPS) и набора параметров картинки (PPS) для ячейки могут быть такими же как для текущих способов, сформулированных в WD8. Для WPP элемент синтаксиса entropy_coding_synchro может быть изменен на 1-битовый флаг, который включен в элементы синтаксиса PPS. Когда значение entropy_coding_synchro равно 0, никакой конкретный процесс синхронизации для переменных контекста не вызывается. Если значение entropy_coding_synchro равно 1, однако, то конкретный процесс синхронизации для переменных контекста может быть вызван. Например, один подпоток фронта волны может быть синхронизирован от конца второй наибольшей единицы кодирования (LCU) в строке выше. Пример этой синхронизации описан ниже.

[0031] В дополнение к изменениям к элементам синтаксиса WPP и ячеек PPS, настоящее раскрытие описывает элемент синтаксиса “short_slice_header_enabled_flag” и элемент синтаксиса “dependent_slice_enabled_flag”, которые могут быть частью синтаксиса PPS. Как будет иллюстрировано ниже со ссылками на Таблицу 2 и Таблицу 3, short_slice_header_enabled_flag в PPS может указывать присутствие элемента синтаксиса “slice_id” и элемента синтаксиса “short_slice_header_flag” в заголовке вырезки. Как будет также иллюстрировано ниже со ссылками на Таблицу 2 и Таблицу 3, элемент синтаксиса “dependent_slice_enabled_flag” в PPS может указывать присутствие “slice_boundary_independence_flag” в заголовке вырезки. В целом, способы, описанные в настоящем раскрытии, изменяют синтаксис заголовка вырезки, чтобы поддерживать более короткие заголовки вырезки и указывать возможность разрешить или запретить предсказание в картинке сквозь вырезки для декодирования.

[0032] Элемент синтаксиса “short_slice_header_flag” указывает, что вырезка должна унаследовать недостающие поля от другой вырезки, или возможно от PPS или SPS. Элемент синтаксиса “short_slice_header_flag” может использоваться независимо от того, является ли вырезка, на которую ссылается этот элемент синтаксиса, обычной вырезкой или энтропийной вырезкой. Как описано выше, вырезка или энтропийная вырезка могут являться частью или включать в себя все или часть ячейки или волны.

[0033] Когда short_slice_header_flag для вырезки является истинным (например, имеет значение 1), видео декодер определяет, что эта вырезка включает в себя короткий заголовок вырезки, и все недостающие поля для этого короткого заголовка вырезки должны быть унаследованы из полного заголовка вырезки, или от SPS или PPS, или любой их комбинации. Полный заголовок вырезки может быть новым полным заголовком вырезки, который предшествует текущей вырезке в порядке декодирования.

[0034] В соответствии со способами настоящего раскрытия, полный заголовок вырезки и короткий заголовок вырезки могут быть независимо синтаксически разбираемыми. Другими словами, короткий заголовок вырезки может включать в себя достаточные элементы синтаксиса, чтобы позволить видео декодеру наследовать недостающие поля заголовка. Например, короткий заголовок вырезки может включать в себя начальный адрес вырезки, и также включать в себя ID вырезки, short_slice_header_flag, slice_boundary_independence_flag, параметры инициализации CABAC, и параметр квантования вырезки (QP). slice_boundary_independence_flag может быть новым флагом, введенным в заголовке вырезки, чтобы сигнализировать, разрешается ли предсказание в картинке сквозь вырезки для декодирования (когда значение равно 0), или запрещается (когда значение равно 1). В некоторых примерах начальный адрес вырезки может быть в начале короткого заголовка вырезки, вместо того, чтобы быть внедренным в заголовок. Все другие элементы синтаксиса заголовка вырезки могут присутствовать только в полных заголовках вырезки.

[0035] Способы настоящего раскрытия далее описывают элемент синтаксиса tile_boundary_independence_idc. Когда этот элемент синтаксиса равен 1, видео декодер распознает, что все ячейки являются независимо декодируемыми. Другими словами, чтобы декодировать одну ячейку, видео декодеру нет необходимости полагаться на декодирование любой другой ячейки. Как указано выше, одна ячейка может включать в себя множественные вырезки. Когда элемент синтаксиса tile_boundary_independence_idc равен 1, это означает, что ни одна из вырезок в пределах ячейки не может быть предсказана ни из какой вырезки, которая находится вне ячейки. Кроме того, в некоторых примерах для одной вырезки может быть возможно охватить больше чем одну ячейку. Когда элемент синтаксиса tile_boundary_independence_idc равен 1, это означает, что никакая вырезка в пределах ячейки не простирается вне границы этой ячейки. Кроме того, когда элемент синтаксиса tile_boundary_independence_idc равен 1, видео декодер может конфигурировать себя, чтобы декодировать ячейки параллельно, так как каждая ячейка является независимо декодируемой.

[0036] С этой структурой обычные вырезки (то есть родительские вырезки), короткие вырезки (вырезки с короткими заголовками вырезки), энтропийные вырезки, фронты волны и ячейки могут быть поддержаны в гармонии друг с другом. В этой структуре ячейки только определяют LCU, порядок декодирования. Когда независимо декодируемые ячейки являются желательными, каждая из них является вложенной в независимо декодируемую вырезку. Аналогично, каждая волна WPP инкапсулирована в независимо декодируемую вырезку. Сигнализация точек входа для ячеек или волн WPP не является необходимой в этом случае, так как вырезка не пересекает границы ячейки или волны. Энтропийные вырезки поддерживаются, просто разрешая предсказание в картинке для операций декодирования, устанавливая slice_boundary_independence_flag равным 0.

[0037] Согласно способам настоящего раскрытия, подпотоки фронта волны упорядочиваются на основании своего начального адреса LCU таким образом, что подпотоки фронта волны находятся в порядке, что декодер, который не использует параллельное декодирование, может декодировать поток битов. Другими словами, порядок потока битов LCU находится в порядке сканирования картинок LCU (сканирование растра LCU), который сохраняет причинную связь потока битов.

[0038] Помимо объединения различных схем деления картинки, настоящее раскрытие может также улучшить другие упомянутые выше проблемы. Например, согласно способам настоящего раскрытия, начальный адрес вырезки перемещается вперед в заголовке вырезки. В качестве другого примера присутствие параметра инициализации CABAC, cabac_init_idc, больше не зависит от slice_type, который не присутствует в коротком заголовке вырезки, и таким образом короткий заголовок вырезки сам может быть синтаксически разобран.

[0039] ФИГ. 1 является блок-схемой, иллюстрирующей примерную 10 систему кодирования и декодирования видео, которая может использовать способы для кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видео данных. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое передает закодированное видео к устройству 14 назначения через канал 16 связи. Исходное устройство 12 и устройство 14 назначения могут содержать любое из широкого диапазона устройств. В некоторых случаях исходное устройство 12 и устройство 14 назначения могут содержать устройства беспроводной связи, такие как беспроводные телефонные трубки, так называемые сотовые или спутниковые радиотелефоны, или любые беспроводные устройства, которые могут передавать видео информацию по каналу 16 связи, когда канал 16 связи является беспроводным.

[0040] Способы настоящего раскрытия, однако, которые касаются кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видео данных, не обязательно ограничены беспроводными приложениями или параметрами настройки. Например, эти способы могут относиться к воздушному вещанию телевидения, передачам кабельного телевидения, передачам спутникового телевидения, интернет-передачам видео, закодированному цифровому видео, которое закодировано на носитель данных, или другим сценариям. Соответственно, канал 16 связи может содержать любую комбинацию беспроводного или проводного носителя, подходящего для передачи закодированных видео данных. Кроме того, канал 16 связи предназначен, чтобы представить только одного из многих путей, которыми устройство кодирования видео может передать данные к устройству декодирования видео. Например, в других конфигурациях системы 10, исходное устройство 12 может генерировать закодированное видео для декодирования устройством 14 назначения и сохранить закодированное видео на носителе данных или файл-сервере, так что к закодированному видео может получить доступ устройство 14 назначения как требуется.

[0041] В примере согласно фиг. 1 исходное устройство 12 включает в себя видео источник 18, видео кодер 20, модулятор/демодулятор (модем) 22 и передатчик 24. Устройство 14 назначения включает в себя приемник 26, модем 28, видео декодер 30, и устройство 32 отображения. В соответствии с этим раскрытием видео кодер 20 из исходного устройства 12 может быть сконфигурирован, чтобы применять способы для кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видео данных. В других примерах исходное устройство и устройство назначения могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принять видео данные из внешнего видео источника 18, такого как внешняя камера. Аналогично, устройство 14 назначения может взаимодействовать с внешним устройством отображения, вместо включения интегрированного устройства отображения.

[0042] Иллюстрированная система 10 согласно фиг. 1 является просто одним примером. Способы для кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видео данных, могут быть выполнены любым устройство цифрового кодирования и/или декодирования видео. Хотя в целом способы настоящего раскрытия выполняются устройством кодирования видео, способы могут также быть выполнены кодером/декодером видео, типично называемым "кодек". Кроме того, способы настоящего раскрытия могут также быть выполнены препроцессором видео. Исходное устройство 12 и устройство 14 назначения являются просто примерами таких устройств кодировки, в которых исходное устройство 12 генерирует закодированные видео данные для передачи к устройству 14 назначения. В некоторых примерах устройства 12, 14 могут работать по существу симметричным образом таким образом, что каждое из устройств 12, 14 включают в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видео устройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, вещания видео или видео телефонии.

[0043] Видео источник 18 из исходного устройства 12 может включать в себя устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео, и/или подачу видео от поставщика видео контента. В качестве дальнейшей альтернативы, видео источник 18 может генерировать основанные на компьютерной графике данные в качестве исходного видео, или комбинацию живого видео, заархивированного видео, и генерируемого компьютером видео. В некоторых случаях, если видео источник 18 является видео камерой, исходное устройство 12 и устройство 14 назначения может сформировать так называемые камерофоны или видео телефоны. Как упомянуто выше, однако, способы, описанные в настоящем раскрытии, могут быть применимыми к кодированию видео вообще, и могут быть применены к беспроводным и/или проводным применениям. В каждом случае захваченное, предзахваченное или генерируемое компьютером видео может быть закодировано видео кодером 20. Закодированная видео информация может затем модулироваться модемом 22 согласно стандарту связи, и передана к устройству 14 назначения через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включая усилители, фильтры, и одну или более антенн.

[0044] Приемник 26 из устройства 14 назначения принимают информацию по каналу 16, и модем 28 демодулирует информацию. Снова, процесс кодирования видео может реализовать один или более способов, описанных в настоящем описании, для кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видео данных. Информация, переданная по каналу 16, может включать в себя информацию синтаксиса, определенную видео кодером 20, которая также используется видео декодером 30, которая включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку макроблоков и других единиц кодированных единиц, например, GOP. Устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое множество устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.

[0045] В примере согласно фиг. 1 канал 16 связи может содержать любой коммуникационный носитель беспроводной или проводной связи, такой как радиочастотный (РЧ) спектр или одну или более физических линий передачи, или любую комбинацию беспроводного и проводного носителя. Канал 16 связи может формировать часть основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Канал 16 связи вообще представляет любой подходящий коммуникационный носитель, или коллекцию различных коммуникационных носителей, для передачи видео данных от исходного устройства 12 к устройству 14 назначения, включая любую подходящую комбинацию проводного или беспроводного носителей. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.

[0046] Снова, ФИГ. 1 является просто примерным, и способы настоящего раскрытия могут относиться к параметрам настройки кодировки видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя любую передачу данных между устройств кодирования и декодирования. В других примерах данные могут быть извлечены из локальной памяти, переданы потоком по сети, или подобное. Устройство кодирования может закодировать и сохранить данные в памяти, и/или устройство декодирования может извлечь и декодировать данные из памяти. Во многих случаях кодирование и декодирование выполняются несвязанными устройствами, которые не обмениваются друг с другом, но просто кодируют данные в память и/или извлекают и декодируют данные из памяти.

[0047] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт высокоэффективного кодирования видео (HEVC), находящегося теперь в развитии, и могут соответствовать Тестовой Модели HEVC (HM). Один проект стандарта HEVC, названный “HEVC Working Draft 4” или “WD4”, описан в документе High-Efficiency Video Coding text specification draft 4” объединенной совместной команды по кодированию видео (JCT-VC) ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG116th Meeting: Torino, IT, 14-22 июля 2011, который тем самым включен ссылкой полностью. Более свежий проект стандарта HEVC, названный “HEVC Working Draft 8” или "WD8", описан в документе JCTVC-J1003, Bross и др., “ JCTVC-J1003, Bross et al., “High efficiency video coding (HEVC) text specification draft 8,” объединенной совместной команды по кодированию видео (JCT-VC) ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 10th Meeting: Стокгольм, SE 11-20 июля 2012, который, на 17 октября 2012, загружаем из http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip, и который включен здесь ссылкой полностью.

[0048] Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширениям таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263. Хотя не показано на фиг. 1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый быть интегрированы с аудио кодером и декодером, и могут включать в себя соответствующие блоки мультиплексоров-демультиплексоров MUX-DEMUX, или другое аппаратное обеспечение и программное обеспечение, чтобы обрабатывать кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексора, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).

[0049] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрированным как часть объединенного кодера/декодера (кодека) в соответствующих камере, компьютере, мобильном устройстве, устройстве абонента, устройстве вещания, телевизионной приставке, сервере, или подобном.

[0050] Видео последовательность типично включает в себя последовательность видео кадров или картинок. Группа картинок (GOP) в целом содержит последовательность из одной или более картинок видео. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовок одного или более кадров GOP, или в другом месте, которое описывает количество кадров, включенных в GOP. Каждый кадр может включать в себя данные синтаксиса кадра, которые описывают режим кодирования для соответствующего кадра. Видео кодер 20 типично оперирует над видео блоками в индивидуальных видео кадрах, чтобы закодировать видео данные. Блок видео может соответствовать макроблоку или разделению макроблока. Видео блоки могут иметь фиксированный или переменный размеры и могут отличаться по размеру согласно указанному стандарту кодирования. Каждый видео кадр может включать в себя множество вырезок. Каждая вырезка может включать в себя множество макроблоков, которые могут быть скомпонованы в разделения, также называемые как субблоки.

[0051] В качестве примера, ITU-T H.264 стандарт поддерживает внутреннее предсказание в различных размерах блока, такой как 16 на 16, 8 на 8, или 4 на 4 для компонентов яркости, и 8x8 для компонентов насыщенности цвета, так же как внешнее предсказание в различных размерах блока, таких как 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 и 4x4 для компонентов яркости и соответствующих масштабированных размеров для компонентов насыщенности цвета. В настоящем раскрытии “NxN” и “N на N” может использоваться взаимозаменяемо, чтобы относится к пиксельным размерностям блока в терминах вертикальных и горизонтальных измерений, например, 16x16 пикселей или 16 на 16 пикселей. Вообще, блок 16x16 будет 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок N x N вообще имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целое значение. Пиксели в блоке могут быть размещены в строках и колонках. Кроме того, блоки не обязательно должны иметь то же количество пикселей в горизонтальном направлении, что и в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где М не обязательно равно N. Размеры блока, которые являются меньшими, чем 16x16, могут называться как разделение макроблока 16x16 в ITU-T H.264.

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

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

[0054] Как введено выше, усилия в настоящее время имеют место, чтобы развить новый стандарт кодирования видео, в настоящее время называемый HEVC. Появляющийся стандарт HEVC может также называться как H.265. Усилия по стандартизации основаны на модели устройства кодирования видео, называемой Тестовая Модель HEVC (HM). HM предполагает несколько возможностей устройств кодирования видео по сравнению с устройствами согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов внутреннего предсказания, HM обеспечивает целых тридцать три режима внутреннего предсказания, например, на основании размера блока, являющегося закодированным внутренним предсказанием.

[0055] HM ссылается на блок видео данных как единицу кодирования (CU). Данные синтаксиса в пределах потока битов могут определять наибольшую единицу кодирования (LCU), которая является наибольшей единицей кодирования в терминах количества пикселей. Вообще, CU имеет аналогичную цель макроблоку H.264, за исключением того, что CU нет различия в размерах. Таким образом, CU может быть разделена на суб-единицы CU. Вообще, ссылки в настоящем раскрытии на CU могут относится к наибольшей единице кодирования картинки или суб-CU в LCU. LCU может быть разделена на суб-единицы CU, и каждая суб-CU может быть разделена на суб-единицы CU. Данные синтаксиса для потока битов могут определять максимальное количество раз, сколько LCU может быть разделена, называемое глубиной CU. Соответственно, поток битов может также определить наименьшую единицу кодирования (SCU). Настоящее раскрытие также использует термин "блок", чтобы ссылаться на любое из CU, единицы предсказания (PU) или единицы преобразования (TU).

[0056] LCU может быть ассоциирована со структурой данных квадродерева. Вообще, структура данных квадродерева включает в себя один узел для каждой CU, где корневой узел соответствует LCU. Если CU разделена на четыре суб-единицы CU, узел, соответствующий CU, включает в себя четыре листовых узла, каждый из которых соответствует одной из суб-единиц CU. Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделена ли CU, соответствующая узлу, в суб-единицы CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU в суб-единицы CU.

[0057] CU, которая не разделена, может включать в себя одну или более единиц предсказания (PU). Вообще, PU представляет всю или часть соответствующей CU, и включает в себя данные для извлечения опорной выборки для PU. Например, когда PU является закодированной в режиме внутреннего предсказания, PU может включать в себя данные, описывающие режим внутреннего предсказания для этой PU. В качестве другого примера, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, пиксельная точность в одну четверть или пиксельная точность в одну восьмую), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для CU, определяющие единицу(ы) PU, могут также описывать, например, разделение CU на одну или более единиц PU. Разделение режимов может отличаться между тем, является ли CU незакодированной, закодированной в режиме внутреннего предсказания, или закодированной в режиме внешнего предсказания.

[0058] CU, имеющая одну или более единиц PU, может также включать в себя одну или более единиц TU. Следуя предсказанию, используя PU, видео кодер может вычислить остаточное значение для части CU, соответствующей единице PU. Набор остаточных значений может быть преобразован, сканирован, и квантован, чтобы определить набор коэффициентов преобразования. TU определяет структуру данных, которая включает в себя коэффициенты преобразования. TU не обязательно ограничена размером PU. Таким образом, единицы TU могут быть большими или меньшими, чем соответствующие PU для той же CU. В некоторых примерах максимальный размер TU может соответствовать размеру соответствующей CU.

[0059] ФИГ. 2A и 2B являются концептуальными диаграммами, иллюстрирующими примерное квадродерево 250 и соответствующую LCU 272. ФИГ. 2A изображает примерное квадродерево 250, которое включает в себя узлы, скомпонованные иерархическим способом. Каждый узел в квадродереве, таком как квадродерево 250, может быть листовым узлом без дочерних, или иметь четыре дочерних узла. В примере согласно фиг. 2A, квадродерево 250 включает в себя корневой узел 252. Корневой узел 252 имеет четыре дочерних узла, включая листовые узлы 256A-256C (листовые узлы 256) и узел 254. Поскольку узел 254 не является листовым узлом, узел 254 включает в себя четыре дочерних узла, которые в этом примере являются листовыми узлами 258A-258D (листовые узлы 258).

[0060] Квадродерево 250 может включать в себя данные, описывающие характеристики соответствующих LCU, таких как LCU 272 в этом примере. Например, квадродерево 250, по его структуре, может описывать разделение LCU в суб-единицы CU. Предположим, что LCU 272 имеет размер 2Nx2N. LCU 272, в этом примере, имеет четыре суб-единицы CU 276A-276C (суб-единицы CU 276) и 274, каждая размером NxN. Суб-CU 274 далее разделена на четыре суб-единицы CU 278A-278D (суб-единицы CU 278), каждая размером N/2xN/2. Структура квадродерева 250 соответствует разделению LCU 272, в этом примере. То есть, корневой узел 252 соответствует LCU 272, листовые узлы 256 соответствуют суб-единицам CU 276, узел 254 соответствует суб-CU 274, и листовые узлы 258 соответствуют суб-единицам CU 278.

[0061] Данные для узлов квадродерева 250 могут описывать, разделена ли CU, соответствующая узлу. Если CU разделена, четыре дополнительных узла могут присутствовать в квадродереве 250. В некоторых примерах узел квадродерева может быть реализован подобный следующему псевдокоду:

quadtree_node {

boolean split_flag(1);

// signaling data

if (split_flag) {

quadtree_node child1;

quadtree_node child2;

quadtree_node child3;

quadtree_node child4;

}

}

Значение split_flag может быть однобитовым значением, представляющим то, разделена ли CU, соответствующая текущему узлу. Если CU не разделена, значение split_flag может быть равно '0', в то время как если CU разделена, значение split_flag может быть равно '1'. Относительно примера квадродерева 250, массив значений флага разделения может быть равен 101000000.

[0062] В некоторых примерах каждая из суб-единиц CU 276 и суб-единиц CU 278 может быть закодированной с внутренним предсказанием, используя один и тот же режим внутреннего предсказания. Соответственно, видео кодер 122 может обеспечить индикацию режима внутреннего предсказания в корневом узле 252. Кроме того, некоторые размеры суб-единиц CU могут иметь множественные возможные преобразования для конкретного режима внутреннего предсказания. Видео кодер 122 может обеспечить индикацию преобразования, чтобы использовать для таких суб-единиц CU в корневом узле 252. Например, суб-единицы CU размера N/2xN/2 могут иметь множественные возможные преобразования доступными. Видео кодер 122 может сигнализировать преобразование, чтобы использовать в корневом узле 252. Соответственно, видео декодер 128 может определить преобразование для применения к суб-единицам CU 278 на основании режима внутреннего предсказания, сигнализированного в корневом узле 252, и преобразования, сигнализированного в корневом узле 252.

[0063] Также, видео кодер 122 не должен сигнализировать преобразование для применения к суб-единицам CU 276 и суб-единицам CU 278 в листовых узлах 256 и листовых узлах 258, но может вместо этого просто сигнализировать режим внутреннего предсказания и, в некоторых примерах, преобразование для применения к некоторым размерам суб-единиц CU, в корневом узле 252, в соответствии со способами настоящего раскрытия. Таким образом эти способы могут уменьшить накладные расходы сигнализации функций преобразования для каждой суб-CU в LCU, такой как LCU 272.

[0064] В некоторых примерах режимы внутреннего предсказания для суб-единиц CU 276 и/или суб-единиц CU 278 могут быть другими, чем режимы внутреннего предсказания для LCU 272. Видео кодер 122 и видео декодер 130 могут быть сконфигурированы с функциями, которые отображают режим внутреннего предсказания, сигнализированный в корневом узле 252, на доступный режим внутреннего предсказания для суб-единиц CU 276 и/или суб-единиц CU 278. Эта функция может обеспечить отображение "множество - в - один" режимов внутреннего предсказания, доступных для LCU 272 на режимы внутреннего предсказания для суб-единиц CU 276 и/или суб-единиц CU 278.

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

[0066] Энтропийные вырезки могут обеспечить независимо синтаксически разбираемые единицы посредством запрещения использования элементов контекста сквозь вырезки и сброса состояний CABAC в начале каждой энтропийной вырезки, в то же время разрешая предсказание в картинке сквозь вырезки для декодирования. Энтропийные вырезки могут также отличаться от обычных вырезок по структуре их заголовка вырезки. Энтропийные вырезки могут, например, использовать поднабор полей, которые присутствуют в обычном заголовке вырезки, наследуя недостающие поля из главного заголовка вырезки, который предшествует энтропийной вырезке в порядке декодирования. Энтропийная вырезка может быть идентифицирована элементом синтаксиса в ее заголовке вырезки. Например, энтропийная вырезка может иметь элемент синтаксиса lightweight_slice_flag заголовка вырезки равный 1.

[0067] Ячейки могут обеспечить механизм, чтобы сигнализировать измененный порядок декодирования единиц LCU. В дополнение к упорядочению LCU ячейки могут обеспечить возможности независимого кодирования и декодирования посредством запрещения предсказания в картинке и использования элементов контекста сквозь ячейки.

[0068] Ячейки вообще описывают вертикальные и горизонтальные границы, которые делят картинку на колонки и строки соответственно. Эти границы могут, например, нарушать зависимости кодирования (например, зависимости, ассоциированные с внутренним предсказанием, предсказанием вектора движения, синтаксическим разбором, и т.д.), таким же образом как границы вырезки, если иначе не указано. Области, такие как прямоугольные области, получающиеся из пересекающихся границ колонки и строки называют ячейками (плитками) (отсюда название для способа в целом). Каждая ячейка может содержать целое число единиц LCU. Единицы LCU могут быть обработаны в порядке сканирования растра в пределах каждой ячейки, и сами ячейки могут быть обработаны в порядке сканирования растра в пределах картинки. Границы вырезки могут быть введены кодером и не должны быть совпадающими с границами ячейки. Например, ячейка может содержать больше чем одну вырезку, и вырезки могут содержать больше чем одну ячейку. Когда вырезка содержит единицы LCU в больше чем одной ячейке, то ячейки, содержащие единицы LCU, могут быть смежными. Ячейки T и T+1, как говорят, являются смежными, если первая LCU в T+1 непосредственно следует, в порядке передачи, за последней LCU в T. Далее, ячейки вообще позволяют границам колонки и строки быть заданными с и без однородного интервала.

[0069] ФИГ. 3 является концептуальной диаграммой, которая иллюстрирует примерный порядок кодирования блоков дерева для картинки 300, которая разделена на множественные ячейки 302A, 302B, 302C, 302D, 302E, и 302F (все вместе, “ячейки 302”). Каждый квадратный блок в картинке 300 представляет пиксельный блок, ассоциированный с блоком дерева. Толстые пунктирные линии указывают границы примерной ячейки. Различные типы штриховки соответствуют различным вырезкам. Числа в пиксельных блоках указывают позиции соответствующих блоков дерева (единиц LCU) в порядке кодирования ячейки для картинки 300. Как иллюстрировано в примере согласно фиг. 3, блоки дерева в ячейке 302A кодируются первыми, с последующими блоками дерева в ячейке 302B, с последующими блоками дерева в ячейке 302C, с последующими блоками дерева в ячейке 302D, с последующими блоками дерева в ячейке 302E, с последующими блоками дерева в ячейке 302F. В пределах каждой из ячеек 302, блоки дерева кодируются согласно растровому порядку сканирования.

[0070] Параллельная обработка фронта волны (WPP) может обеспечить множественные подпотоки, которые могут быть синтаксически разобраны и декодированы параллельно (например, полунезависимо), без ограничения предсказания в картинке и использования элементов контекста по подпотокам для волн (строк единиц LCU). В начале каждой волны состояния CABAC могут инициализироваться на основании состояний CABAC верхней строки единиц LCU после декодирования N≥1 единиц LCU.

[0071] ФИГ. 4 является концептуальной диаграммой, которая иллюстрирует параллельную обработку фронта волны. Как описано выше, картинка может быть разделена в пиксельные блоки, каждый из которых является ассоциированным блоком дерева. ФИГ. 4 иллюстрирует пиксельные блоки, ассоциированные с блоками дерева как сетка белых квадратов. Картинка включает в себя строки 450A-450E блока дерева (все вместе, “строки 450 блока дерева”).

[0072] Первым потоком может быть кодирование блоков дерева в строке 450A блока дерева. Одновременно, другие потоки могут кодировать блоки дерева в строках 450B, 450C и 450D блока дерева. В примере согласно фиг. 4, первым потоком является в настоящее время кодирование блока дерева 452A, вторым потоком является в настоящее время кодирование 452B блока дерева, третьим потоком является в настоящее время кодирование 452C блока дерева, и четвертым потоком является в настоящее время кодирование 452D блок дерева. Настоящее раскрытие может ссылаться на блоки 452A, 452B, 452C и 452D дерева все вместе как на “текущие блоки 452 дерева”. Поскольку видео кодер может начать кодировать строку блоков дерева после того, как были закодированы более чем два блока дерева непосредственно более верхней строки, текущие блоки 452 дерева горизонтально смещаются друг от друга на ширины двух блоков дерева.

[0073] В примере согласно фиг. 4, потоки могут использовать данные от блоков дерева, указанных толстыми серыми стрелками, чтобы выполнить внутреннее предсказание или внешнее предсказание для единиц CU в текущем блоке 452 дерева. Потоки могут также использовать данные от одного или более опорных кадров, чтобы выполнить внешнее предсказание для единиц CU. Чтобы закодировать заданный блок дерева, поток может выбрать один или более контекстов CABAC, на основании информации, ассоциированной с ранее закодированными блоками дерева. Поток может использовать один или более контекстов CABAC, чтобы выполнить кодирование CABAC в отношении элементов синтаксиса, ассоциированных с первой CU заданного блока дерева. Если заданный блок дерева не является крайним левым блоком дерева строки, поток может выбрать один или более контекстов CABAC на основании информации, ассоциированной с последней CU блока дерева слева от заданного блока дерева. Если заданный блок дерева является крайним левым блоком дерева строки, поток может выбрать один или более контекстов CABAC на основании информации, ассоциированной с последней CU блока дерева, который находится выше и на два блока дерева справа от заданного блока дерева. Потоки могут использовать данные от последних единиц CU блоков дерева, указанных тонкими черными стрелками, чтобы выбрать контексты CABAC для первых единиц CU текущих блоков 452 дерева.

[0074] Вырезки, энтропийные вырезки, ячейки и WPP - все являются примерами механизмов разделения картинки, чтобы разделить картинку на различные области и генерировать закодированные биты, представляющие различные области. Закодированные биты для различных областей для вырезок и энтропийных вырезок могут быть инкапсулированы в отдельные единицы уровня абстракции сети (NAL), и следовательно, точки входа не обязательно должны быть сигнализированы. Закодированные биты для различных областей для ячеек и волн могут быть инкапсулированы в одну и ту же единицу NAL, будучи далее разделенным на различные вырезки, и точки входа в одной вырезке могут быть сигнализированы в заголовке вырезки.

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

[0076] Чтобы разрешить различным ячейкам или волнам транспортироваться отдельно, ячейки и волны обычно инкапсулированы в различные вырезки, которая каждая включает в себя полные заголовки вырезки. Когда среда передачи является свободной от ошибок, передача одного и того же заголовка вырезки более одного раза может использовать не необходимые биты, и таким образом потенциально уменьшить эффективность кодирования. Дополнительно, присутствие параметра инициализации CABAC (например cabac_init_idc) зависит от параметра slice_type, который может не присутствовать в коротком заголовке вырезки, таким образом потенциально делая короткий заголовок вырезки неспособным к тому, чтобы быть синтаксически разобранным. Дополнительно, в современных исполнениях начальный адрес вырезки может быть глубоко внедрен в заголовок вырезки, что может препятствовать удобному доступу к этому параметру для декодеров, чтобы обнаружить начало новой закодированной картинки во многих сценариях приложения.

[0077] Все элементы синтаксиса SPS и картинки для ячеек могут быть включены в синтаксис SPS и синтаксис PPS. Как описано более подробно ниже, для WPP элемент синтаксиса entropy_coding_synchro может быть 1-битовым флагом, который включен в синтаксис PPS. Когда этот флаг установлен в ИСТИННЫЙ, подпотоки фронта волны могут быть синхронизированы от конца второй наибольшей единицы кодирования в строке выше.

[0078] В дополнение к вышеупомянутым изменениям синтаксиса SPS и PPS для ячеек и WPP, настоящее раскрытие вводит два новых флага в синтаксис PPS. Элемент синтаксиса “short_slice_header_enabled_flag” управляет присутствием элементов синтаксиса slice_id и short_slice_header_flag заголовка вырезки, и элемент синтаксиса “dependent_slice_enabled_flag” управляет присутствием элемента синтаксиса "slice_boundary_independence_flag". В соответствии со способами настоящего раскрытия, синтаксис заголовка вырезки изменен, чтобы поддерживать короткие заголовки вырезки и иметь возможность разрешить или запретить предсказание в картинке сквозь вырезки для декодирования. Короткие заголовки вырезки вообще ссылаются на заголовки вырезки, которые короче чем полные заголовки вырезки.

[0079] Существующий lightweight_slice_flag может быть заменен на short_slice_header_flag, который сигнализирует, используется ли короткий заголовок вырезки для вырезки. Если, например, короткий заголовок вырезки используется (например, когда этот флаг равен 1), все другие элементы синтаксиса заголовка вырезки и структуры синтаксиса заголовка вырезки, которые не включены в короткий заголовок вырезки, могут быть унаследованы из полного заголовка вырезки, такого как полный заголовок вырезки для вырезки, которая предшествует вырезке, которая использует короткий заголовок вырезки в порядке декодирования. Все вырезки, имеющие или полный или короткий заголовок вырезки, могут в некоторой реализации гарантировать независимую синтаксическую разбираемость вырезки.

[0080] Настоящее раскрытие также вводит новый элемент синтаксиса (slice_boundary_independence_flag) для заголовка вырезки для того, чтобы сигнализировать, разрешается ли предсказание в картинке сквозь вырезки для декодирования (например, когда значение равно 0) или запрещается (например, когда значение равно 1) для этой конкретной вырезки. Значение dependent_slice_enabled_flag в PPS может определять присутствие slice_boundary_independence_flag в заголовке вырезки. Например, для картинки значение dependent_slice_enabled_flag может указывать, что предсказание в картинке не разрешено сквозь вырезки этой картинки. Для такой картинки никакие вырезки в картинке не предсказываются, используя информацию, найденную в другой вырезке этой картинки, и соответственно, заголовки вырезки для таких картинок не должны включать в себя элементы синтаксиса “dependent_slice_enabled_flag”.

[0081] В других картинках, однако, значение dependent_slice_enabled_flag может указывать, что предсказание в картинке разрешается сквозь вырезки этой картинки. Когда dependent_slice_enabled_flag указывает, что предсказание в картинке разрешается сквозь вырезки картинки, вырезки могут включать “slice_boundary_independence_flag в заголовок вырезки. Значение slice_boundary_independence_flag в заголовке вырезки может указывать, разрешается ли предсказание в картинке сквозь границы вырезок для вырезки. Таким образом, даже если предсказание в картинке сквозь границы разрешено для вырезок картинки, предсказание в картинке сквозь границы может все еще быть запрещено для некоторых вырезок в картинке.

[0082] Короткие заголовки вырезки могут содержать начальный адрес вырезки, и могут содержать ID вырезки, short_slice_header_flag, slice_boundary_independency_flag, параметр инициализации CABAC, и QP вырезки. Дополнительные элементы синтаксиса заголовка вырезки и структуры синтаксиса могут присутствовать только в полных заголовках вырезки, например. Для вырезки с коротким заголовком вырезки, когда только независимый признак синтаксического разбора (то есть признак энтропийных вырезок) разрешен, то есть, когда slice_boundary_indepenency_flag равен 0, QP вырезки не включены. Когда признак параллельной обработки фронта волны разрешен (то есть, entropy_coding_synchro равен 1), короткий заголовок вырезки может, например, не включать в себя параметр инициализации CABAC.

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

[0084] Когда tile_boundary_independence_idc равен 1, он может сигнализировать независимую декодируемость всех ячеек, когда каждая ячейка может быть закодирована в одну независимо декодируемую вырезку, которая имеет slice_boundary_independence_flag равный 1. Это может обеспечить декодеру возможность знать заранее, чтобы конфигурировать себя для возможной параллельной/независимой обработки ячеек. Однако, tile_boundary_independence_idc может только быть индикацией, поскольку предсказание в картинке через все границы ячейки запрещается независимо декодируемыми границами вырезки.

[0085] С этой структурой обычные вырезки (то есть родительские вырезки), короткие вырезки (вырезки с короткими заголовками вырезки), энтропийные вырезки, фронты волны, и ячейки могут поддерживаться в гармонии друг с другом. В этой структуре ячейки могут в некоторых случаях только определить порядок декодирования LCU. Когда независимо декодируемые ячейки желательны, каждая из них может быть вложена в независимо декодируемую вырезку. Каждая волна WPP может быть инкапсулирована в вырезку. Сигнализация точек входа для ячеек или волн WPP может не быть необходимой. Энтропийные вырезки могут быть поддержаны, просто разрешая предсказание в картинке для операций декодирования посредством установки slice_boundary_independence_flag равным 0.

[0086] Вырезки фронта волны могут быть упорядочены на основании их начального адреса LCU. Например, они могут быть в таком порядке, который декодер, который не использует параллельное декодирование, может декодировать поток битов. Другими словами, порядок обработки LCU может в некоторых случаях исключительно зависеть от ячеек.

[0087] Способы настоящего раскрытия могут служить, чтобы объединить некоторые из различных схем деления картинки, и могут улучшить производительность кодирования. Согласно способам, описанным в настоящем раскрытии, начальный адрес вырезки может быть первым элементом синтаксиса в заголовке вырезки. Дополнительно, присутствие параметра инициализации CABAC (cabac_init_idc) может не обязательно зависеть от slice_type, который не присутствует в коротком заголовке вырезки, и таким образом короткий заголовок вырезки может быть синтаксически разобран.

[0088] Таблица 1 ниже показывает синтаксис SPS для ячеек в соответствии со способами настоящего раскрытия. Видео кодер 20 представляет пример кодировщика видео, сконфигурированного, чтобы генерировать синтаксис SPS в соответствии с Таблицей 1, и видео декодер 30 представляет пример видео декодера, сконфигурированного, чтобы синтаксически разобрать синтаксис PPS в соответствии с Таблицей 1.

Таблица 1
seq_parameter_set_rbsp( ) { Дескриптор
profile_idc u(8)
reserved_zero_8bits /* equal to 0 */ u(8)
level_idc u(8)
seq_parameter_set_id ue(v)
max_temporal_layers_minus1 u(3)
pic_width_in_luma_samples u(16)
pic_height_in_luma_samples u(16)
num_tile_columns_minus1 ue(v)
num_tile_rows_minus1 ue(v)
if (num_tile_columns_minus1 !=0 || num_tile_rows_minus1 !=0) {
tile_boundary_independence_idc u(1)
uniform_spacing_idc u(1)
if (uniform_spacing_idc !=1) {
for (i=0; i<num_tile_columns_minus1 ; i++)
column_width[i] ue(v)
for (i=0; i <num_tile_rows_minus1; i++)
row_height[i] ue(v)
}
}
bit_depth_luma_minus8 ue(v)
bit_depth_chroma_minus8 ue(v)
pcm_bit_depth_luma_minus1 u(4)
pcm_bit_depth_chroma_minus1 u(4)
log2_max_frame_num_minus4 ue(v)
pic_order_cnt_type ue(v)
if(pic_order_cnt_type = = 0)
log2_max_pic_order_cnt_lsb_minus4 ue(v)
else if(pic_order_cnt_type = = 1) {
delta_pic_order_always_zero_flag u(1)
offset_for_non_ref_pic se(v)
num_ref_frames_in_pic_order_cnt_cycle ue(v)
for(i=0; i num_ref_frames_in_pic_order_cnt_cycle; i++)
offset_for_ref_frame[i] se(v)
}
max_num_ref_frames ue(v)
gaps_in_frame_num_value_allowed_flag u(1)
log2_min_coding_block_size_minus3 ue(v)
log2_diff_max_min_coding_block_size ue(v)
log2_min_transform_block_size_minus2 ue(v)
log2_diff_max_min_transform_block_size ue(v)
log2_min_pcm_coding_block_size_minus3 ue(v)
max_transform_hierarchy_depth_inter ue(v)
max_transform_hierarchy_depth_intra ue(v)
chroma_pred_from_luma_enabled_flag u(1)
loop_filter_across_slice_flag u(1)
sample_adaptive_offset_enabled_flag u(1)
adaptive_loop_filter_enabled_flag u(1)
pcm_loop_filter_disable_flag u(1)
cu_qp_delta_enabled_flag u(1)
temporal_id_nesting_flag u(1)
inter_4x4_enabled_flag u(1)
rbsp_trailing_bits( )
}

[0089] Таблица 2 ниже показывает синтаксис PPS для ячеек в соответствии со способами настоящего раскрытия. Видео кодер 20 представляет пример кодировщика видео, сконфигурированного, чтобы генерировать синтаксис PPS в соответствии с Таблицей 2, и видео декодер 30 представляет пример видео декодера, сконфигурированного, чтобы синтаксически разобрать синтаксис PPS в соответствии с Таблицей 2. Как может быть замечено ниже в Таблице 2, элемент синтаксиса “dependent_slice_enabled_flag” присутствует в синтаксисе PPS.

Таблица 2
pic_parameter_set_rbsp( ) { Дескриптор
pic_parameter_set_id ue(v)
seq_parameter_set_id ue(v)
tile_info_present_flag u(1)
if (tile_info_present_flag==1) {
num_tile_columns_minus1 ue(v)
num_tile_rows_minus1 ue(v)
if (num_tile_columns_minus1 !=0 || num_tile_rows_minus1 !=0) {
tile_boundary_independence_idc u(1)
uniform_spacing_idc u(1)
if (uniform_spacing_idc !=1) {
for (i=0; i<num_tile_columns_minus1 ; i++)
column_width[i] ue(v)
for (i=0; i <num_tile_rows_minus1; i++)
row_height[i] ue(v)
}
}
}
entropy_coding_mode_flag u(1)
if(entropy_coding_mode_flag )
entropy_coding_synchro u(1)
num_temporal_layer_switching_point_flags ue(v)
for(i=0; i<num_temporal_layer_switching_point_flags; i++ )
temporal_layer_switching_point_flag[ i ] u(1)
num_ref_idx_l0_default_active_minus1 ue(v)
num_ref_idx_l1_default_active_minus1 ue(v)
pic_init_qp_minus26 /* relative to 26 */ se(v)
constrained_intra_pred_flag u(1)
slice_granularity u(2)
short_slice_header_enabled_flag u(1)
dependent_slice_enabled_flag u(1)
shared_pps_info_enabled_flag u(1)
if(shared_pps_info_enabled_flag)
if(adaptive_loop_filter_enabled_flag)
alf_param( )
if(cu_qp_delta_enabled_flag)
max_cu_qp_delta_depth u(4)
rbsp_trailing_bits( )
}

[0090] Для WPP элемент синтаксиса “entropy_coding_synchro” может быть 1-битовым флагом, включенным в синтаксис PPS. Элемент синтаксиса “entropy_coding_synchro” может задавать, вызывается ли конкретный процесс синхронизации для переменных контекста. Например, если “entropy_coding_synchro” установлен в единицу, конкретный процесс синхронизации для переменных контекста может быть вызван. Элемент синтаксиса entropy_coding_synchro может также задавать, вызывается ли конкретный процесс запоминания для переменных контекста до декодирования CU, где x0 равен (1 <<log2MaxCUSize)*(entropy_coding_synchro), и y0% (1 <<log2MaxCUSize) равен 0.

[0091] Дополнительно, два флага short_slice_header_enabled_flag и dependent_slice_enabled_flag), могут быть добавлены к синтаксису PPS. Эти два флага могут задавать присутствие элементов синтаксиса slice_id, short_slice_header_flag и slice_boundary_independence_flag в заголовках вырезки. Если, например, short_slice_header_enabled_flag или dependent_slice_enabled_flag равен 1, то элемент синтаксиса slice_id может присутствовать в заголовке вырезки. Иначе, элемент синтаксиса slice_id может не присутствовать в заголовке вырезки. Дополнительно, если, например, short_slice_header_enabled_flag равен 1, то short_slice_header_flag может присутствовать в заголовке вырезки. Иначе, short_slice_header_flag может не присутствовать в заголовке вырезки. Дополнительно, если dependent_slice_enabled_flag равен 1, то slice_boundary_independence_flag может присутствовать в заголовке вырезки. Иначе, slice_boundary_independence_flag может не присутствовать в заголовке вырезки.

[0092] Таблица 3 ниже показывает синтаксис заголовка вырезки в соответствии со способами настоящего раскрытия. Видео кодер 20 представляет пример кодировщика видео, сконфигурированного, чтобы генерировать синтаксис заголовка вырезки в соответствии с Таблицей 3, и видео декодер 30 представляет пример видео декодера, сконфигурированного, чтобы синтаксически разобрать синтаксис заголовка вырезки в соответствии с Таблицей 3. Как может быть замечено ниже в Таблице 3, элемент синтаксиса “slice_boundary_independence_flag” присутствует в заголовке вырезки и зависит от элемента синтаксиса “dependent_slice_enabled_flag”. Дополнительно, как может быть замечено из Таблицы 3 ниже, элемент синтаксиса “slice_address” расположен в начале синтаксиса заголовка вырезки и расположен перед элементом синтаксиса “dependent_slice_enabled_flag”.

Таблица 3
slice_header( ) { Дескриптор
slice_address u(v)
if(short_slice_header_enabled_flag||dependent_slice_enabled_flag)
slice_id ue(v)
if(short_slice_header_enabled_flag)
short_slice_header_flag u(1)
if(dependent_slice_enabled_flag)
slice_boundary_independence_flag u(1)
if(!short_slice_header_flag) {
slice_type ue(v)
pic_parameter_set_id ue(v)
frame_num u(v)
if(IdrPicFlag)
idr_pic_id ue(v)
if(pic_order_cnt_type = = 0)
pic_order_cnt_lsb /* u(v)
if(slice_type= =P | | slice_type = = B) {
num_ref_idx_active_override_flag u(1)
if(num_ref_idx_active_override_flag) {
num_ref_idx_l0_active_minus1 ue(v)
if(slice_type = = B)
num_ref_idx_l1_active_minus1 ue(v)
}
}
ref_pic_list_modification( )
ref_pic_list_combination( )
if(nal_ref_idc != 0)
dec_ref_pic_marking( )
}
if(entropy_coding_mode_flag && !(short_slice_header_flag && entropy_coding_synchro) )
cabac_init_idc ue(v)
if(!short_slice_header_flag||slice_boundary_independence_flag){
slice_qp_delta se(v)
if(!short_slice_header_flag) {
if(sample_adaptive_offset_enabled_flag)
sao_param()
if(deblocking_filter_control_present_flag) {
disable_deblocking_filter_idc
if(disable_deblocking_filter_idc != 1) {
slice_alpha_c0_offset_div2
slice_beta_offset_div2
}
}
if(slice_type = = B)
collocated_from_l0_flag u(1)
if(adaptive_loop_filter_enabled_flag) {
if(!shared_pps_info_enabled_flag)
alf_param( )
alf_cu_control_param( )
}
}
}

[0093] Элемент синтаксиса “parameter slice_id” может идентифицировать родительскую вырезку, ассоциированную с вырезкой. Каждая родительская вырезка может иметь уникальное значение slice_id в наборе родительских вырезок закодированной картинки. Если не присутствует, значение slice_id может быть незаданным. Родительская вырезка может состоять из одной или более вырезок той же закодированной картинки с тем же самым значением slice_id. Вырезка с short_slice_header_flag равным 0 и slice_boundary_independency_flag равным 1 может быть родительской вырезкой самой по себе. Если присутствует, значение slice_id родительской вырезки может быть отличным от slice_id другой родительской вырезки той же самой закодированной картинки. Для всех вырезок, принадлежащих одной родительской вырезке, каждый из элементов синтаксиса заголовка вырезки и структур синтаксиса заголовка вырезки, которые не присутствуют, когда short_slice_header_flag равен 1, может быть идентичным.

[0094] Если все вырезки одной родительской вырезки картинки имеют short_slice_header_flag равный 1, каждый из элементов синтаксиса заголовка вырезки и структур синтаксиса заголовка вырезки, которые не присутствуют, когда элемент синтаксиса “short_slice_header_flag” установлен в 1, может быть идентичным для всех вырезок картинки.

[0095] Если параметры short_slice_header_flag установлены в 1, то они могут задавать, что присутствует короткий заголовок вырезки, для которого только поднабор элементов синтаксиса заголовка вырезки присутствует и структура синтаксиса заголовка вырезки не присутствует. Значение 0 может задавать, что все элементы синтаксиса заголовка вырезки и структуры синтаксиса заголовка вырезки присутствуют. Если не присутствует, значение short_slice_header_flag может быть логически выведено, чтобы быть равным 0.

[0096] Для одной закодированной картинки может быть по меньшей мере одна вырезка, которая имеет short_slice_header_flag равный 0. Если параметр slice_boundary_independence_flag равен 1, то он может указывать, что все граничащие блоки дерева, не содержащиеся в пределах той же вырезки, что и декодируемый блок дерева, помечаются как недоступные, и процесс инициализации для энтропийного декодера вызывается при декодировании первого блока дерева в вырезке. Если параметр slice_boundary_independence_flag равен 0, он может указывать, что доступность доступность блоков дерева не затронута границами этой вырезки. Если не присутствует, параметр slice_boundary_independence_flag может быть логически выведен, чтобы быть равным 1. В альтернативном примере все экземпляры “блока дерева”, описанного в вышеупомянутой семантике для slice_boundary_independence_flag, могут быть заменены “закодированным блоком”.

[0097] В некоторых примерах, если параметр entropy_coding_synchro равен 1, то одно или более из следующего может быть применено:

- короткие заголовки вырезки не содержат начальный адрес вырезки, и начальный адрес вырезки выводится. Первая вырезка имеет начальный адрес вырезки, равный 0. Вторая вырезка имеет начальный адрес вырезки, равный количеству единиц LCU в одном ряду LCU. Вторая вырезка имеет начальный адрес вырезки, равный двукратному количеству единиц LCU в одном ряду LCU, и так далее.

- Короткие заголовки вырезки не содержат ID вырезки, и значения ID вырезки выводят, увеличивая на один для каждой вырезки, которая имеет полный заголовок вырезки в порядке декодирования.

- Короткие заголовки вырезки не содержат slice_boundary_independency_flag, и это значение логически выводят, чтобы быть равным 1.

[0098] Нижеследующее описывает примерный процесс выведения для доступности адресов блок дерева. Входом для этого процесса может быть адрес tbAddr блока дерева. Выходом этого процесса может быть доступность tbAddr блока дерева. Значение доступности может быть определено, когда процесс вызывается. Блок дерева может быть отмечен как доступный, до тех пор пока одно из следующих условий не будет верно, в этом случае блок дерева может быть отмечен как не доступный:

- tbAddr<0

- tbAddr>CurrTbAddr

- блок дерева с адресом tbAddr принадлежит отличной родительской вырезке, чем блок дерева с адресом CurrTbAddr

- блок дерева с адресом tbAddr принадлежит отличной вырезке, и вырезка, содержащая блок дерева с адресом CurrTbAddr, имеет slice_boundary_independence_flag равный 1.

[0099] В некоторых примерах все экземпляры “блока дерева” в вышеописанном процессе выведения для доступности адреса блока дерева, включая название, могут быть заменены “закодированным блоком”.

[0100] Возвращаясь к фиг. 1, видео кодер 20 может закодировать некоторые блоки видео данных, используя кодирование в режиме внутреннего предсказания, и предоставить информацию, указывающую выбранный режим внутреннего предсказания, использованный для кодирования блока. Видео кодер 20 может кодировать с внутренним предсказанием блоки любого типа кадра или вырезки, используя режим внутреннего предсказания, например, I-кадры или I-вырезки, в дополнение к P-кадрам или P-вырезкам и B-кадрам или B-вырезкам. Когда видео кодер 20 определяет, что блок должен быть кодирован в режиме внутреннего предсказания, видео кодер 20 может выполнить анализ «скорость передачи - искажение», чтобы выбрать наиболее соответствующий режим внутреннего предсказания. Например, видео кодер 20 может вычислить значения «скорость передачи - искажение» для одного или более режимов внутреннего предсказания, и выбрать один из режимов, имеющих приемлемые характеристики «скорость передачи - искажение».

[0101] Видео кодер 20 может быть также сконфигурирован, чтобы определить контекст кодирования для блока. Контекст может включать в себя различные характеристики блока, такие как, например, размер блока, который может быть определен в терминах пиксельных измерений, тип единицы предсказания (PU), такой как, в примере HEVC, 2Nx2N, Nx2N, 2NxN, NxN, типы внутреннего предсказания на коротком расстоянии (SDIP), такие как 2NxN/2, N/2x2N, 2Nx1, 1x2N, тип макроблока в примере H.264, глубину CU для блока, или других измерений размера для блока видео данных. В некоторых примерах контекст может соответствовать тому, как любой или все из режимов внутреннего предсказания для верхнего соседнего блока, левого соседнего блока, верхнего левого соседнего блока, верхнего правого соседнего блока, или других соседних блоков. В некоторых примерах контекст может включать в себя оба режима внутреннего предсказания для одного или более блоков, а также информацию размеров для текущего кодируемого блока.

[0102] В любом случае, видео кодер 20 может включать в себя данные конфигурации, которые отображают контекст для блока на различные характеристики кодирования для текущего блока. Например, на основании контекста для блока, данные конфигурации могут указывать один или более наиболее вероятных режимов внутреннего предсказания. Видео кодер 20 в некоторых примерах может быть сконфигурирован, чтобы начать анализ для выбора режима внутреннего предсказания с наиболее вероятным режимом, на основании контекста. Когда наиболее вероятный режим достигает подходящих характеристик «скорость передачи - искажение», в некоторых примерах видео кодер 20 может выбрать наиболее вероятный режим. В других примерах видео кодер 20 не должен начать процесс выбора с наиболее вероятного режима.

[0103] После кодирования с внутренним предсказанием или внешним предсказанием, чтобы сформировать предсказывающие данные и остаточные данные, и после любого преобразования (такого как 4x4 или 8x8 целочисленное преобразование, используемое в H.264/AVC или дискретное косинусное преобразование DCT), чтобы сформировать коэффициенты преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления этих коэффициентов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, значение n-bit может быть округлено в меньшую сторону до m-битового значения во время квантования, где n больше чем m.

[0104] После квантования энтропийное кодирование квантованных данных может быть выполнено, например, согласно адаптивному к контенту кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), или другой методологии энтропийного кодирования. Блок обработки, конфигурируемый для энтропийного кодирования, или другой блок обработки, может выполнить другие функции обработки, такие как кодирование длин серий нулей квантованных коэффициентов и/или генерирование информации синтаксиса, такой как значения шаблона кодированных блоков (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для закодированной единицы (такой как кадр, вырезка, макроблок, или последовательность), или подобное.

[0105] Видео декодер 30 может в конечном итоге принять закодированные видео данные, например, из модема 28 и приемника 26. В соответствии со способами настоящего раскрытия, видео декодер 30 может принять закодированные данные, представляющие режим внутреннего предсказания, использованный для кодирования блока видео данных. Видео декодер 30 может быть сконфигурирован, чтобы определить контекст кодирования для блока в способе, по существу подобном видео кодеру 20. Кроме того, видео декодер 30 может включать в себя аналогичные данные конфигурации видео кодеру 20, например, индикации наиболее вероятного режима, таблицы индексов режима внутреннего предсказания, и таблицы VLC для каждого контекста кодирования, и т.д.

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

[0107] ФИГ. 5 является блок-схемой, иллюстрирующей пример видео кодера 20. Видео кодер 20 является примером видео кодера, сконфигурированного, чтобы генерировать элементы синтаксиса, соответствующие Таблице 1, Таблице 2 и Таблице 3 выше. Видео кодер 20 может выполнить внутреннее и внешнее кодирование блоков в пределах видео кадров, включая макроблоки, или разделение или подразделение макроблоков. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров видео последовательности. Режим внутреннего предсказания (I-режим) может относится к любому из нескольких пространственно-основанных режимов сжатия и внешние режимы, такие как однонаправленное предсказание (P-режим), или двунаправленное предсказание (B-режим) могут относиться к любому из нескольких временно-основанных режимов сжатия. Хотя компоненты для режима внешнего кодирования изображены на фиг. 5, нужно подразумевать, что видео кодер 20 может также включать в себя компоненты для режима кодирования с внутренним предсказанием. Однако, такие компоненты не иллюстрированы ради краткости и ясности.

[0108] Как показано на фиг. 5, видео кодер 20 принимает текущий блок видео в пределах видео кадра, который должен быть закодирован. В примере согласно фиг. 5, видео кодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, память 64, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, и модуль 56 энтропийного кодирования. Для реконструкции блока видео кодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования, и сумматор 62. Фильтр удаления блочности (не показан на фиг. 5) также может быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности типично может фильтровать выходной сигнал сумматора 62.

[0109] Во время процесса кодирования видео кодер 20 принимает видео кадр или вырезку, которая должна быть закодирована. Кадр или вырезка могут быть разделены на множественные блоки видео. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого блока видео относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Модуль 46 внутреннего предсказания может выполнить кодирование с внутренним предсказанием принятого блока видео относительно одного или более соседних блоков в том же самом кадре или вырезке, что и блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие.

[0110] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основании результатов ошибки и на основании типа кадра или вырезки для кадра или вырезки, включающих текущий кодируемый блок, и выдает результирующий внутри - или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в опорном кадре или опорной вырезке. Обычно внутреннее предсказание вовлекает предсказание текущего блока относительно соседних ранее закодированных блоков, в то время как внешнее предсказание вовлекает оценку движения и компенсацию движения, чтобы предсказать во времени текущий блок.

[0111] Модуль 42 оценки движения и модуль 44 компенсации движения представляют элементы внешнего предсказания видео кодера 20. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения является процессом генерирования векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать смещение предсказывающего блока в пределах предсказывающего опорного кадра (или другого закодированного блока) относительно текущего блока, закодированного в пределах текущего кадра (или другого закодированного блока). Предсказывающий блок является блоком, который, как обнаружено, близко соответствует блоку, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена как сумма абсолютных разностей (SAD), сумма разности квадратов (SSD), или другие метрики различия. Вектор движения может также указывать смещение разделения макроблока. Компенсация движения может вовлечь установку или генерирование предсказывающего блока на основании вектора движения, определенного посредством оценки движения. Снова, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированными, в некоторых примерах.

[0112] Модуль 42 оценки движения вычисляет вектор движения для блока видео внешне кодированного кадра посредством сравнения блока видео с блоками видео опорного кадра в хранилище 64 опорных кадров. Модуль 44 компенсации движения может также интерполировать суб-целочисленные пиксели опорного кадра, например, I-кадра или P-кадра. Стандарт ITU H.264, в качестве примера описывает два списка: список 0, который включает в себя опорные кадры, имеющие порядок отображения более ранний чем текущий кодируемый кадр, и список 1, который включает в себя опорные кадры, имеющие порядок отображения, более поздний, чем текущий кодируемый кадр. Поэтому, данные, хранящиеся в хранилище 64 опорных кадров, могут быть организованы согласно этим спискам.

[0113] Модуль 42 оценки движения сравнивает блоки из одного или более опорных кадров из хранилища 64 опорных кадров с блоком, который должен быть закодирован текущего кадра, например, P-кадра или B-кадра. Когда опорные кадры в хранилище 64 опорных кадров включают в себя значения для суб-целочисленных пикселей, вектор движения, вычисленный модулем 42 оценки движения, может ссылаться на местоположение суб-целочисленного пикселя опорного кадра. Модуль 42 оценки движения и/или модуль 44 компенсации движения могут также конфигурироваться, чтобы вычислить значения для суб-целочисленных пиксельных позиций опорных кадров, сохраненных в хранилище 64 опорных кадров, если значения для суб-целочисленных пиксельных позиций не сохранены в хранилище 64 опорных кадров. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения. Блок опорного кадра, идентифицированный вектором движения, может называться как предсказывающий блок. Модуль 44 компенсации движения может вычислить данные предсказания на основании блока с внешним предсказанием.

[0114] Модуль 46 внутреннего предсказания может внутренне предсказывать текущий блок, в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего предсказания может определить режим внутреннего предсказания, чтобы использовать для кодирования текущего блока. В некоторых примерах модуль 46 внутреннего предсказания может кодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 46 внутреннего предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из проверенных режимов. Например, модуль 46 внутреннего предсказания может вычислить значения «скорость передачи - искажение», используя анализ «скорость передачи - искажение» для различных проверенных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий лучшие характеристики «скорость передачи - искажение» среди проверенных режимов. Анализ «скорость передачи - искажение» обычно определяет величину искажения (или ошибку) между закодированным блоком и первоначальным незакодированным блоком, который был закодирован, чтобы сформировать закодированный блок, а также частоту следования битов (то есть, количество биты), использованных для формирования закодированного блока. Модуль 46 внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает лучшее значение «скорость передачи - искажение» для блока. В любом случае, после выбора режима внутреннего предсказания для блока, модуль 46 внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для этого блока, к модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания в соответствии со способами настоящего раскрытия.

[0115] После предсказания текущего блока, например, используя внутреннее предсказание или внешнее предсказание, видео кодер 20 может сформировать остаточный блок видео посредством вычитания данных предсказания, вычисленных модулем 44 компенсации движения или модулем 46 внутреннего предсказания, из первоначального закодированного блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, к остаточному блоку, формируя блок видео, содержащий остаточные значения коэффициента преобразования. Модуль 52 обработки преобразования может выполнить другие преобразования, такие как определенные по стандарту H.264, которые концептуально подобны DCT. Вейвлет-преобразования, целочисленные преобразования, преобразования частотных поддиапазонов или другие типы преобразования могут также использоваться. В любом случае, модуль 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовать остаточную информацию из области пиксельных значений в область преобразования, такую как частотная область. Модуль 54 квантования квантует остаточные коэффициенты преобразования, чтобы далее уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством настройки параметра квантования.

[0116] Вслед за квантованием модуль 56 энтропийного кодирования энтропийно кодируют квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнить адаптивное к контенту кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), или другой способ энтропийного кодирования. После энтропийного кодирования модулем 56 энтропийного кодирования закодированное видео может быть передано на другое устройство или заархивировано для более поздней передачи или поиска. В случае контекстно-адаптивного двоичного арифметического кодирования контекст может быть основан на соседних блоках и/или размерах блоков.

[0117] В некоторых случаях модуль 56 энтропийного кодирования или другой модуль видео кодера 20 могут быть сконфигурированы, чтобы выполнить другие функции кодирования, в дополнение к энтропийному кодированию и кодированию режима внутреннего предсказания как описано выше. Например, модуль 56 энтропийного кодирования может быть сконфигурирован, чтобы определить значения шаблона кодированных блоков (CBP) для блоков и разделений. Кроме того, в некоторых случаях модуль 56 энтропийного кодирования может выполнить кодирование длин серий коэффициентов в макроблоке или его разделении. В частности, модуль 56 энтропийного кодирования может применить зигзагообразный просмотр или другой шаблон сканирования, чтобы сканировать коэффициенты преобразования в макроблоке или разделении и закодировать серии нулей для дальнейшего сжатия. Модуль 56 энтропийного кодирования также может построить информацию заголовка с соответствующими элементами синтаксиса для передачи в закодированном видео потоке битов.

[0118] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для более позднего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислить опорный блок посредством суммирования остаточного блока к предсказывающему блоку одного из кадров хранилища 64 опорных кадров. Модуль 44 компенсации движения может также применить один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок к блоку предсказания со скомпенсированным движением, сформированному модулем 44 компенсации движения, чтобы сформировать восстановленный блок видео для сохранения в хранилище 64 опорных кадров. Восстановленный блок видео может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока, чтобы внешне кодировать блок в последующем видео кадре.

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

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

[0121] Фиг. 6 является блок-схемой, иллюстрирующей пример видео декодера 30, который декодирует закодированную видео последовательность. Видео декодер 30 является примером видео декодера, сконфигурированного, чтобы синтаксически разобрать элементы синтаксиса, соответствующие Таблице 1, Таблице 2, и Таблице 3 выше. В примере согласно фиг. 6, видео декодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, память 82 и сумматор 80. Видео декодер 30, в некоторых примерах может выполнять проход декодирования, в целом обратный проходу кодирования, описанному относительно видео кодера 20 (фиг. 5). Модуль 72 компенсации движения может генерировать данные предсказания на основании векторов движения, принятых от модуля 70 энтропийного декодирования.

[0122] Модуль 72 компенсации движения может использовать вектора движения, принятые в потоке битов, чтобы идентифицировать блок предсказания в опорных кадрах в хранилище 82 опорных кадров. Модуль 74 внутреннего предсказания может использовать режимы внутреннего предсказания, принятые в потоке битов, чтобы сформировать блок предсказания из пространственно смежных блоков.

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

[0124] Модуль 74 внутреннего предсказания может использовать индикацию режима внутреннего предсказания, чтобы внутренне предсказывать закодированный блок, например, используя пиксели соседних ранее декодированных блоков. Для примеров, в которых блок является закодированным в режиме внешнего предсказания, модуль 72 компенсации движения может принять информацию, определяющую вектор движения, чтобы извлечь данные предсказания со скомпенсированным движением для закодированного блока. В любом случае модуль 72 компенсации движения или модуль 74 внутреннего предсказания могут предоставить информацию, определяющую блок предсказания, к сумматору 80.

[0125] Модуль 76 обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты блока, предоставленные в потоке битов и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, как определено стандартом H.264 декодирования или как выполняется Тестовой Моделью HEVC. Процесс обратного квантования может также включать в себя использование параметра QPY квантования, вычисленного кодером 20 для каждого макроблока, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено.

[0126] Модуль 58 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области. Модуль 72 компенсации движения формирует блоки со скомпенсированным движением, возможно выполняя интерполяцию, на основании интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, которые должны использоваться для оценки движения с суб-пиксельной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать интерполяционные фильтры, которые используется видео кодером 20 во время кодирования блока видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорного блока. Модуль 72 компенсации движения может определить интерполяционные фильтры, используемые видео кодером 20 согласно принятой информации синтаксиса, и использовать интерполяционные фильтры, чтобы сформировать предсказывающие блоки.

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

[0128] Сумматор 80 суммирует остаточные блоки с соответствующими блоками предсказания, генерируемыми модулем 72 компенсации движения или блоком 74 внутреннего предсказания, чтобы сформировать декодированные блоки. Если желательно, фильтр удаления блочности также может быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Декодированные блоки видео затем сохраняют в хранилище 82 опорных кадров, которой обеспечивает опорные блоки для последующей компенсации движения и также формирует декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения согласно фиг. 1).

[0129] В этом способе видео декодер 30 может быть сконфигурирован, чтобы принять видео данные и синтаксически разобрать синтаксис PPS видео данных, чтобы определить, присутствуют ли короткий заголовок вырезки или полный заголовок вырезки для вырезки. Синтаксический разбор может, например, включать в себя определение значения для идентификации флага, разрешены ли короткие заголовки вырезки. В ответ на имеющийся короткий заголовок вырезки видео декодер 30 может идентифицировать другие элементы синтаксиса заголовка вырезки и другие структуры синтаксиса заголовка вырезки из полного заголовка вырезки, в котором полный заголовок вырезки ассоциирован с вырезкой, которая предшествует этой вырезке в порядке декодирования. Короткий заголовок вырезки может включать в себя одну или более вырезок, начальный адрес, ID вырезки, флаг разрешения короткого заголовка вырезки, флагу независимости от границы вырезки, параметр инициализации CABAC, и QP вырезки. Флаг независимости от границы вырезки может сигнализировать, разрешается ли предсказание в картинке сквозь вырезки для декодирования.

[0130] Видео декодер 30 может быть также сконфигурирован, чтобы принять видео данные и синтаксически разобрать синтаксис PPS видео данных, чтобы определить, присутствует ли флаг независимости от границы вырезки в заголовке вырезки для вырезки. Синтаксический разбор может включать в себя определение значения для флага разрешенной зависимой вырезки.

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

[0132] Различные способы декодирования, описанные со ссылкой на видео декодер 30, могут в некоторых случаях также быть реализованы видео кодером 20. Например, как часть процесса кодирования видео, видео кодер 20 может декодировать закодированное видео.

[0133] ФИГ. 7 является последовательностью операций, иллюстрирующей примерный способ декодирования видео данных согласно способам настоящего раскрытия. В целях примера способ согласно ФИГ. 5 описан относительно видео декодера 30 согласно фиг. 1 и 4, хотя способ также может быть реализован другими типами видео декодеров.

[0134] Видео декодер 30 может принять видео данные (150). В принятых видео данных видео декодер 30 может синтаксически разобрать набор параметров видео данных, чтобы определить, разделена ли текущая картинка в волны или ячейки (152). Когда текущая картинка определена как разделенная на волны или ячейки, видео декодер 30 может определить, разрешено ли предсказание сквозь разделения (154). Если предсказание сквозь разделения не разрешено (154, Нет), то видео декодер 30 может декодировать волны или ячейки параллельно (156). Если предсказание сквозь разделения разрешено (154, Да), то видео декодер 30 может определить точки входа для текущей вырезки в другие разделения (158).

[0135] ФИГ. 8 является последовательностью операций, иллюстрирующей примерный способ кодирования видео данных согласно способам настоящего раскрытия. В целях примера способ согласно ФИГ. 5 описан относительно обычного кодировщика видео. Обычный кодировщик видео может, например, быть видео декодером, таким как видео декодер 30 согласно фиг. 1 и 4 или может быть видео кодером, таким как видео кодер 20 согласно фиг. 1 и 3, хотя способ также может быть реализован другими типами кодировщиков видео.

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

[0137] Если предсказание в картинке не разрешено сквозь вырезки картинки (162, Нет), то кодировщик видео может в некоторых случаях закодировать вырезки картинки независимо (164). Аналогичным образом, как указано выше, когда часть определения предсказания в картинке разрешена сквозь вырезки картинки, кодировщик видео может закодировать элемент синтаксиса. Если кодировщик видео является видео кодером, то кодирование элемента синтаксиса может включать в себя генерирование элемента синтаксиса и установку элемента синтаксиса в значение, которое указывает, что предсказание в картинке разрешается сквозь границы вырезок на картинках. Если кодировщик видео является видео декодером, то видео декодер может закодировать элемент синтаксиса, синтаксически разбирая элемент синтаксиса и определяя, что элемент синтаксиса установлен в значение, указывающее, что предсказание в картинке разрешается сквозь границы вырезок картинок. Таким образом, для первого экземпляра элемента синтаксиса (например, ассоциированного с первой картинкой), первое значение может указывать, что предсказание в картинке разрешается сквозь границы вырезок, в то время как для второго экземпляра элемента синтаксиса (например, ассоциированного со второй картинкой), второе значение элемента синтаксиса может указывать, что предсказание в картинке не разрешено сквозь границы вырезок.

[0138] В случаях, когда предсказание в картинке разрешается сквозь границы вырезок картинки (162, Да), кодировщик видео может определить для конкретной вырезки, разрешается ли предсказание в картинке сквозь границы этой вырезки (166). В качестве части определения, если предсказание в картинке разрешается сквозь границы конкретной вырезки, кодировщик видео может закодировать второй элемент синтаксиса. Если кодировщик видео является видео кодером, то кодирование второго элемента синтаксиса может включать в себя генерирование второго элемента синтаксиса для включения в закодированный поток битов и установку второго элемента синтаксиса в значение, которое указывает, что предсказание в картинке не разрешено сквозь границы вырезок, или установку второго элемента синтаксиса в значение, которое указывает, что предсказание в картинке разрешается сквозь границы вырезок. Если кодировщик видео является видео декодером, то видео декодер может закодировать второй элемент синтаксиса, синтаксически разбирая второй элемент синтаксиса и определяя, что второй элемент синтаксиса установлен в значение, указывающее, что предсказание в картинке не разрешено сквозь границы вырезок, или определяя, что второй элемент синтаксиса установлен в значение, указывающее, что предсказание в картинке разрешается сквозь границы вырезок. Второй элемент синтаксиса, генерируемый или видео кодером или синтаксически разобранный видео декодером, может быть частью заголовка вырезки, и присутствие второго элемента синтаксиса в заголовке вырезки может зависеть от первого элемента синтаксиса в PPS.

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

[0140] Посредством примера, а не ограничения, такие считываемые компьютером запоминающий носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использованным для сохранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии, такие как инфракрасное, радио- и микроволновое излучение, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии, такие как инфракрасное, радио- и микроволновое излучение включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо них относятся к невременным материальным носителям данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитно, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамках считываемого компьютером носителя.

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

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

[0143] Были описаны различные примеры. Эти и другие примеры попадают в рамки следующей формулы изобретения.

Источник поступления информации: Роспатент
+ добавить свой РИД