ГРУППИРОВАНИЕ ЭЛЕМЕНТОВ СИНТАКСИСА С КОДИРОВАНИЕМ В РЕЖИМЕ ОБХОДА В КОДИРОВАНИИ ВИДЕО
SYNTAX ELEMENTS GROUPING WITH CODING IN BYPASS MODE IN VIDEO ENCODING

СВЯЗАННЫЕ ЗАЯВКИ
[0001] По данной заявке испрашивается приоритет:
Предварительной Заявки США № 61/623,004, поданной 11 апреля 2012 г.; и
Предварительной Заявки США № 61/639,836, поданной 27 апреля 2012 г., каждая из которых во всей своей полноте включена в настоящее описание посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Данное изобретение относится к кодированию видео и в частности к методикам кодирования элементов синтаксиса в кодировании видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового непосредственного вещания, системы беспроводного вещания, цифровые персональные помощники (PDA), настольные компьютеры или компьютеры класса лэптоп, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые «интеллектуальные» телефоны, планшетные компьютеры, устройства для видеоконференции, и подобное. Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Визуальный, ITU-T H.262 или ISO/IEC MPEG-2 Визуальный, ITU-T H.263, ISO/IEC MPEG-4 Визуальный и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширения: Масштабируемое Кодирование Видео (SVC) и Многопроекционное Кодирование Видео (MVC). В дополнение, стандарт Высокоэффективного Кодирования Видео (HEVC) является стандартом кодирования видео, который разрабатывается Объединенной Группой по Совместной деятельности в области Кодирования Видео (JCT-VC) Экспертной Группы по Кодированию Видео ITU-T (VCEG) и Экспертной Группой по Кинематографии ISO/IEC (MPEG).
[0004] Методики сжатия видео выполняют пространственное предсказание и/или временное предсказания для сокращения или удаления избыточности присущей видеопоследовательностям. Применительно к основанному на блоке предсказывающему кодированию видео, видео кадр или слайс (slice, вырезка) видео кадра может быть разбита на видео блоки, которые могут именоваться макроблоками или единицами кодирования. Каждый видео блок может быть дополнительно разбит. Видео блоки во внутренне кодированном (intra-coded) (I) кадре или слайсе кодируются при помощи пространственного предсказания по отношению к соседним видео блокам. Видео блоки во внешне кодированном (inter-coded) (P или B) кадре или слайсе могут использовать пространственное предсказание по отношению к соседним видео блокам в том же самом кадре или слайсе или временное предсказание по отношению к другим опорным кадрам.
[0005] Внешне кодированный блок может быть кодирован при помощи вектора движения, который указывает группу опорных отсчетов, использованных для формирования предсказывающего блока. Внутренне кодированный блок может быть кодирован при помощи внутреннего (intra) режима, который указывает на блок опорных отсчетов, использованных для формирования предсказывающего блока. Разность между видео блоком и предсказывающим блоком может именоваться остаточными данными. Для дальнейшего сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Кроме того, квантованные коэффициенты преобразования и предсказывающая информация могут быть энтропийно кодированы для дальнейшего сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом, данное изобретение описывает различные методики для компоновки элементов для видео кодирования с предсказанием. Эти методики могут сократить потери конвейерной обработки, которые могут оказывать влияние на пропускную способность энтропийного кодирования. В одном примере, очередность, в которой элементы синтаксиса кодируются либо в режиме CABAC (Контекстно-Адаптивное Двоичное Арифметическое Кодирование), либо в режиме обхода, может быть оптимизирована. Кодирование в режиме обхода может относиться к арифметическому кодированию бинов (bin), без использования адаптивного контекста. В одном примере, элементы синтаксиса, которые указывают режимы внутреннего предсказания предсказывающих единиц (PU) в пределах единицы кодирования (CU) могут быть сгруппированы вместе на основании того, должны ли они кодироваться в режиме обхода или в режиме CABAC. Данное группирование может сократить общее количество циклов, требуемых для энтропийного кодирования элементов синтаксиса.
[0007] В одном примере, изобретение описывает способ декодирования видеоданных, при этом способ содержит этапы, на которых: принимают энтропийно закодированный битовый поток, который включает в себя первую группу элементов синтаксиса и вторую группу элементов синтаксиса для единиц предсказания (PU) единицы кодирования (CU), при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса, и при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей PU в CU на индексе в список наиболее вероятных режимов; декодируют в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первую группу элементов синтаксиса; вслед за этапом, на котором декодируют в режиме CABAC первую группу элементов синтаксиса, декодируют в режиме обхода вторую группу элементов синтаксиса; и восстанавливают видеоданные на основании декодированной первой группы элементов синтаксиса и декодированной второй группы элементов синтаксиса.
[0008] В другом примере, изобретение описывает аппарат для декодирования видеоданных, причем аппарат содержит декодер видео, выполненный с возможностью: приема энтропийно закодированного битового потока, который включает в себя первую группу элементов синтаксиса и вторую группу элементов синтаксиса для единиц предсказания (PU) единицы кодирования (CU), при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса, и при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей PU в CU на индексе в список наиболее вероятных режимов; декодирования в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первой группы элементов синтаксиса; вслед за декодированием в режиме CABAC первой группы элементов синтаксиса, декодирования в режиме обхода второй группы элементов синтаксиса; и восстановления видеоданных на основании декодированной первой группы элементов синтаксиса и декодированной второй группы элементов синтаксиса.
[0009] В другом примере, изобретение описывает считываемый компьютером носитель данных с хранящимися на нем инструкциями, которые при исполнении, предписывают одному или более процессорам устройства для декодирования видеоданных: принять энтропийно закодированный битовый поток, который включает в себя первую группу элементов синтаксиса и вторую группу элементов синтаксиса для единиц предсказания (PU) единицы кодирования (CU), при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса, и при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей PU в CU на индексе в список наиболее вероятных режимов; декодировать в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первую группу элементов синтаксиса; вслед за декодированием в режиме CABAC первой группы элементов синтаксиса, декодировать в режиме обхода вторую группу элементов синтаксиса; и восстановить видеоданные на основании декодированной первой группы элементов синтаксиса и декодированной второй группы элементов синтаксиса.
[0010] В другом примере, изобретение описывает аппарат для декодирования видеоданных, причем аппарат содержит: средство для приема энтропийно закодированного битового потока, который включает в себя первую группу элементов синтаксиса и вторую группу элементов синтаксиса для единиц предсказания (PU) единицы кодирования (CU), при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса, и при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей PU в CU на индексе в список наиболее вероятных режимов; средство для декодирования в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первой группы элементов синтаксиса; средство для декодирования в режиме обхода второй группы элементов синтаксиса, вслед за декодированием в режиме CABAC первой группы элементов синтаксиса; и средство для восстановления видеоданных на основании декодированной первой группы элементов синтаксиса и декодированной второй группы элементов синтаксиса.
[0011] В другом примере, изобретение описывает способ кодирования видеоданных, причем способ содержит этапы, на которых: генерируют первую группу элементов синтаксиса, при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей единицы предсказания (PU) в единице кодирования (CU) на индексе в список наиболее вероятных режимов; генерируют вторую группу элементов синтаксиса, при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса; кодируют в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первую группу элементов синтаксиса; вслед за этапом, на котором кодируют в режиме CABAC первую группу элементов синтаксиса, кодируют в режиме обхода вторую группу элементов синтаксиса; и выводят видеоданные, которые включают в себя закодированную первую группу элементов синтаксиса и закодированную вторую группу элементов синтаксиса.
[0012] В другом примере, изобретение описывает аппарат для кодирования видеоданных, причем аппарат содержит кодер видео, выполненный с возможностью: генерирования первой группы элементов синтаксиса, при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей единицы предсказания (PU) в единице кодирования (CU) на индексе в список наиболее вероятных режимов; генерирования второй группы элементов синтаксиса, при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса; кодирования в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первой группы элементов синтаксиса; вслед за кодированием в режиме CABAC первой группы элементов синтаксиса, кодирования в режиме обхода второй группы элементов синтаксиса; и вывода видеоданных, которые включают в себя закодированную первую группу элементов синтаксиса и закодированную вторую группу элементов синтаксиса.
[0013] В другом примере, изобретение описывает считываемый компьютером носитель данных с хранящимися на нем инструкциями, которые при исполнении, предписывают одному или более процессорам устройства для кодирования видеоданных: сгенерировать первую группу элементов синтаксиса, при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей единицы предсказания (PU) в единице кодирования (CU) на индексе в список наиболее вероятных режимов; сгенерировать вторую группу элементов синтаксиса, при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса; закодировать в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первую группу элементов синтаксиса; вслед за кодированием в режиме CABAC первой группы элементов синтаксиса, закодировать в режиме обхода вторую группу элементов синтаксиса; и вывести видеоданные, которые включают в себя закодированную первую группу элементов синтаксиса и закодированную вторую группу элементов синтаксиса.
[0014] В другом примере, изобретение описывает устройство для кодирования видеоданных, причем устройство содержит: средство для генерирования первой группы элементов синтаксиса, при этом элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей единицы предсказания (PU) в единице кодирования (CU) на индексе в список наиболее вероятных режимов; средство для генерирования второй группы элементов синтаксиса, при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса; средство для кодирования в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первой группы элементов синтаксиса; средство для кодирования в режиме обхода второй группы элементов синтаксиса, вслед за кодированием в режиме CABAC первой группы элементов синтаксиса; и средство для вывода видеоданных, которые включают в себя закодированную первую группу элементов синтаксиса и закодированную вторую группу элементов синтаксиса.
[0015] Подробности одного или более примеров изложены в сопроводительных чертежах и описании ниже. Прочие признаки, цели, и преимущества станут очевидны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Фиг. 1 является концептуальной схемой, иллюстрирующей примеры структур единицы предсказания и связанных режимов кодирования с внутренним предсказанием.
[0017] Фиг. 2 является структурной схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может быть выполнена с возможностью использования методик в соответствии с данным изобретением.
[0018] Фиг. 3 является структурной схемой, иллюстрирующей пример кодера видео, который может реализовывать методики для кодирования предсказывающих элементов синтаксиса, в соответствии с данным изобретением.
[0019] Фиг. 4 является структурной схемой, иллюстрирующей пример энтропийного кодера, который может реализовывать методики для энтропийного кодирования предсказывающих элементов синтаксиса в соответствии с данным изобретением.
[0020] Фиг. 5 является блок-схемой, иллюстрирующей кодирование предсказывающих элементов синтаксиса в соответствии с методиками данного изобретения.
[0021] Фиг. 6 является структурной схемой, иллюстрирующей пример декодера видео, который может реализовывать методики для декодирования закодированной видеопоследовательности, включающей в себя предсказывающие элементы синтаксиса, в соответствии с данным изобретением.
[0022] Фиг. 7 является структурной схемой, иллюстрирующей пример энтропийного декодера, который может реализовывать методики для энтропийного декодирования предсказывающих элементов синтаксиса, в соответствии с данным изобретением.
[0023] Фиг. 8 является блок-схемой, иллюстрирующей декодирование предсказывающих элементов синтаксиса в соответствии с методиками данного изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0024] Предсказывающие элементы синтаксиса в группе элементов синтаксиса, такие как элементы синтаксиса, которые могут указывать режим внутреннего предсказания для одной или более единиц предсказания, могут быть либо с кодированием в режиме нормального контекстно-адаптивного двоичного арифметического кодирования (CABAC), либо с кодированием в режиме обхода. Очередность, в которой эти предсказывающие элементы синтаксиса принимаются кодером CABAC, может оказывать влияние на общее количество циклов обработки, требуемое для энтропийного кодирования группы элементов синтаксиса. Это может происходить из-за потерь на настройку, которая требуется для перезапуска механизма кодирования в режиме CABAC по мере того как кодирование переходит между кодированием в режиме обхода и кодированием в режиме CABAC. В методиках, описываемых в данном изобретении, эти элементы синтаксиса могут быть скомпонованы таким образом, что общее количество циклов обработки, требуемое для энтропийного кодирования группы элементов синтаксиса, сокращается.
[0025] Например, в некоторых других методиках, применительно к внутреннему предсказанию, кодер видео сигнализирует элементы синтаксиса, которые указывают режим внутреннего предсказания отсчетов яркости и сигнализирует элементы синтаксиса для отсчетов цветности. Некоторые из элементов синтаксиса для отсчетов яркости и некоторые из элементов синтаксиса для отсчетов цветности являются с кодированием в режиме CABAC, а другие элементы синтаксиса для отсчетов яркости и отсчетов цветности являются с кодированием в режиме обхода. В некоторых случаях, элементы синтаксиса с кодированием в режиме CABAC и с кодированием в режиме обхода чередуются, что приводит к неоптимальной пропускной способности энтропийного кодирования из-за потерь конвейерной обработки.
[0026] Например, режим обхода, как правило, обладает много более высокой пропускной способностью, чем режим CABAC. В качестве одного примера, режим обхода может обрабатывать 6 бинов в одном цикле, не внося значительного усложнения в сравнении с режимом обхода, который обрабатывает 1 бин за цикл, тогда как режим CABAC может обрабатывать только 2 бина за цикл при много более сложном исполнении, чем режим CABAC, который обрабатывает 1 бин за цикл. Это происходит из-за природы переключения контекста в режиме CABAC.
[0027] Для увеличения пропускной способности энтропийного кодирования, может быть полезным группировать вместе элементы синтаксиса с кодированием в режиме CABAC и группировать вместе элементы синтаксиса с кодированием в режиме обхода. В качестве одного примера, элементы синтаксиса с кодированием в режиме CABAC и элементы синтаксиса с кодированием в режиме обхода не чередуются друг с другом. Как описывается более подробно, методики, описываемые в данном изобретении, предоставляют различные примерные методики группирования вместе элементов синтаксиса с кодированием в режиме CABAC и вместе элементов синтаксиса с кодированием в режиме обхода, что дает возможность увеличения пропускной способности энтропийного кодирования.
[0028] В качестве одного примера, кодер видео кодирует и сигнализирует в кодированном битовом потоке, а декодер видео принимает и декодирует из кодированного битового потока все бины с кодированием в режиме CABAC внутреннего (интра-) режима яркости и внутреннего режима цветности вместе и все бины с кодированием в режиме обхода внутреннего режима яркости и внутреннего режима цветности вместе. В качестве другого примера, кодер видео кодирует и сигнализирует в кодированном битовом потоке, а декодер видео принимает и декодирует из кодированного битового потока все бины с кодированием в режиме CABAC внутреннего режима для всех блоков в единице кодирования, и все бины с кодированием в режиме обхода внутреннего режима вместе. В качестве другого примера, кодер видео кодирует и сигнализирует в кодированном битовом потоке, а декодер видео принимает и декодирует из кодированного битового потока все бины с кодированием в режиме CABAC внутреннего режима как яркости, так и цветности для всех блоков в единице кодирования, и все бины с кодированием в режиме обхода внутреннего режима яркости и цветности вместе. В некоторых случаях, некоторое количество дополнительной памяти потребуется для хранения частично декодированного синтаксиса для декодера видео.
[0029] Цифровые видео устройства реализуют методики сжатия видео для более эффективного кодирования и декодирования информации цифрового видео. Методики сжатия видео могут быть определены в соответствии со стандартом кодирования видео. Усилия в области стандартизации HEVC основаны на модели устройства кодирования видео, именуемой Тестовая Модель HEVC (HM). HM предполагает улучшения возможностей современных устройств кодирования видео по отношению к устройствам кодирования видео, которые были доступны во время разработки прочих предыдущих стандартов кодирования видео, например, ITU-T H.264/AVC. Например, тогда как стандарт H.264 предоставляет девять режимов кодирования с внутренним предсказанием, HEVC предоставляет целых тридцать пять режимов кодирования с внутренним предсказанием. Последний рабочий Проект (WD) стандарта HEVC, именуемый «HEVC Working Draft 6» или «WD6», описывается в документе JCTVC-H1003, за авторством Бросса и др., «WD6: Working Draft 6 of High-Efficiency Video Coding (HEVC)», Объединенная Группа по Совместной деятельности в области Кодирования Видео (JCT-VC) от ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 8-е Заседание: Сан-Хосе, Калифорния, США, Февраль, 2011.
[0030] Кроме того, другой последний рабочий проект стандарта HEVC, Working Draft 8, описывается в документе HCTVC-J1003_d7, за авторством Бросса и др., «High Efficiency Video Coding (HEVC)
Text Specification Draft 8», Объединенная Группа по Совместной деятельности в области Кодирования Видео (JCT-VC) от ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 10-е Заседание: Стокгольм, Швеция, Июль, 2012. Самый последний рабочий проект стандарта HEVC, Working Draft 9, доступен, по состоянию на 06 марта 2013 г., по ссылке http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v10.zip. Стандарт HEVC также может именоваться ISO/IEC 23008-HEVC, который предназначен в качестве номера стандарта для доставляемой версии HEVC. Несмотря на то, что методики данного изобретения описываются в отношении стандарта ITU-T H.264 и стандарта HEVC, методики данного изобретения в целом применимы к любому стандарту кодирования видео.
[0031] Видеопоследовательность, как правило, включает в себя ряд видео кадров, также именуемых картинками. Группа картинок (GOP), в целом, содержит ряд из одного или более видео кадров. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовке одного или более кадров GOP, или где-то в другом месте, которые описывают количество кадров, включенных в GOP. Каждый кадр может включать в себя данные синтаксиса кадра, которые описывают режим кодирования для соответствующего кадра. Каждый видео кадр может включать в себя множество слайсов. Каждый слайс может включать в себя множество видео блоков. Кодер видео, как правило, оперирует над видео блоками в отдельных видео кадрах для того, чтобы закодировать видеоданные. Видео блоки могут иметь фиксированные или варьирующиеся размеры, и могут отличаться по размеру в соответствии с указанным стандартом кодирования.
[0032] В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее предсказание для различных размеров блока, таких как 16×16, 8×8, или 4×4 для составляющих яркости, и 8×8 для составляющих цветности, как впрочем, и внешнее предсказание для различных размеров блока, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для составляющих яркости и соответствующим образом отмасштабированные размеры для составляющих цветности. В данном изобретении, обозначения «N×N» и «N на N» могут быть использованы взаимозаменяемо для обозначения размеров в пикселях блока в плане вертикального и горизонтального размеров, например, 16×16 пикселей или 16 на 16 пикселей. В целом, 16×16 блок будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Пиксели также могут именоваться отсчетами. Подобно, N×N блок в целом имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет собой не отрицательное целое значение. Пиксели в блоке могут быть скомпонованы в строках и столбцах. Более того, не требуется, чтобы блок обязательно имел такое же количество пикселей в горизонтальном направлении, что и в вертикальном направлении. Например, блок может содержать N×M пикселей, где M не обязательно равно N.
[0033] Видео блоки могут содержать блоки данных пикселя в пиксельной области, или блоки коэффициентов преобразования в области преобразования. Коэффициенты преобразования могут быть сгенерированы вслед за применением преобразования, такого как, дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование, или концептуально подобное преобразование, к остаточным данным видео блока, представляющим собой пиксельные разности между кодированными видео блоками и предсказывающими видео блоками. В некоторых случаях, видео блок может содержать блоки квантованных коэффициентов преобразования в области преобразования.
[0034] Более мелкие видео блоки могут обеспечивать более хорошее разрешение, и могут быть использованы для местоположений видео кадра, которые включают в себя высокие уровни детализации. В целом, блоки и различные элементы разбиения, иногда именуемые суб-блоками, могут рассматриваться в качестве видео блоков. В дополнение, слайс может рассматриваться как множество видео блоков, таких как блоки и/или суб-блоки. Каждый слайс может быть независимо декодируемой единицей видео кадра. В качестве альтернативы, сами кадры могут быть декодируемыми единицами, или иные элементы разбиения кадра могут быть определены в качестве декодируемых единиц. Понятие «кодированная единица» может относиться к любой независимо декодируемой единице видео кадра, такой как весь кадр или слайс кадра, группа картинок (GOP) также именуемая последовательностью, или другая независимо декодируемая единица, которая определена в соответствии с применяемыми методиками кодирования.
n
m
n
m
[0035] Вслед за кодированием с внутренним предсказанием или внешним предсказанием для создания предсказывающих данных и остаточных данных, и вслед за любыми преобразованиями (такими как 4×4 или 8×8 целочисленное преобразование, используемое в H.264/AVC, или дискретное косинусное преобразование DCT) для создания коэффициентов преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование, в целом, относится к процессу, при котором коэффициенты преобразования квантуются с тем, чтобы возможно сократить объем данных, используемых для представления коэффициентов. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми из коэффициентов. Например, -битное значение, может быть округлено в меньшую сторону до -битного значения во время квантования, где  больше .
[0036] Вслед за квантованием, может быть выполнено энтропийное кодирование квантованных данных, например, в соответствии с контекстно-адаптивным кодированием с переменной длиной кодового слова (CAVLC), контекстно-адаптивным двоичным арифметическим кодированием (CABAC), энтропийным кодированием с разбиением интервала вероятности (PIPE), или другой методологией энтропийного кодирования. Также может быть выполнено энтропийное кодирование элементов синтаксиса, такого как элемент синтаксиса, определяющий режим предсказания. Модуль обработки, выполненный с возможностью энтропийного кодирования, или другой модуль обработки, может выполнять другие функции обработки, такие как кодирование длины серий нулей квантованных коэффициентов и/или генерирование информации синтаксиса, такой как значения структуры кодированного блока (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для кодированной единицы (такой как кадр, слайс, макроблок, или последовательность), или подобное.
r
b
[0037] HEVC относится к блоку видеоданных как к единице кодирования (CU). В целом, методики данного изобретения относятся к преобразованию, квантованию, сканированию, и энтропийному кодированию данных CU. CU может включать в себя одну или более единицы предсказания (PU) и/или одну или более единицы преобразования (TU). PU также могут именоваться «элементами разбиения предсказания». Данные синтаксиса в битовом потоке могут определять наибольшую единицу кодирования (LCU), которая является наибольшей единицей кодирования в плане количества пикселей. В целом, LCU имеет аналогичное назначение, что макроблок в H.264. Тем не менее, LCU не обязательно ограничивается конкретным размером и может включать в себя одну или более CU. LCU, как правило, включает в себя 64×64 пикселей. CU в LCU, как правило, включают в себя 32×32, 16×16, или 8×8 пикселей. Таким образом, LCU может быть расщеплена на суб-CU и каждая суб-CU может быть дополнительно расщеплена на суб-CU. Каждый пиксель в CU может включать в себя составляющую яркости (Y), составляющую цветности U (U), и составляющую цветности V (V). В некоторых примерах, составляющие цветности могут именоваться составляющими C и C. В целом, ссылки в данном изобретении на CU могут относиться к наибольшей единице кодирования (LCU) картинки или суб-CU LCU. Данные синтаксиса для битового потока могут определять максимальное количество раз, которое может быть расщеплена LCU, именуемое глубиной CU. Соответственно, данные синтаксиса также могут определять наименьшую единицу кодирования (SCU). Данное изобретение также использует понятие «блок» для обозначения любой из CU, PU, или TU.
[0038] LCU может быть связана со структурой данных квадродерева. В целом, структура данных квадродерева включает в себя один узел из расчета на CU, где корневой узел соответствует LCU. Если CU расщеплена на четыре суб-CU, то узел, соответствующий CU, включает в себя четыре листовых узла, каждый из которых соответствует одной суб-CU. Каждый узел структуры данных квадродерева может предоставлять данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг расщепления, указывающий на то, расщепляется ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, расщепляется ли CU на суб-CU. Если CU более не расщепляется, она именуется листовой-CU. В данном изобретении, четыре суб-CU листовой-CU также будут именоваться листовыми-CU, несмотря на то, что отсутствует явное расщепление исходной листовой-CU. Например, если CU размера 16×16 далее не расщепляется, то четыре 8×8 суб-CU также будут именоваться листовыми-CU, несмотря на то, что 16×16 CU никогда не расщеплялась.
[0039] Более того, TU листовых-CU также могут быть связаны с соответствующими структурами данных квадродерева. Т.е. листовая-CU может включать в себя квадродерево, указывающее на то, каким образом листовая-CU разбита на TU. Данное изобретение обозначает квадродерево, указывающее на то, каким образом разбита LCU, как CU квадродерево, а квадродерево, указывающее на то, каким образом листовая-CU разбита на TU, как TU квадродерево. Корневой узел TU квадродерева, в целом, соответствует листовой-CU, тогда как корневой узел CU квадродерева, в целом, соответствует LCU. TU соответственно TU квадродерева, которые не расщеплены, именуются листовыми-TU.
[0040] Листовая-CU может включать в себя одну или более единицы предсказания (PU). В целом, PU представляет собой всю или часть соответствующей CU, и может включать в себя данные для извлечения опорного отсчета для PU. Например, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четвертую пикселя или точность в одну восьмую пикселя), направление предсказания, которое идентифицирует список опорных картинок (например, список 0 или список 1) для вектора движения, и/или значение индекса опорной картинки, которое указывает опорный кадр в списке опорных картинок, на который указывает вектор движения. Аналогичным образом, когда CU является кодированной в режиме внутреннего предсказания, PU может включать в себя данные, определяющие режим внутреннего предсказания (например, угловое предсказание, DC предсказание, или Планарное предсказание, …, и т.д.).
[0041] Данные для листовой-CU, определяющей PU, могут также описывать, например, разбиение CU на одну или более PU. Разбиение CU на одну или более PU может именоваться режимом разбиения. Режимы разбиения, которые доступны для CU, могут отличаться в зависимости от того, является ли CU незакодированной, закодированной в режиме внутреннего предсказания, или закодированной в режиме внешнего предсказания. Применительно к внутреннему кодированию, PU может рассматриваться так же, как листовая единица преобразования, описываемая ниже.
[0042] Листовая-CU может включать в себя одну или более единицы преобразования (TU). В целом, данное изобретение использует понятие CU и TU для обозначения листовой-CU и листовой-TU, соответственно, до тех пор, пока не упоминается обратное. Единицы преобразования могут быть указаны при помощи структуры TU квадродерева, как рассмотрено выше. Т.е. флаг расщепления может указывать на то, расщепляется ли листовая-CU на четыре единицы преобразования. Затем, каждая единица преобразования может быть дополнительно расщеплена на четыре суб-TU. Когда TU более не расщепляется, она может именоваться листовой-TU. В целом, флаг расщепления может указывать на то, что листовая-TU расщеплена на TU квадратной формы. Для того чтобы указать, что TU расщеплена на TU неквадратной формы, могут быть включены другие данные синтаксиса, например, данные синтаксиса, которые указывают на то, что TU должны быть разбиты в соответствии с NSQT.
[0043] В целом, применительно к внутреннему кодированию, все из листовых-TU, принадлежащих к листовой-CU, могут совместно использовать одинаковый режим внутреннего предсказания. Т.е. одинаковый режим внутреннего предсказания может быть применен для вычисления предсказанных значений для всех TU листовой-CU. Применительно к внутреннему кодированию, кодер видео может вычислять остаточное значение для каждой листовой-TU, использующей режим внутреннего предсказания, как разность между частью предсказывающих значений, соответствующих TU, и исходным блоком. Остаточное значение может быть преобразовано, квантовано, и просканировано, как описано выше. Применительно к внешнему кодированию, кодер видео может выполнять предсказание на уровне PU и может вычислять остаток для каждой PU. Остаточные значения, соответствующие листовой-CU, могут быть преобразованы, квантованы, и просканированы. Применительно к внешнему кодированию, листовая-TU может быть больше или меньше PU. Применительно к внутреннему кодированию, PU может быть соотнесена с соответствующей листовой-TU. В некоторых примерах, максимальный размер листовой-TU может быть размером соответствующей листовой-CU.
[0044] В стандарте HEVC, количество режимов внутреннего предсказания, используемых для генерирования предсказывающего блока для CU, определяется посредством структуры PU. Структура PU INTRA_2N×2N указывает, что CU включает в себя лишь одну PU. Структура PU INTRA_N×N указывает, что CU включает в себя четыре PU. Кроме того, каждая PU в CU может иметь один режим внутреннего предсказания яркости и PU в CU могут совместно использовать один режим предсказания цветности. Например, CU со структурой PU INTRA_2N×2N может иметь один режим внутреннего предсказания яркости и один режим внутреннего предсказания цветности. Кроме того, CU со структурой PU INTRA_N×N может иметь четыре режима внутреннего предсказания яркости (т.е. один для каждой PU) и один режим внутреннего предсказания цветности для всей CU (т.е. четыре PU совместно используют режим предсказания цветности). Элементы синтаксиса могут быть сгенерированы для сигнализации режимов внутреннего предсказания.
[0045] Фиг. 1 является концептуальной схемой, иллюстрирующей примеры структур единицы предсказания и связанные режимы кодирования с внутренним предсказанием. Как иллюстрируется на Фиг. 1, структура единицы предсказания (PU) INTRA_2N×2N включает в себя только одну PU, а структура PU INTRA_N×N включает в себя четыре PU. Как иллюстрируется на Фиг. 1, структура PU INTRA_N×N является симметричной и включает в себя четыре квадратных PU одинакового размера. Как описано выше, каждая из четырех PU, проиллюстрированных на Фиг. 1, может иметь внутреннее предсказание яркости и совместно использовать внутреннее предсказание цветности. Следует отметить, что стандарт HEVC определяет другие структуры PU для использования с предсказаниями внешнего режима. Некоторые из этих PU являются несимметричными и/или включают в себя прямоугольные PU. Несмотря на то, что методики данного изобретения описываются в отношении структуры PU INTRA_2N×2N и структуры PU INTRA_N×N, методики, в целом, применимы к дополнительным структурам PU, которые могут быть использованы с режимами внутреннего предсказания. Например, методики данного изобретения могут быть применены в случае, когда структура PU из четырех прямоугольных PU связана с режимом кодирования с внутренним предсказанием.
[0046] Как описано выше, когда CU является кодированной при помощи режима внутреннего предсказания, то могут быть использованы элементы синтаксиса для сигнализации режимов внутреннего предсказания. В некоторых примерах, три элемента синтаксиса используются для сигнализации режима внутреннего предсказания яркости для PU и один элемент синтаксиса используется для сигнализации режима внутреннего предсказания цветности. Элементы синтаксиса показаны в Таблице 1 жирным шрифтом.
Таблица 1
prev_intra_luma_pred_flag[x0][y0]
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0]
Else
rem_intra_luma_pred_mode[x0][y0]
intra_chroma_pred_mode[x0][y0]
[0047] Элементы синтаксиса prev_intra_luma_pred_flag[x0] [y0], mpm_idx[x0][y0] и rem_intra_luma_pred_mode[x0] [y0] указывают режим внутреннего предсказания для отсчетов яркости. Индексы массива x0, y0 указывают местоположение верхнего левого отсчета яркости блока предсказания по отношению к верхнему левому отсчету яркости картинки. Элемент синтаксиса prev_intra_luma_pred_flag[x0][y0] указывает истинное или ложное условие и может иметь значение 1 или 0. В одном примере, когда prev_intra_luma_pred_flag[x0][y0] равен 1, режим внутреннего предсказания для текущей PU логически выводится из соседней PU с внутренним предсказанием.
[0048] Например, как указано в Таблице 1, если prev_intra_luma_pred_flag[x0][y0] равен 1, то кодер видео сигнализирует в закодированном битовом потоке, а декодер видео принимает из закодированного битового потока элемент синтаксиса mpm_idx[x0][y0]. mpm_idx[x0][y0 ] является индексом в спискок наиболее вероятных режимов (mpm). Например, кодер видео и декодер видео каждый может быть выполнен с возможностью построения списка наиболее вероятных режимов. Список наиболее вероятных режимов идентифицирует режимы внутреннего предсказания.
[0049] Декодер видео может строить список наиболее вероятных режимов неявным образом (т.е. не принимая сигнализации от кодера видео, указывающей на то, какие режимы внутреннего предсказания должны быть включены в список наиболее вероятных режимов) или может строить список наиболее вероятных режимов на основании принятой сигнализации от кодера видео. В любом примере, список наиболее вероятных режимов на стороне кодера видео и список наиболее вероятных режимов на стороне декодера видео могут идентифицировать одинаковые режимы внутреннего предсказания, и в одинаковой очередности. В некоторых примерах, кодер видео и декодер видео может строить список наиболее вероятных режимов для каждой PU с внутренним предсказанием CU, и список наиболее вероятных режимов для двух или более PU CU может быть разным (т.е. могут существовать соответствующие списки наиболее вероятных режимов для PU CU). Тем не менее, методики, описываемые в данном изобретении, этим не ограничиваются.
[0050] Могут существовать различные способы, посредством которых кодер видео и декодер видео могут строить список наиболее вероятных режимов. В качестве одного примера, кодер видео и декодер видео выполнены с возможностью идентификации фиксированного количества режимов внутреннего предсказания в списке наиболее вероятных режимов (т.е. идентификации трех режимов внутреннего предсказания). Кодер видео и декодер видео оценивают режим внутреннего предсказания первой соседней PU, которая соседствует с текущей PU (например, PU в отношении которой выполняется внутреннее предсказание) и второй соседней PU, которая соседствует с текущей PU. Примеры первой и второй соседних PU включают в себя левую, верхнюю левую, правую, нижнюю, и, в целом, любую соседнюю PU.
[0051] Кодер видео и декодер видео включают режимы внутреннего предсказания первой и второй соседних PU в список наиболее вероятных режимов. Если одна или обе из первой и второй соседних PU не являются с внутренним предсказанием, кодер видео и декодер видео может идентифицировать DC режим внутреннего предсказания, в качестве одного примера, в списке наиболее вероятных режимов в соответствующих местоположениях в списке наиболее вероятных режимов для первой и второй соседних PU.
[0052] Для определения третьего режима внутреннего предсказания в списке режимов внутреннего предсказания, кодер видео и декодер видео могут определять, являются ли режимы внутреннего предсказания для первой и второй соседних PU одинаковыми (включая то, был ли выбран DC режим внутреннего предсказания, если они не являются с внутренним предсказанием). Если режимы внутреннего предсказания для первой и второй соседних PU одинаковые, кодер видео и декодер видео может реализовывать первую методику для идентификации третьего режима внутреннего предсказания в списке режимов внутреннего предсказания. В некоторых примерах, если режимы внутреннего предсказания для первой и второй соседних PU одинаковые, кодер видео и декодер видео может идентифицировать один из режимов внутреннего предсказания в списке наиболее вероятных режимов и идентифицировать второй и третий режимы внутреннего предсказания в списке наиболее вероятных режимов при помощи первой методики (или другой методики, отличной от первой методики). Если режимы внутреннего предсказания для первой и второй соседних PU разные, кодер видео и декодер видео может реализовывать вторую методику для идентификации третьего режима внутреннего предсказания.
[0053] Могут существовать различные примеры первой и второй методик для идентификации третьего режима внутреннего предсказания, и методики, описываемые в данном изобретении, не ограничиваются какой-либо одной конкретной методикой. В некоторых примерах, третий режим внутреннего предсказания, основанный либо на первой, либо на второй методике, не обязательно должен быть режимом внутреннего предсказания соседней PU. В некоторых примерах, третий режим внутреннего предсказания, основанный либо на первой, либо на второй методике, может быть основан на режиме внутреннего предсказания соседней PU.
[0054] mpm_idx[x0][y0] является индексом в список наиболее вероятных режимов, который кодер видео сигнализирует, а декодер видео принимает. В данном примере, декодер видео может быть выполнен с возможностью определения по значению mpm_idx[x0][y0] режима внутреннего предсказания для текущей PU. В некоторых примерах, поскольку список наиболее вероятных режимов основан на режимах внутреннего предсказания соседних PU (например, первой и второй соседних PU), то элемент синтаксиса mpm_idx[x0][y0] может, в некоторых случаях, быть использован для идентификации конкретной соседней PU, которая должна быть использована для того, чтобы логически выводить режим внутреннего предсказания для текущей PU. Например, в качестве одного примера, если mpm_idx[x0][y0] является индексом в список наиболее вероятных режимов, который идентифицирует режим внутреннего предсказания, связанный с первой соседней PU, то декодер видео может быть рассмотрен как идентифицирующий первую соседнюю PU в качестве PU, из которой должен логически выводиться режим внутреннего предсказания текущей PU.
1
0
[0055] Например, обращаясь к Фиг. 1, режим внутреннего предсказания для PU может быть равен режиму внутреннего предсказания для PU для примера INTRA_N×N. Элемент синтаксиса mpm_idx[x0][y0] может указывать из какой соседней PU из набора соседних PU с внутренним предсказанием, текущая PU может логически выводить режим внутреннего предсказания. В данном примере, если prev_intra_luma_pred_flag[x0][y0] равен 0, то режим внутреннего предсказания логически не выводится из соседней PU, а указывается элементом синтаксиса rem_intra_luma_pred_mode[x0][y0].
[0056] Элемент синтаксиса rem_intra_luma_pred_mode[x0][y0] может указывать конкретный режим внутреннего предсказания для текущей PU. В некоторых примерах, элемент синтаксиса rem_intra_luma_pred_mode[x0][y0] может указывать режим внутреннего предсказания для текущей PU не включенный в режимы внутреннего предсказания, идентифицированные в списке наиболее вероятных режимов. Например, элемент синтаксиса rem_intra_luma_pred_mode[x0][y0] идентифицирует оставшийся режим внутреннего предсказания из все возможных режимов внутреннего предсказания, когда режимы внутреннего предсказания, идентифицированные в списке наиболее вероятных режимов, исключаются. Тем не менее, методики данного изобретения этим не ограничиваются.
[0057] Элемент синтаксиса intra_chroma_pred_mode[x0][y0] указывает режим внутреннего предсказания для отсчетов цветности CU. Внутреннее предсказание цветности может быть основано на режиме внутреннего предсказания яркости. Элемент синтаксиса intra_chroma_pred_mode[x0][y0] может указывать на то, основан ли режим внутреннего предсказания для цветности на режиме внутреннего предсказания для яркости.
[0058] В HEVC WD6, возможные режимы внутреннего предсказания включают в себя, режим планарного предсказания (predMode = 0), DC предсказание (predMode = 1), 33 режима углового предсказания (predMode = 2,…,34), и режим предсказания для составляющей цветности, который логически выводит режим внутреннего предсказания из режима предсказания яркости (predMode = 35). Таким образом, применительно к составляющей яркости, в зависимости от значения prev_intra_luma_pred_flag, элемент синтаксиса mpm_idx может указывать индекс в список наиболее вероятных режимов, где каждая запись в списке наиболее вероятных режимов идентифицирует один из 35 возможных режимов внутреннего предсказания, или rem_intra_luma_pred_mode может указывать один из 35 возможных режимов внутреннего предсказания (исключая те режимы внутреннего предсказания, которые идентифицированы в списке наиболее вероятных режимов, в некоторых примерах). В одном примере, элемент синтаксиса rem_intra_luma_pred_mode может иметь целочисленное значение от 0 до 31 и может быть кодирован с использованием способа двоичного кодирования с фиксированной длиной кодового слова, а элемент синтаксиса mpm_idx может иметь целочисленное значение от 0 до 2 (например, для идентификации одной из трех записей в списке наиболее вероятных режимов) и может быть кодирован с использованием усеченного способа унарного кодирования. Кроме того, применительно к составляющим цветности intra_chroma_pred_mode и один или более другие элементы синтаксиса могут указывать один из 36 возможных режимов внутреннего предсказания. В одном примере, элемент синтаксиса intra_chroma_pred_mode может иметь целочисленное значение от 0 до 5. Более подробное описание того, каким образом каждый из элементов синтаксиса mpm_idx, rem_intra_luma_pred_mode, и intra_chroma_pred_mode идентифицирует конкретные режимы внутреннего предсказания предоставляется в HEVC WD6 и для краткости повторяется в данном документе. Тем не менее, следует отметить, что методики, описываемые в данном документе, могут быть в целом применены к предусмотренным вариациям элементов синтаксиса mpm_idx, rem_intra_luma_pred_mode, и intra_chroma_pred_mode.
[0059] Как описано выше, стандарт кодирования видео может энтропийно кодировать элементы синтаксиса в соответствии с методикой CABAC. Для применения кодирования в режиме CABAC к элементу синтаксиса, кодер видео может применять бинаризацию элемента синтаксиса. Бинаризация относится к процессу преобразования значения синтаксиса в ряд из одного или более битов. Эти биты могут именоваться «бинами». Бинаризация является процессом без потерь и может включать в себя одну или комбинацию следующих методик кодирования: кодирование с фиксированной длиной кодового слова, унарное кодирование, усеченное унарное кодирование, усеченное кодирование Райса, кодирование Голомба, экспоненциальное кодирование Голомба, и кодирование Голомба-Райса. Например, бинаризация может включать в себя представление целочисленного значения 5 в виде 00000101, используя методику 8-битной фиксированной длины, или в виде 11110, используя методику унарного кодирования.
[0060] После бинаризации, кодер видео может идентифицировать контекст кодирования. Контекст кодирования может идентифицировать вероятности кодирования бинов с конкретными значениями. Например, контекст кодирования может указывать вероятность 0,7 кодирования 0-значного бина и вероятность 0,3 кодирования 1-значного бина. После идентификации контекста кодирования, кодер видео может арифметически кодировать этот бин на основе контекста. Бины с кодированием при помощи кодирования в режиме нормального CABAC, могут именоваться «бинами режима CABAC».
[0061] Кроме того, вместо выполнения кодирования в режиме нормального CABAC над всеми бинами элементов синтаксиса, кодер видео может кодировать некоторые бины элементов синтаксиса, используя кодирование в режиме обхода CABAC. Кодирование в режиме обхода относится к процессу арифметического кодирования бина без использования адаптивного контекста. Т.е. механизм кодирования в режиме обхода не выбирает контекст, а может предположить вероятность 0,5 для обоих символов (0 и 1). Несмотря на то, что кодирование в режиме обхода может быть не настолько эффективно по полосе пропускания как кодирование в режиме CABAC, но вычислительно может быть менее затратным выполнение кодирования в режиме обхода над бином вместо выполнения кодирования в режиме нормального CABAC над бином. Кроме того, выполнение кодирования в режиме обхода может позволить обеспечить более высокую степень параллельного выполнения и пропускной способности. Бины с кодированием при помощи кодирования в режиме обхода, могут именоваться «бинами режима обхода».
[0062] Когда реализуется кодер CABAC, он может включать в себя механизм кодирования в режиме нормального CABAC для выполнения кодирования в режиме нормального CABAC и механизм кодирования в режиме обхода для выполнения кодирования в режиме обхода. Если бин является с кодированием в режиме CABAC, то для кодирования данного бина используется механизм кодирования в режиме нормального CABAC. Механизму кодирования в режиме нормального CABAC может потребоваться более двух циклов обработки для кодирования одного бина. Тем не менее, при правильном исполнении конвейерной обработки, механизму кодирования в режиме нормального CABAC может потребоваться лишь n+M циклов для кодирования n бинов, где M является потерями на запуск конвейерной обработки. M обычно больше 0.
[0063] При запуске процесса кодирования в режиме CABAC (т.е. каждое переключения с режима обхода на нормальный), вносятся потери конвейерной обработки. Если бин является с кодированием в режиме обхода, то для кодирования данного бина используется механизм кодирования в режиме обхода. Можно ожидать, что для механизма кодирования в режиме обхода требуется только один цикл для кодирования n-битного элемента синтаксиса, где n может быть больше одного. Таким образом, общее количество циклов для кодирования набора из бинов режима обхода и бинов режима CABAC может быть сокращено, если кодируются вместе все бины режима обхода в наборе и кодируются вместе все бины режима CABAC в наборе. В частности, кодирование вместе бинов режима обхода перед или после перехода к кодированию в режиме CABAC, может сократить потери на перезапуск механизма кодирования в режиме CABAC.
[0064] Как описано выше, CU со структурой PU INTRA_NxN может иметь четыре режима внутреннего предсказания яркости и, следовательно, четыре набора элементов синтаксиса prev_intra_luma_pred_flag, mpm_idx и rem_intra_luma_pred_mode. Среди этих трех элементов синтаксиса, в одном примере, лишь prev_intra_luma_pred_flag является с кодированием в режиме CABAC, а как mpm_idx, так и rem_intra_luma_pred_mode являются с кодированием в режиме обхода. Вновь, кодирование в режиме обхода может относиться к кодированию бинов с помощью не-CABAC процесса, т.е. вне механизма с режимом CABAC. Примеры кодирования в режиме не-CABAC, которое может быть использовано при кодировании в режиме обхода, включают в себя кодирование Голомба, экспоненциальное кодирование Голомба, и кодирование Голомба-Райса.
[0065] Как описано выше, CU со структурой PU INTRA_N×N может иметь один режим внутреннего предсказания цветности, который используется для всех четырех PU. Режим внутреннего предсказания цветности может быть основан на режимах внутреннего предсказания яркости. Таблица 2 показывает бинаризацию для элемента синтаксиса intra_chroma_pred_mode в качестве одного примера. Бинаризация приводит к одному или более бинам для представления соответствующего значения intra_chroma_pred_mode. Подчеркнутые бины являются с кодированием в режиме CABAC, а оставшиеся бины являются с кодированием в режиме обхода в данном примере. Как иллюстрируется в Таблице 2, бинаризация intra_chroma_pred_mode и то, кодируется ли конкретный бин в режиме CABAC или в режиме обхода, основано на значении chroma_pred_from_luma_enable_flag. Таким образом, бинаризация элемента синтаксиса и то, кодируется ли конкретный бин в режиме CABAC или режиме обхода, может быть основано на значении другого элемента синтаксиса (например, chroma_pred_from_luma_enable_flag).
Таблица 2Бинаризация intra_chroma_pred_mode в зависимости от chroma_pred_from_luma_enabled_flag
Значение intra_chroma_pred_mode
chroma_pred_from_luma_enabled_flag=1
chroma_pred_from_luma_enabled_flag=0
5
<u>0</u>
неприменимо
4
<u>10</u>
0
0
<u>11</u>00
<u>1</u>00
1
<u>11</u>01
<u>1</u>01
2
<u>11</u>10
<u>1</u>10
3
<u>11</u>11
<u>1</u>11
[0066] Таблица 3 и 4 ниже представляют собой структуры кодирования для элементов синтаксиса, идентифицирующих режимы предсказания яркости и цветности для CU в некоторых примерах. Таблица 3 иллюстрирует кодирование элементов синтаксиса для структуры PU INTRA_2N×2N, а Таблица 4 иллюстрирует кодирование структуры PU INTRA_N×N. В Таблицах 3 и 4, элемент синтаксиса intra_chroma_pred_mode представлен в качестве элементов синтаксиса chroma_mode_cabac_bins и chroma_mode_bypass_bins, где chroma_mode_cabac_bins обозначает бины, которые кодируются в режиме CABAC, а chroma_mode_bypass_bins обозначают бины, которые кодируются в режиме обхода, как предоставлено в Таблице 2. Таблицы 3 и 4 идентифицируют то, кодируются ли элементы синтаксиса при помощи режима CABAC или режима обхода. Кроме того, как иллюстрируется в Таблице 4, присутствует четыре набора prev_intra_luma_pred_flag, mpm_idx и rem_intra_luma_pred_mode, при этом каждый соответствует одной из четырех PU, и одно указание режима цветности, который совместно используется всеми четырьмя PU.
Таблица 3Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 4Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
//КОДИРОВАНИЕ ЯРКОСТИ ДЛЯ ПЕРВОЙ PU
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x1][y0])
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
//КОДИРОВАНИЕ ЯРКОСТИ ДЛЯ ВТОРОЙ PU
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
//КОДИРОВАНИЕ ЯРКОСТИ ДЛЯ ТРЕТЕЙ PU
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
if( prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
//КОДИРОВАНИЕ ЯРКОСТИ ДЛЯ ЧЕТВЕРТОЙ PU
chroma_mode_cabac_bins[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
//КОДИРОВАНИЕ ЦВЕТНОСТИ ДЛЯ ВСЕХ PU
[0067] Как иллюстрируется в Таблицах 3 и 4, элементы синтаксиса, которые являются с кодированием в режиме CABAC, чередуются с элементами синтаксиса, которые являются с кодированием в режиме обхода, что, как описано выше, может увеличить общее количество циклов, требуемое для энтропийного кодирования всех элементов синтаксиса в Таблицах 3 и 4, например, из-за потерь на настройку при повторном запуске механизма кодирования в режиме CABAC. Как иллюстрируется в Таблице 4, проблема усугубляется, если CU содержит несколько PU. Для того чтобы сократить общие потери конвейерной обработки и общее количество циклов, требуемое для кодирования элементов синтаксиса, идентифицирующих режимы внутреннего предсказания, в соответствии с данным изобретением могут быть выполнены некоторые регулировки над очередностью кодирования.
[0068] Фиг. 2 является структурной схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать методики в соответствии с данным изобретением. Как показано на Фиг. 2, система 10 включает в себя устройство-источник 12, которое сигнализирует закодированные видеоданные. В некоторых примерах, устройство-источник 12 может сигнализировать закодированные видеоданные устройству-получателю 14 через канал 16 связи. Устройство-источник 12 и устройство-получатель 14 может быть выполнено в виде любого из широкого диапазона устройств. В некоторых случаях, устройство-источник 12 и устройство-получатель 14 может быть выполнено в виде устройств беспроводной связи, таких как беспроводные телефонные трубки, так называемые сотовые или спутниковые радиотелефоны, или любых беспроводных устройств, которые могут осуществлять передачу видеоинформации через канал 16 связи, при этом канал связи является беспроводным. Методики данного изобретения, тем не менее, не обязательно ограничиваются беспроводными приложениями или настройками. Например, эти методики могут применяться к эфирным телевизионным вещательным передачам, передачам кабельного телевидения, передачам спутникового телевидения, передачам видео сети Интернет, закодированному цифровому видео, которое закодировано на носителе данных, или в других сценариях. Соответственно, канал 16 связи может быть выполнен в виде любой комбинации беспроводных, проводных, или запоминающих средств, пригодных для передачи или хранения закодированных видеоданных для последующего извлечения устройством-получателем 14.
[0069] В примере Фиг. 2, устройство-источник 12 включает в себя источник 18 видео, кодер 20 видео, модулятор/демодулятор (модем) 22, и передатчик 24. Устройство-получатель 14 включает в себя приемник 26, модем 28, декодер 30 видео, и устройство 32 отображения. В соответствии с данным изобретением, кодер 20 видео устройства-источника 12 может быть выполнен с возможностью применения методик для энтропийного кодирования таким образом, при котором сокращаются потери конвейерной обработки. В других примерах, устройство-источник и устройство-получатель могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принимать видеоданные от внешнего источника 18 видео, такого как внешняя камера. Подобным образом, устройство-получатель 14 может взаимодействовать с внешним устройством отображения, вместо того, чтобы включать в себя интегрированное устройство отображения.
[0070] Иллюстрируемая система 10 на Фиг. 2 является лишь одним примером. Методики для энтропийного кодирования набора флагов и соответствующего элемента синтаксиса для каждого флага таким образом, при котором сокращаются потери конвейерной обработки, могут быть выполнены любым цифровым устройство кодирования и/или декодирования видео. Несмотря на то, что в целом, методики данного изобретения выполняются устройством кодирования видео, методики также могут быть выполнены кодером/декодером видео, как правило, именуемым «КОДЕК». Более того, методики данного изобретения также могут быть выполнены видеопроцессором. Устройство-источник 12 и устройство-получатель 14 являются лишь примерами таких устройств кодирования, при которых устройство-источник 12 генерирует кодированные видеоданные для передачи устройству-получателю 14. В некоторых примерах, устройства 12, 14 могут функционировать, по существу, симметричным образом, так что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу между видео устройствами 12, 14, например, применительно к потоковой передаче видео, воспроизведению видео, широковещательной передаче видео, или видео телефонии.
[0071] Источник 18 видео устройства-источника 12 может включать в себя устройство захвата видео, такое как видеокамеру, видеоархив, содержащий ранее захваченное видео, и/или внешний видеосигнал от поставщика видео контента. В качестве дополнительной альтернативы, источник 18 видео может генерировать компьютерные основанные на графике данные в качестве исходного видео, или сочетание живого видео, архивированного видео, и сгенерированного компьютером видео. В некоторых случаях, если источником 18 видео является видеокамера, устройство-источник 12 и устройство-получатель 14 могут образовывать так называемые камерофоны или видеофоны. Как упомянуто выше, тем не менее, методики, описываемые в данном изобретении, могут быть применены к кодированию видео в целом, и могут быть применены к беспроводным и/или проводным приложениям. В каждом случае, захваченное, предварительно захваченное, или сгенерированное компьютером видео может быть закодировано кодером 20 видео. Закодированная видеоинформация затем может модулироваться посредством модема 22 в соответствии со стандартом связи, и передаваться устройству-получателю 14 через передатчик 24. Модем 22 может включать в себя различные преобразователи частоты, фильтры, усилители и прочие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включая усилители, фильтры, и одну или более антенны.
[0072] Приемник 26 устройства-получателя 14 принимает информацию по каналу 16, а модем 28 демодулирует информацию. Вновь, процесс кодирования видео может реализовывать одну или более из описываемых в данном документе методик для энтропийного кодирования элементов синтаксиса, сокращающих потери конвейерной обработки. Информация, передаваемая по каналу 16, может включать в себя информацию синтаксиса, которая определена кодером 20 видео, которая также используется декодером 30 видео, которая включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку макроблоков и прочих кодированных единиц, например, групп картинок (GOP). Устройство 32 отображения отображает декодированные видеоданные пользователю, и может быть выполнено в виде любого из многообразия устройств отображения, такого как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.
[0073] В примере на Фиг. 2, канал 16 связи может быть выполнен в виде любого беспроводного или проводного средства связи, такого как радиочастотный (RF) спектр или одна или более физические линии передачи, или любая комбинация беспроводных и проводных средств. Канал 16 связи может формировать часть основанной на пакетах сети, такой как локальная сеть, широкомасштабная сеть, или глобальная сеть, такая как Интернет. Канал 16 связи, в целом, представляет собой любое приемлемое средство связи, или совокупность разных средств связи, для передачи видеоданных от устройства-источника 12 к устройству-получателю 14, включая любую приемлемую комбинацию проводных или беспроводных средств связи. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным для организации связи от устройства-источника 12 к устройству-получателю 14. В других примерах, устройство-источник 12 может хранить закодированные данные на носителе данных, вместо передачи данных. Подобным образом, устройство-получатель 14 может быть выполнено с возможностью извлечения закодированных данных из носителя данных. В данном случае, устройство-источник 12 может быть выполнено с возможностью генерирования компьютерного программного продукта, при этом компьютерный программный продукт включает в себя видео файл, закодированный в соответствии с описываемыми в данном документе методиками.
[0074] Кодер 20 видео и декодер 30 видео могут функционировать в соответствии со стандартом сжатия видео, таким как те, что описываются в данном документе. Методики данного изобретения, тем не менее, не ограничиваются каким-либо конкретным стандартом кодирования. Несмотря на то, что не показано на Фиг. 2, в некоторых аспектах, кодер 20 видео и декодер 30 видео каждый может быть интегрирован с кодером и декодером аудио, и может включать в себя модули MUX-DEMUX (мультиплексирования-демультиплексирования), или иное аппаратное и программное обеспечения, для обработки по кодированию как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексирования ITU H.223, или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0075] Кодер 20 видео и декодер 30 видео каждый может быть реализован в качестве любой из многообразия приемлемых схем кодера или декодера, таких как один или более микропроцессоры, цифровые сигнальные процессоры (DSP), проблемно-ориентированные интегральные микросхемы (ASIC), программируемые вентильные матрицы (FPGA), устройства беспроводной связи, которые включают в себя устройство кодирования видео, такое как кодер или декодер, дискретную логику, программное обеспечение, аппаратное обеспечение, встроенное программное обеспечение или любая их комбинация. Каждый из кодера 20 видео и декодера 30 видео могут быть включены в один или более кодеры или декодеры, любой из которых может быть интегрирован как часть объединенного кодера/декодера (КОДЕК) в соответствующей камере, компьютере, мобильном устройстве, абонентском устройстве, устройстве вещания, абонентской телевизионной приставке, сервере, или подобном. Аппарат, включающий в себя кодер 20 видео и/или декодер 30 видео, может содержать интегральную микросхему, микропроцессор, и/или устройство беспроводной связи, такое как сотовый телефон.
[0076] Кодер 20 видео и декодер 30 видео могут быть выполнены с возможностью реализации методик в соответствии с данным изобретением. Такие методики могут сокращать потери конвейерной обработки, тем самым потенциально увеличивая пропускную способность. Например, одной из причин потерь конвейерной обработки являются потери связанные с циклами, которые требуются для запуска контекстно-адаптивного двоичного арифметического кодирования (CABAC). В методиках, описываемых в данном изобретении, кодер 20 видео энтропийно кодирует первую группу элементов синтаксиса, при помощи кодирования в режиме CABAC (например, с помощью механизма кодирования в режиме нормального CABAC), и энтропийно кодирует вторую группу элементов синтаксиса, при помощи кодирования в режиме обхода (например, с помощью механизма кодирования в режиме обхода). Аналогичным образом, декодер 30 видео энтропийно декодирует первую группу элементов синтаксиса, при помощи декодирования в режиме CABAC (например, с помощью механизма декодирования в режиме нормального CABAC), и энтропийно декодирует вторую группу элементов синтаксиса, при помощи декодирования в режиме обхода (например, с помощью механизма декодирования в режиме обхода).
[0077] Таким образом, элементы синтаксиса первой группы, которые кодируются в режиме CABAC, не чередуются с элементами синтаксиса второй группы, которые кодируются в режиме обхода, в битовом потоке. Если было допущено чередование элементов синтаксиса, кодируемых в режиме CABAC, и элементов синтаксиса, кодируемых в режиме обхода, то кодер 20 видео и декодер 30 видео должны будут неоднократно перезапускать механизм кодирования в режиме CABAC.
[0078] Например, предположим, что первый элемент синтаксиса должен быть закодирован в режиме CABAC и он предшествует второму элементу синтаксиса, который должен быть закодирован в режиме обхода, а третий элемент синтаксиса, который должен быть закодирован в режиме CABAC, следует за вторым элементом синтаксиса, который должен быть закодирован в режиме обхода. В данном примере, в котором элементы синтаксиса, которые должны быть закодированы в режиме CABAC и режиме обхода, чередуются, кодеру 20 видео потребуется запустить механизм кодирования в режиме CABAC для первого элемента синтаксиса, и затем повторно запустить механизм кодирования в режиме CABAC для третьего элемента синтаксиса, после кодирования второго элемента синтаксиса с помощью механизма кодирования в режиме обхода, что растрачивает циклы.
[0079] В методиках, описываемых в данном изобретении, посредством кодирования в режиме CABAC первой группы элементов синтаксиса, и кодирования в режиме обхода второй группы элементов синтаксиса, кодер 20 видео может сократить количество раз, которое должна быть запущена механизм кодирования в режиме CABAC, тем самым сокращая количество растраченных циклов. Аналогично, посредством декодирования в режиме CABAC первой группы элементов синтаксиса, и декодирования в режиме обхода второй группы элементов синтаксиса, декодер 30 видео может сокращать количество раз, которое должна быть запушена механизм кодирования в режиме CABAC, тем самым сокращая количество растраченных циклов.
[0080] Как описано более подробно, каждый элемент синтаксиса из первой группы элементов синтаксиса связан с одной PU CU, а каждый элемент синтаксиса из второй группы элементов синтаксиса, соответствует элементу синтаксиса из первой группы элементов синтаксиса. Каждая группа из первой группы элементов синтаксиса и второй группы элементов синтаксиса включает в себя множество элементов синтаксиса. Каждый элемент синтаксиса из первой группы элементов синтаксиса указывает, выводится ли логически режим внутреннего предсказания соответствующей PU (например, PU, которая соответствует элементу синтаксиса из первой группы элементов синтаксиса) из соседней PU. Другими словами, каждый элемент синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей PU на индексе в список наиболее вероятных режимов.
[0081] Например, кодер 20 видео и декодер 30 видео могут быть выполнены с возможностью построения списка наиболее вероятных режимов примерным способом, описанным выше. Каждый элемент синтаксиса в первой группе элементов синтаксиса может соответствовать одной из PU в CU. В данном примере, элемент синтаксиса в первой группе элементов синтаксиса (т.е. один из элементов синтаксиса из множества элементов синтаксиса первой группы) указывает, основан ли режим внутреннего предсказания для PU, которой элемент синтаксиса соответствует в CU, на индексе в список наиболее вероятных режимов.
[0082] Если элемент синтаксиса из первой группы элементов синтаксиса указывает, что режим внутреннего предсказания PU, с которой он связан, основан на индексе в список наиболее вероятных режимов, тогда элемент синтаксиса из второй группы элементов синтаксиса, который связан с элементом синтаксиса из первой группы элементов синтаксиса, идентифицирует индекс в список наиболее вероятных режимов. Если элемент синтаксиса из первой группы элементов синтаксиса, указывает, что режим внутреннего предсказания PU, с которой он связан, не основан на индексе в список наиболее вероятных режимов, тогда элемент синтаксиса из второй группы элементов синтаксиса, который связан с элементом синтаксиса из первой группы элементов синтаксиса, указывает режим внутреннего предсказания.
[0083] Фиг. 3 является структурной схемой, иллюстрирующей пример кодера 20 видео, который может реализовывать описываемые в данном документе методики для кодирования видеоданных. В одном примере, кодер 20 видео может быть выполнен с возможностью генерирования первой группы элементов синтаксиса и второй группы элементов синтаксиса, при этом элементы синтаксиса из второй группы элементов синтаксиса, соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса, и при этом каждый из элементов синтаксиса из первой группы элементов синтаксиса указывает, основан ли режим внутреннего предсказания соответствующей PU в CU на индексе в список наиболее вероятных режимов. Кодер 20 видео может кодировать в режиме контекстно-адаптивного двоичного арифметического кодирования (CABAC) первую группу элементов синтаксиса (например, используя механизм кодирования в режиме нормального CABAC), вслед за энтропийным кодированием первой группы элементов синтаксиса, кодировать в режиме обхода вторую группу элементов синтаксиса (например, используя механизм кодирования в режиме обхода), и выводить видеоданные, которые включают в себя закодированную первую группу элементов синтаксиса и закодированную вторую группу элементов синтаксиса. Каждая группа из первой и второй групп элементов синтаксиса включает в себя множество элементов синтаксиса.
[0084] Кодер 20 видео может выполнять внутреннее кодирование (т.е. кодирование с внутренним предсказанием) и внешнее кодирование (т.е. кодирование с внешним предсказанием) видео блоков в видео слайсах. Как показано на Фиг. 3, кодер 20 видео принимает видеоданные, которые могут быть текущим видео блоком в видео кадре, который должен быть закодирован, и выводит закодированный битовый поток видео. Кодер 20 видео может дополнительно отправлять данные синтаксиса, такие как основанные на блоке данные синтаксиса, основанные на кадре данные синтаксиса, и основанные на GOP данные синтаксиса, например, в заголовке кадра, заголовке блока, заголовке слайса, или заголовке GOP. Данные синтаксиса GOP могут описывать количество кадров в соответствующей GOP, а данные синтаксиса кадра могут указывать режим кодирования/предсказания, использованный для кодирования соответствующего кадра.
[0085] В примере на Фиг. 3, кодер 20 видео включает в себя модуль 40 выбора режима, память 64 опорных кадров, сумматор 50, модуль 52 обработки преобразования, модуль 54 обработки квантования, и модуль 56 энтропийного кодирования. Модуль 40 выбора режима, в свою очередь, включает в себя модуль 42 оценки движения, модуль 44 компенсации движения, модуль 46 внутреннего предсказания, и модуль 48 разбиения. Для восстановления видео блока, кодер 20 видео также включает в себя модуль 58 обработки обратного квантования, модуль 60 обработки обратного преобразования, и сумматор 62.
[0086] Во время процесса кодирования, кодер 20 видео принимает видео кадр или слайс, который должен быть закодирован. Кадр или слайс могут быть разделены на несколько видео блоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют предсказывающее во внешнем режиме кодирование (кодирование с внешним предсказанием) принятого видео блока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Модуль 46 внутреннего предсказания может в качестве альтернативы выполнять предсказывающее во внутреннем режиме кодирование (кодирование с внутренним предсказанием) принятого видео блока относительно одного или более соседних блоков в том же самом кадре или слайсе, что и блок, который должен быть закодирован, для обеспечения пространственного предсказания. Кодер 20 видео может выполнять несколько проходов кодирования, например, для выбора подходящего режима кодирования для каждого блока видеоданных.
[0087] Более того, модуль 48 разбиения может разбивать блоки видеоданных на суб-блоки, основанные на оценке предыдущих схем разбиения в предыдущих проходах кодирования. Например, модуль 48 разбиения исходно разбивает кадр или слайс на LCU, и разбивает каждую из LCU на суб-CU, на основании анализа отношения скорости к искажению (например, оптимизации отношения скорости к искажению). Модуль 40 выбора режима может дополнительно создавать структуру данных квадродерева, указывающую разбиение LCU на суб-CU. Листовой узел CU квадродерева может включать в себя одну или более PU и одну или более TU.
[0088] Модуль 40 выбора режима может выбирать один из режимов кодирования, внутренний или внешний, например, на основании результатов ошибки, и предоставлять результирующий блок с внутренним или внешним кодированием сумматору 50 для генерирования остаточного блока данных и сумматору 62 для восстановления закодированного блока для использования в качестве опорного кадра. Модуль 40 выбора режима также предоставляет элементы синтаксиса, такие как векторы движения, индикаторы внутреннего режима, информацию разбиения, и прочую такую информацию синтаксиса, модулю 56 энтропийного кодирования. Например, модуль 40 выбора режима может предоставлять элементы синтаксиса prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, intra_chroma_pred_mode, и chroma_pred_from_luma_enable_flag, как описано выше, модулю 56 энтропийного кодирования. Кроме того, модуль 40 выбора режима может быть выполнен с возможностью компоновки элементов синтаксиса prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode и intra_chroma_pred_mode, таким образом, что они предоставляются модулю 56 энтропийного кодирования так, что количество циклов, требуемое для энтропийного кодирования элементов синтаксиса, сокращается.
[0089] Например, кодер 20 видео, через модуль 56 энтропийного кодирования, энтропийно кодирует prev_intra_luma_pred_flag для PU в CU, используя кодирование в режиме CABAC. В данном примере, первая группа элементов синтаксиса включает в себя множество prev_intra_luma_pred_flag (т.е. один для каждой PU в CU). Кодер 20 видео, через модуль 56 энтропийного кодирования, энтропийно кодирует элемент синтаксиса mpm_idx, используя кодирование в режиме обхода, если соответствующий prev_intra_luma_pred_flag указывает, что режим внутреннего предсказания для PU основан на индексе в список наиболее вероятных режимов, или кодирует элемент синтаксиса rem_intra_luma_pred_mode, если соответствующий prev_intra_luma_pred_flag указывает, что режим внутреннего предсказания для PU не основан на индексе в список наиболее вероятных режимов. В данном примере, вторая группа элементов синтаксиса включает в себя по меньшей мере один или более элементы синтаксиса mpm_idx и один или более элементы синтаксиса rem_intra_luma_pred_mode.
[0090] Другими словами, одним примером элемента синтаксиса в первой группе элементов синтаксиса является prev_intra_luma_pred_flag, одним примером элемента синтаксиса во второй группе элементов синтаксиса является элемент синтаксиса mpm_idx, а другим примером элемента синтаксиса во второй группе элементов синтаксиса является элемент синтаксиса rem_intra_luma_pred_mode.
[0091] Вновь, prev_intra_luma_pred_flag указывает, основан ли режим внутреннего предсказания отсчетов яркости PU CU на индексе в список наиболее вероятных режимов. Элемент синтаксиса mpm_idx указывает индекс в список наиболее вероятных режимов, если prev_intra_luma_pred_flag указывает, что режим внутреннего предсказания отсчетов яркости PU CU основан на индексе в список наиболее вероятных режимов. Элемент синтаксиса rem_intra_luma_pred_mode указывает режим внутреннего предсказания отсчетов яркости PU, если prev_intra_luma_pred_flag указывает, что режим внутреннего предсказания PU CU не основан на индексе в список наиболее вероятных режимов. Элемент синтаксиса rem_intra_luma_pred_mode может указывать режим внутреннего предсказания, который не идентифицированы в списке наиболее вероятных режимов.
[0092] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, однако иллюстрируются по-отдельности в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для видео блоков. Вектор движения, например, может указывать перемещение PU видео блока в текущем видео кадре или картинке по отношению к предсказывающему блоку в опорном кадре (или другой кодированной единице) по отношению к текущему блоку, который кодируется в текущем кадре (или другой кодированной единице). Предсказывающий блок является блоком, в отношении которого установлено, что он близко подходит к блоку, который должен быть закодирован, в плане пиксельной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратичных разностей (SSD), или другой метрики разности. В некоторых примерах, кодер 20 видео может вычислять значения для суб-целых позиций пикселя опорных картинок, хранящихся в памяти 64 опорной картинки. Например, кодер 20 видео может интерполировать значения одной четвертой позиций пикселя, одной восьмой позиций пикселя, или других дробных позиций пикселя опорной картинки. Вследствие этого, модуль 42 оценки движения может выполнять поиск движения относительно целых позиций пикселя и дробных позиций пикселя и выводить вектор движения с дробной точностью пикселя.
[0093] Модуль 42 оценки движения вычисляет вектор движения для PU видео блока в слайсе с внешним кодированием посредством сравнения позиции PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицирует одну или более опорные картинки, хранящиеся в памяти 64 опорной картинки. Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения.
[0094] Компенсация движения, выполняемая модулем 44 компенсации движения, может задействовать выборку или генерирование предсказывающего блока, основанное на векторе движения, который определен модулем 42 оценки движения. Вновь, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированными, в некоторых примерах. По приему вектора движения для PU текущего видео блока, модуль 44 компенсации движения может определять местоположение предсказывающего блока, на который указывает вектор движения в одном из списков опорных картинок. Сумматор 50 формирует остаточный видео блок посредством вычитания значений пикселя предсказывающего блока из значений пикселя текущего видео блока, который кодируется, формируя значения пиксельной разности, как рассматривается ниже. В целом, модуль 42 оценки движения выполняет оценку движения по отношению к составляющим яркости, а модуль 44 компенсации движения использует векторы движения, вычисленные на основании составляющих яркости, как для составляющих цветности, так и для составляющих яркости. Модуль 40 выбора режима может также генерировать элементы синтаксиса, связанные с видео блоками и видео слайсом для использования декодером 30 видео при декодировании видео блоков видео слайса.
[0095] Модуль 46 внутреннего предсказания может выполнять внутреннее предсказание текущего блока, в качестве альтернативы внешнему предсказанию, которое выполняется модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего предсказания может определять режим внутреннего предсказания для использования при кодировании текущего блока. В некоторых примерах, модуль 46 внутреннего предсказания может кодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 46 внутреннего предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбирать подходящий режим внутреннего предсказания для использования из протестированных режимов, например, на основании анализа отношения скорости к искажению. Как описано выше, возможные режимы внутреннего предсказания могут включать в себя режимы планарного предсказания, DC предсказание, режимы углового предсказания, и режим предсказания для составляющей цветности, который логически выводит режим внутреннего предсказания по режиму предсказания яркости.
[0096] Кроме того, в одном примере, модуль 46 внутреннего предсказания может вычислять значения отношения скорости к искажению, используя анализ отношения скорости к искажению для различных протестированных режимов внутреннего предсказания, и выбирать режим внутреннего предсказания с наилучшими характеристиками отношения скорости к искажению из числа протестированных режимов. Анализ отношения скорости к искажению, в целом, определяет величину искажения (или ошибки) между закодированным блоком и исходным, незакодированным блоком, который был закодирован для создания закодированного блока, как впрочем, и скорость передачи бит (т.е. количество бит), используемую для создания закодированного блока. Модуль 46 внутреннего предсказания может вычислять отношения из искажений и скоростей для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает наилучшее значение отношения скорости к искажению для блока.
[0097] После выбора режима внутреннего предсказания для блока, модуль 46 внутреннего предсказания может предоставлять информацию, указывающую выбранный режим внутреннего предсказания для блока, такую как элементы синтаксиса, модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания. Кодер 20 видео может включать в передаваемый битовый поток данные конфигурации, которые могут включать в себя множество таблиц индекса режима внутреннего предсказания и множество модифицированных таблиц индекса режима внутреннего предсказания (также именуемых таблицами отображения кодового слова), определения контекстов кодирования для различных блоков, и указания наиболее вероятного режима внутреннего предсказания, таблицу индекса режима внутреннего предсказания, и модифицированную таблицу индекса режима внутреннего предсказания для использования для каждого контекста.
[0098] Как описано выше, элементы синтаксиса внутреннего предсказания prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, intra_chroma_pred_mode, и chroma_pred_from_luma_enable_flag могут указывать один или более режимов внутреннего предсказания яркости для структуры PU и режим внутреннего предсказания цветности для структуры PU. Кроме того, как описано выше в отношении Таблиц 3 и 4, компоновка элементов синтаксиса внутреннего предсказания prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode,
intra_chroma_pred_mode, и chroma_pred_from_luma_enable_flag в структуре кодирования может определять общее количество циклов, требуемое для энтропийного кодирования всех элементов синтаксиса для структуры PU. Таким образом, в дополнение к выводу элементов синтаксиса внутреннего предсказания на модуль 56 энтропийного кодирования, как описано выше в отношении Таблиц 3 и 4, модуль 46 внутреннего предсказания может быть выполнен с возможностью компоновки элементов синтаксиса внутреннего предсказания таким образом, что они выводятся на модуль 56 энтропийного кодирования так, что общее количество циклов, требуемое для энтропийного кодирования элементов синтаксиса, сокращается. Подобным образом, с помощью данной компоновки, общее количество циклов, требуемое для энтропийного декодирования элементов синтаксиса на декодере, сокращается.
[0099] В одном примере, модуль 46 внутреннего предсказания может быть выполнен с возможностью компоновки бинов с кодированием в режиме CABAC элементов синтаксиса внутреннего режима цветности с бинами с кодированием в режиме CABAC элементов синтаксиса внутреннего режима яркости, таким образом, что они кодируются вместе. Кроме того, модуль 46 внутреннего предсказания может компоновать бины с кодированием в режиме обхода элементов синтаксиса внутреннего режима яркости с бинами с кодированием в режиме обхода элементов синтаксиса внутреннего режима цветности, таким образом, что они могут кодироваться вместе. Таблица 5 предоставляет примерную структуру кодирования данной компоновки для структуры PU INTRA_2N×2N. Таблица 6 предоставляет примерную структуру кодирования данной компоновки для структуры PU INTRA_N×N. В Таблицах 5 и 6, элементы синтаксиса могут быть определены так, как описано выше в отношении Таблиц 3 и 4. Тем не менее, следует отметить, что элементы синтаксиса в Таблицах 5 и 6 не обязательно имеют тот же самый диапазон значений, что описан выше. Например, если кодер 20 видео включает в себя меньше или больше чем 33 режима внутреннего предсказания, то значения элементов синтаксиса могут быть соответствующим образом отрегулированы. Как иллюстрируется в Таблицах 5 и 6, элемент синтаксиса chroma_mode_cabac_bins скомпонован таким образом, что он кодируется перед mpm_idx и rem_intra_luma_pred_mode.
Таблица 5Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 6Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0] )
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
if( prev_intra_luma_pred_flag[x1][y0] )
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
[0100] В другом примере, модуль 46 внутреннего предсказания может быть выполнен с возможностью компоновки бинов с кодированием в режиме CABAC элементов синтаксиса внутреннего режима яркости для всех PU в CU, таким образом, что они могут кодироваться вместе. Кроме того, модуль 46 внутреннего предсказания может компоновать бины с кодированием в режиме обхода элементов синтаксиса внутреннего режима яркости таким образом, что они могут кодироваться вместе. Таблица 7 предоставляет примерную структуру кодирования данной компоновки для структуры PU INTRA_2N×2N. Таблица 8 предоставляет примерную структуру кодирования данной компоновки для структуры PU INTRA_N×N. В Таблицах 7 и 8, элементы синтаксиса могут быть определены так, как описано выше в отношении Таблиц 5 и 6.
[0101] Как иллюстрируется в Таблице 8, для структуры PU INTRA_N×N, кодируются элементы синтаксиса prev_intra_luma_pred_flag для каждой из четырех PU, затем кодируются соответствующие элементы синтаксиса mpm_idx и rem_intra_luma_pred_mode для каждой из PU. Четыре элемента синтаксиса prev_intra_luma_pred_flag могут именоваться первой группой элементов синтаксиса для PU. Таким образом, модуль 46 внутреннего предсказания может быть выполнен с возможностью вывода первой группы элементов синтаксиса на модуль 56 энтропийного кодирования перед соответствующим элементом синтаксиса mpm_idx и rem_intra_luma_pred_mode, связанным с каждым из флагов.
Таблица 7Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 8Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x1][y0])
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
chroma_mode_cabac_bins[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
[0102] В еще одном другом примере, модуль 46 внутреннего предсказания может быть выполнен с возможностью компоновки всех бинов с кодированием в режиме CABAC элементов синтаксиса внутреннего режима как яркости, так и цветности для всех PU в единице кодирования, таким образом, что они могут кодироваться вместе. Кроме того, модуль 46 внутреннего предсказания может быть выполнен с возможностью компоновки всех бинов с кодированием в режиме обхода внутреннего режима как яркости, так и цветности таким образом, что они могут кодироваться вместе. Таблица 9 предоставляет примерную структуру кодирования для данной компоновки для структуры PU INTRA_2N×2N. Таблица 10 предоставляет примерную структуру кодирования для данной компоновки для структуры PU INTRA_N×N. В Таблицах 9 и 10 элементы синтаксиса могут быть определены так, как описано выше в отношении Таблиц 5 и 6.
Таблица 9Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if( prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 10Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x1][y0] )
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
[0103] Следует отметить, что в таблицах с Таблицы 6 по Таблицу 10, строка, в которой элемент синтаксиса представлен в таблице, может соответствовать очередности, в которой он энтропийно кодируется энтропийным кодером. В некоторых случаях, может не происходить промежуточного энтропийного кодирования между соседними строками в таблицах с Таблицы 6 по Таблицу 10. Понятия «группа» и «группирование» в данном документе могут, в целом, относиться к размещению элементов близко друг к другу, например, в таблице синтаксиса в единице кодирования видео, такой как картинка, слайс, CU, или подобное. В случаях, когда операция выполняется над элементами синтаксиса, включенными в группу, в некоторых случаях элементы могут быть размещены настолько близко друг к другу, что операция не выполняется над элементами вне группы, до тех пор, пока операция не завершается над всеми элементами в группе (т.е. отсутствует чередование между разными группами). В некоторых случаях, бины в группе могут быть представлены последовательно и могут кодироваться в очередности или последовательности, т.е. один за другим.
[0104] Обращаясь вновь к Фиг. 3, кодер 20 видео формирует остаточный видео блок посредством вычитания данных предсказания от модуля 40 выбора режима из исходного видео блока, который кодируется. Сумматор 50 представляет собой компонент или компоненты, которые выполняют данную операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, к остаточному блоку, создавая видеоблок, содержащий остаточные значения коэффициентов преобразования. Модуль 52 обработки преобразования может выполнять другие преобразования, которые концептуально подобны DCT. Также могут быть использованы вейвлет преобразования, целочисленные преобразования, суб-полосные преобразования или другие типы преобразования. В любом случае, модуль 52 обработки преобразования применяет преобразование к остаточному блоку, создавая блок из остаточных коэффициентов преобразования. Преобразование может конвертировать остаточную информацию из области значения пикселя в область преобразования, такую как частотная область. Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования модулю 54 обработки квантования. Модуль 54 обработки квантования квантует коэффициенты преобразования для дальнейшего сокращения скорости передачи бит. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования. В некоторых примерах, модуль 54 обработки квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы, сканирование может выполнять модуль 56 энтропийного кодирования.
[0105] Кодер 20 видео может быть выполнен с возможностью выполнения обратного квантования и обратного преобразования для сохранения декодированных блоков, которые будут использованы в качестве опорных для предсказания последующих блоков, например, в том же самом кадре или кадрах, которые должны быть предсказаны по времени. Модуль 58 обработки обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для восстановления остаточного блока в пиксельной области, например, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок, посредством сложения остаточного блока с предсказывающим блоком одного из кадров в памяти 64 опорных кадров. Модуль 44 компенсации движения также может применять один или более фильтры интерполяции для восстановления остаточного блока для вычисления суб-целочисленных значений пикселя для использования при оценке движения. Сумматор 62 складывает восстановленный остаточный блок с блоком предсказания после компенсации движения, созданным модулем 44 компенсации движения, для создания восстановленного видео блока для сохранения в памяти 54 опорного кадра.
[0106] Вслед за квантованием, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Кроме того, модуль 56 энтропийного кодирования энтропийно кодирует элементы синтаксиса, такие как предсказывающие элементы синтаксиса, описанные выше. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование с переменной длиной кодового слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением интервала вероятности (PIPE) или другую методику энтропийного кодирования. В случае основанного на контексте энтропийного кодирования, контекст может быть основан на соседних блоках. Вслед за энтропийным кодирование посредством модуля 56 энтропийного кодирования, закодированный битовый поток может быть передан другому устройству (например, декодеру 30 видео) или помещен в архив для дальнейшей передачи или извлечения.
[0107] Фиг. 4 является структурной схемой, которая иллюстрирует примерный модуль 56 энтропийного кодирования, который может реализовывать методики, описываемые в данном изобретении. В одном примере, модуль 56 энтропийного кодирования, иллюстрируемый на Фиг. 4, может быть кодером CABAC. Примерный модуль 56 энтропийного кодирования может включать в себя модуль 502 бинаризации, модуль 510 арифметического кодирования, который включает в себя механизм 504 кодирования в режиме обхода и механизм 508 кодирования в нормальном режиме, и модуль 506 моделирования контекста.
[0108] Модуль 56 энтропийного кодирования может принимать один или более элементы синтаксиса, такие как элементы синтаксиса внутреннего предсказания prev_intra_luma_pred_flag, mpm_idx,
rem_intra_luma_pred_mode, intra_chroma_pred_mode, и
chroma_pred_from_luma_enable_flag, описанные выше. Очередность, в которой элементы синтаксиса принимаются модулем 56 энтропийного кодирования, может быть определена в соответствии со структурой кодирования, такой как примерные структуры кодирования, описанные выше в отношении Таблиц с 3 по 10.
[0109] Модуль 502 бинаризации принимает элемент синтаксиса и создает строку бинов (т.е. бинарную строку). Модуль 502 бинаризации может использовать, например, любую одну или комбинацию следующих методик для создания строки бинов: кодирование с фиксированной длиной кодового слова, унарное кодирование, усеченное унарное кодирование, усеченное кодирование Райса, кодирование Голомба, экспоненциальное кодирование Голомба, и кодирование Голомба-Райса. Кроме того, в некоторых случаях, модуль 502 бинаризации может принимать элемент синтаксиса в качестве бинарной строки и просто сквозным образом пропускать значения бина. В одном примере, модуль 502 бинаризации принимает элемент синтаксиса intra_chroma_pred_mode и создает строку бинов, основанную на значении chroma_pred_from_luma_enable_flag в соответствии с примером, описанным выше в отношении Таблицы 2.
[0110] Модуль 510 арифметического кодирования выполнен с возможностью приема строки бинов от модуля 502 бинаризации и выполнения арифметического кодирования над строкой бинов. Как показано на Фиг. 4, модуль 510 арифметического кодирования может принимать значения бина по пути кодирования в режиме обхода или по пути кодирования в нормальном режиме. Значения бинов, которые следуют по пути кодирования в режиме обхода, могут быть значениями бинов, идентифицированными как с кодированием в режиме обхода, а значения бинов, которые следуют по пути кодирования в нормальном режиме, могут быть идентифицированы как с кодированием в режиме CABAC. Согласуясь с описанным выше процессом CABAC, в случае, когда модуль 510 арифметического кодирования принимает значения бинов по пути кодирования в режиме обхода, механизм 504 кодирования в режиме обхода может выполнять арифметическое кодирование над значениями бинов, не используя адаптивный контекст, назначаемый значению бина. В одном примере, механизм 504 кодирования в режиме обхода может предполагать одинаковые вероятности для возможных значений бина.
[0111] В случае, когда модуль 510 арифметического кодирования принимает значения бинов по пути кодирования в нормальном режиме, модуль 506 моделирования контекста может предоставлять переменную контекста (например, состояние контекста), так что механизм 508 кодирования в нормальном режиме может выполнить арифметическое кодирование на основании назначений контекста, предоставленных модулем 506 моделирования контекста. Назначения контекста могут быть определены в соответствии со стандартом кодирования видео, таким как HEVC. Модели контекста могут быть сохранены в памяти. Модуль 506 моделирования контекста может включать в себя ряд индексированных таблиц и/или использовать функции отображения для определения контекста и переменной контекста для конкретного бина. После кодирования значения бина, механизм 508 кодирования в нормальном режиме может обновлять контекст на основании актуальных значений бина.
[0112] Кроме того, в одном примере модуль 56 энтропийного кодирования может быть выполнен с возможностью кодирования бинов на основании очередности, в которой он принимает элементы синтаксиса от модуля 40 выбора режима. Как описано выше, очередность может быть определена в соответствии со структурой кодирования, такой как примерные структуры кодирования, описанные выше в отношении Таблиц с 3 по 10. Очередность, в которой модуль 56 энтропийного кодирования принимает элементы синтаксиса в рамках набора элементов синтаксиса, может определять общее количество циклов, которое требуется модулю 56 энтропийного кодирования для кодирования набора элементов синтаксиса.
[0113] В одном примере, механизму 508 кодирования в нормальном режиме может требоваться более двух циклов для кодирования одного бина. Кроме того, в одном примере, механизму 508 кодирования в нормальном режиме может требоваться n+M циклов для кодирования n бинов, где M является потерями для запуска конвейерной обработки. M, как правило, больше 0. При запуске процесса кодирования в режиме CABAC (например, при переключении из режима обхода на нормальный), вносятся потери M конвейерной обработки. В одном примере, механизму 504 кодирования в режиме обхода может требоваться один цикл для кодирования n-битного элемента синтаксиса, где n больше нуля.
[0114] Таким образом, общее количество циклов, которое требуется модулю 510 арифметического кодирования для кодирования набора из бинов в режиме обхода и бинов в режиме CABAC, может быть основано на количестве раз, которое вносятся потери M конвейерной обработки. Например, если модуль 510 арифметического кодирования должен был бы закодировать предсказывающие элементы синтаксиса так, как они скомпонованы в Таблице 4, то потери конвейерной обработки могли бы быть внесены пять раз, и модулю 510 арифметического кодирования могло бы потребоваться минимум 5*M циклов для кодирования бинов элементов синтаксиса. Тем не менее, если модуль 510 арифметического кодирования должен был бы закодировать предсказывающие элементы синтаксиса так, как они скомпонованы в Таблице 8, то потери конвейерной обработки могли бы быть внесены лишь дважды и потери конвейерной обработки модуля 510 арифметического кодирования могли бы быть сокращены до 2*M циклов.
[0115] Следует отметить, что видео кадр, кодируемый в соответствии со стандартом HEVC, может включать в себя порядка десятка тысяч PU. Таким образом, очередность, в которой элементы синтаксиса внутреннего предсказания скомпонованы в структуре кодирования может иметь значительное влияние на количество циклов, которое требуется кодеру видео для кодирования видеоданных. Кроме того, следует отметить, что, несмотря на то, что примерный модуль 56 энтропийного кодирования, иллюстрируемый на Фиг. 4, описывается как переключающийся с операции кодирования в режиме обхода на операцию кодирования в нормальном режиме, в некоторых случаях, эти операции могут быть выполнены параллельно. Тем не менее, в данном случае, очередность, в которой модуль 56 энтропийного кодирования принимает элементы синтаксиса с кодированием в режиме обхода и в режиме CABAC по-прежнему может определять общее количество циклов, требуемое для энтропийного кодирования элементов синтаксиса. Потери проистекают от переключения контекста. Поскольку бины, кодированные в режиме обхода, могут приводить к нескольким разным элементам синтаксиса для следующих бинов с кодированием в режиме CABAC, то сложно предварительно отобрать необходимый контекст (загрузить буфер контекста) для того, чтобы сократить потери конвейерной обработки.
[0116] Фиг. 5 является блок-схемой, иллюстрирующей пример кодирования видеоданных в соответствии с методиками данного изобретения. Несмотря на то, что процесс на Фиг. 5 описывается ниже как, в целом, выполняемый кодером 20 видео, процесс может быть выполнен любой комбинацией из кодера 20 видео, модуля 40 выбора режима и/или модуля 56 энтропийного кодирования.
[0117] Как иллюстрируется на Фиг. 5, кодер 20 видео генерирует первую группу элементов синтаксиса (602). В одном примере, элемент синтаксиса в первой группе указывает, основан ли режим предсказания соответствующей единицы предсказания (PU) на индексе в список наиболее вероятных режимов. В одном примере, первая группа элементов синтаксиса включает в себя четыре элемента синтаксиса prev_intra_luma_pred_flag, соответствующие PU в структуре PU INTRA_N×N. Кодер 20 видео генерирует вторую группу элементов синтаксиса (604). В одном примере, соответствующий элемент синтаксиса может быть либо mpm_idx, либо rem_intra_luma_pred_mode элементом синтаксиса, как описано выше. Элементы синтаксиса второй группы соответствуют соответствующим элементам синтаксиса из первой группы.
[0118] Кодер 20 видео кодирует в режиме CABAC первую группу элементов синтаксиса (например, используя механизм кодирования в режиме нормального CABAC)(606). Вслед за кодированием в режиме CABAC первой группы элементов синтаксиса, кодер 20 видео кодирует в режиме обхода вторую группу элементов синтаксиса (например, используя механизм кодирования в режиме обхода)(608). Кодер 20 видео может кодировать во внутреннем режиме PU CU на основании первой и второй групп элементов синтаксиса (610). Кодер 20 видео может выводить видеоданные, в битовом потоке, которые включают в себя закодированную первую группу элементов синтаксиса и закодированную вторую группу элементов синтаксиса (612). Кодер 20 видео также выводит остаточную информацию для закодированных с внутренним предсказанием PU в битовый поток.
[0119] Как описано выше, примеры первой группы элементов синтаксиса включают в себя множество флагов (например, элементы синтаксиса prev_intra_luma_pred_flag). Флаг из множества флагов может быть элементом синтаксиса из первой группы элементов синтаксиса, который указывает, основан ли режим внутреннего предсказания отсчетов яркости соответствующей PU на индексе в список наиболее вероятных режимов.
[0120] В некоторых примерах, вторая группа элементов синтаксиса включает в себя первый элемент синтаксиса, который указывает индекс в список наиболее вероятных режимов, если соответствующий элемент синтаксиса в первой группе элементов синтаксиса указывает, что режим внутреннего предсказания отсчетов яркости соответствующей PU основан на индексе в список наиболее вероятных режимов. Например, если элемент синтаксиса prev_intra_luma_pred_flag для соответствующей PU указывает, что режим внутреннего предсказания для соответствующей PU основан на индексе в список наиболее вероятных режимов, тогда соответствующий элемент синтаксиса mpm_idx для соответствующей PU указывает индекс в список наиболее вероятных режимов. В данном примере, элемент синтаксиса mpm_idx рассматривается в качестве первого элемента синтаксиса во второй группе элементов синтаксиса.
[0121] В некоторых примерах, вторая группа элементов синтаксиса включает в себя второй элемент синтаксиса, который указывает режим внутреннего предсказания для соответствующей PU, если соответствующий элемент синтаксиса в первой группе элементов синтаксиса указывает, что режим внутреннего предсказания отсчетов яркости соответствующей PU не основан на индексе в список наиболее вероятных режимов. Например, если элемент синтаксиса prev_intra_luma_pred_flag для соответствующей PU указывает, что режим внутреннего предсказания для соответствующей PU не основан на индексе в список наиболее вероятных режимов, тогда соответствующий элемент синтаксиса rem_intra_luma_pred_mode для соответствующей PU указывает режим внутреннего предсказания. В данном примере, элемент синтаксиса rem_intra_luma_pred_mode рассматривается в качестве второго элемента синтаксиса во второй группе элементов синтаксиса.
[0122] Как описано выше, список наиболее вероятных режимов, который строит кодер 20 видео, идентифицирует один или более режимов внутреннего предсказания одной или более соседних PU. В некоторых примерах, кодер 20 видео может выводить все элементы синтаксиса из первой группы элементов синтаксиса для PU CU перед выводом любых элементов синтаксиса из второй группы элементов синтаксиса для PU CU. В некоторых примерах, кодер 20 видео может кодировать в режиме CABAC все элементы синтаксиса из первой группы элементов синтаксиса перед кодированием в режиме обхода любого элемента синтаксиса из второй группы элементов синтаксиса.
[0123] Следует отметить, что в некоторых примерах, энтропийный кодер может быть энтропийным кодером, включенным в кодер 20 видео, таким как модуль 56 энтропийного кодирования. В данном случае, понятие вывод может относиться к одному компоненту в кодере 20 видео, выводящему данные на другой компонент в кодере 20 видео. Кроме того, в других примерах, энтропийный кодер может быть внешним по отношению к кодеру 20 видео. В одном примере, кодер 20 видео выводит набор флагов и соответствующие элементы синтаксиса так, что группы элементов синтаксиса компонуются в последовательность перед соответствующими элементами синтаксиса. В одном примере, кодер 20 видео может компоновать элементы синтаксиса в соответствии со структурой кодирования, иллюстрируемой в Таблице 8. Декодер видео может принимать энтропийно закодированный битовый поток и восстанавливать видеоданные, используя энтропийно закодированный битовый поток.
[0124] Фиг. 6 является структурной схемой, иллюстрирующей пример декодера 30 видео, который декодирует закодированную видеопоследовательность. В одном примере, декодер 30 видео может быть выполнен с возможностью приема энтропийно закодированного битового потока, который включает в себя набор флагов и соответствующий элемент синтаксиса, соответствующий каждому флагу, при этом каждый флаг указывает, основан ли режим предсказания соответствующей единицы предсказания (PU) на индексе в список наиболее вероятных режимов, декодирует в режиме CABAC набор флагов, декодирует в режиме обхода соответствующие элементы индекса, и восстанавливает видеоданные на основании значений каждого флага и соответствующих элементов синтаксиса.
[0125] В примере на Фиг. 6, декодер 30 видео включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего предсказания, модуль 76 обработки обратного квантования, модуль 78 обработки обратного преобразования, память 82 опорного кадра, и сумматор 80. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования, в целом, обратно проходу кодирования, описанному в отношении декодера 20 видео (Фиг. 4).
[0126] Модуль 70 энтропийного декодирования принимает энтропийно закодированный битовый поток и декодирует элементы синтаксиса из битового потока в соответствии с процессом обратным процессу энтропийного кодирования, используемому для кодирования элементов синтаксиса. В одном примере, процесс энтропийного кодирования, используемый для кодирования элементов синтаксиса, может быть любым из процессов энтропийного кодирования, описанным выше.
[0127] Фиг. 7 является структурной схемой, которая иллюстрирует примерный модуль 70 энтропийного декодирования, который может реализовывать методики, описываемые в данном изобретении. Модуль 70 энтропийного декодирования принимает энтропийно закодированный битовый поток и декодирует элементы синтаксиса из битового потока. Элементы синтаксиса могут включать в себя элементы синтаксиса внутреннего предсказания prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode,
intra_chroma_pred_mode, и chroma_pred_from_luma_enable_flag, описанные выше. Очередность, в которой элементы синтаксиса декодируются модулем 70 энтропийного декодирования, может быть определена в соответствии со структурой кодирования, такой как примерные структуры кодирования, описанные выше в отношении Таблиц с 3 по 10. Примерный модуль 70 энтропийного декодирования на Фиг. 7 включает в себя модуль 702 арифметического декодирования, который может включать в себя механизм 704 декодирования в режиме обхода и механизм 706 декодирования в нормальном режиме. Примерный модуль 70 энтропийного декодирования также включает в себя модуль 708 моделирования контекста и модуль 710 обратной бинаризации. Примерный модуль 70 энтропийного декодирования может выполнять функции обратные функциям примерного модуля 56 энтропийного кодирования, описанного в отношении Фиг. 4. Таким образом, модуль 70 энтропийного декодирования может выполнять энтропийное декодирование на основании описываемых в данном документе методик.
[0128] Модуль 702 арифметического декодирования принимает закодированный битовый поток. Как показано на Фиг. 7, модуль 702 арифметического декодирования может обрабатывать закодированные значения бинов в соответствии с путем кодирования в режиме обхода и путем кодирования в нормальном режиме. Указание того, должно ли закодированное значение бина обрабатываться в соответствии с путем кодирования в режиме обхода или путем кодирования в нормальном режиме, может быть просигнализировано в битовом потоке с помощью синтаксиса более высокого уровня. Согласуясь с описанным выше процессом CABAC, в случае, когда модуль 702 арифметического декодирования принимает значения бинов по пути кодирования в режиме обхода, механизм 704 декодирования в режиме обхода может выполнять арифметическое декодирование над значениями бинов, не используя контекст, назначенный значению бина. В одном примере, механизм 704 декодирования в режиме обхода может предполагать равные вероятности для возможных значений бина.
[0129] В случае, когда модуль 702 арифметического декодирования принимает значения бинов по пути кодирования в нормальном режиме, модуль 708 моделирования контекста может предоставлять переменную контекста так, что механизм 706 декодирования в нормальном режиме может выполнить арифметическое декодирование на основании назначений контекста, предоставленных модулем 708 моделирования контекста. Назначения контекста могут быть определены в соответствии со стандартом кодирования видео, таким как HEVC. Модели контекста могут быть сохранены в памяти. Модуль 708 моделирования контекста может включать в себя ряд индексированных таблиц и/или использовать функции отображения для определения контекста и части переменной контекста закодированного битового потока. После декодирования значения бина, механизм 706 декодирования в нормальном режиме может обновлять контекст на основании декодированных значений бинов. Кроме того, модуль 710 обратной бинаризации может выполнять обратную бинаризацию над значением бина и использовать функцию сопоставления бина для определения того, является ли значение бина действительным. Модуль 710 обратной бинаризации также может обновлять модуль моделирования контекста на основании определения сопоставления. Таким образом, модуль 710 обратной бинаризации выводит элементы синтаксиса в соответствии с методикой контекстно-адаптивного декодирования.
[0130] Очередность, в которой модуль 70 энтропийного декодирования принимает элементы синтаксиса в наборе элементов синтаксиса, может определять общее количество циклов, которое требуется модулю 70 энтропийного декодирования для декодирования набора элементов синтаксиса. В одном примере, механизму 706 декодирования в нормальном режиме может требоваться более двух циклов для декодирования одного бина. Кроме того, в одном примере, механизму 706 декодирования в нормальном режиме CABAC может требоваться n+M циклов для декодирования n бинов, где M является потерями на запуск конвейерной обработки. M, как правило, больше 0. При запуске процесса декодирования в режиме CABAC (например, при переключении из режима обхода на нормальный) вносятся потери M конвейерной обработки. В одном примере, механизму 704 декодирования в режиме обхода может требоваться один цикл для декодирования n-битного элемента синтаксиса. Таким образом, общее количество циклов, которое требуется модулю 702 арифметического декодирования для декодирования набора из бинов в режиме обхода и бинов в режиме CABAC может быть основано на количестве раз, которое вносятся потери M конвейерной обработки. Раз так, то очередность, в которой компонуются элементы синтаксиса внутреннего предсказания в структуре кодирования, может определять количество циклов, которое требуется декодеру 30 видео для декодирования видеоданных. Кроме того, следует отметить, что, несмотря на то, что примерный модуль 70 энтропийного декодирования, иллюстрируемый на Фиг. 7, описывается как переключающийся с операции декодирования в режиме обхода на операцию декодирования в нормальном режиме, в некоторых случаях эти операции могут быть выполнены параллельно. Тем не менее, в данном случае очередность, в которой модуль 70 энтропийного декодирования принимает элементы синтаксиса с кодированием в режиме обхода и в режиме CABAC по-прежнему может определять общее количество циклов, требуемое для энтропийного декодирования элементов синтаксиса.
[0131] Вновь обращаясь к Фиг. 6, модуль 72 компенсации движения может генерировать данные предсказания на основании векторов движения, принятых от модуля 70 энтропийного декодирования. Модуль 72 компенсации движения может использовать векторы движения, принятые в битовом потоке, для идентификации блока предсказания в опорных кадрах в памяти 82 опорного кадра. Модуль 72 компенсации движения создает блоки после компенсации движения, возможно выполняя интерполяцию, основанную на фильтрах интерполяции. Идентификаторы для фильтров интерполяции, которые должны быть использованы для оценки движения с суб-пиксельной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать фильтры интерполяции, такие как те, что используются кодером 20 видео во время кодирования видеоблока для вычисления интерполированных значений для суб-целочисленных пикселей опорного блока. Модуль 72 компенсации движения может определять фильтры интерполяции, использованные кодером 20 видео, в соответствии с принятой информацией синтаксиса и может использовать фильтры интерполяции для создания предсказывающих блоков.
[0132] Модуль 72 компенсации движения использует некоторую информацию синтаксиса для определения размеров макроблоков, использованных для кодирования кадра(ов) закодированной видеопоследовательности, информацию разбиения, которая описывает то, каким образом разбит каждый макроблок кадра закодированной видеопоследовательности, режимы, указывающие то, каким образом закодирован каждый элемент разбиения, один или более опорные кадры (и списки опорных кадров) для каждого закодированного в режиме внешнего предсказания макроблока или элемента разбиения, и прочую информацию для декодирования закодированной видеопоследовательности.
[0133] Модуль 74 внутреннего предсказания может использовать режимы внутреннего предсказания, принятые в битовом потоке, для формирования блока предсказания из пространственно смежных блоков. Режимы внутреннего предсказания могут включать в себя описанные выше режимы внутреннего предсказания. Модуль 74 внутреннего предсказания может определять режим внутреннего предсказания для использования на основании элементов синтаксиса prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode,
intra_chroma_pred_mode, и chroma_pred_from_luma_enable_flag, как описано выше.
Y
[0134] Модуль 76 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты блока, предоставленные в битовом потоке, и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, как определено стандартом декодирования H.264. Процесс обратного квантования также может включать в себя использование параметра QP квантования, вычисленного кодером видео для каждого макроблока для определения степени квантования и, подобно, степени обратного квантования, которое должно быть применено.
[0135] Модуль 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования для того, чтобы создать остаточные блоки в пиксельной области. Сумматор 80 суммирует остаточные блоки с соответствующими блоками предсказания, сгенерированными модулем 72 компенсации движения или модулем 74 внутреннего предсказания, для формирования декодированных блоков. Таким образом, декодер 30 видео восстанавливает видео блоки из закодированного битового потока.
[0136] Фиг. 8 является блок-схемой, иллюстрирующей пример декодирования видеоданных в соответствии с методиками данного изобретения. Несмотря на то, что процесс на Фиг. 8 описывается ниже как, в целом, выполняемый декодером 30 видео, процесс может быть выполнен любой комбинацией декодера 30 видео, модуля 74 внутреннего предсказания, и/или модулем 70 энтропийного декодирования.
[0137] Как иллюстрируется на Фиг. 8, декодер 30 видео принимает первую группу элементов синтаксиса (802). Декодер 30 видео принимает вторую группу элементов синтаксиса, при этом элементы синтаксиса из второй группы элементов синтаксиса соответствуют соответствующим элементам синтаксиса из первой группы элементов синтаксиса (804). Другими словами, декодер 30 видео принимает энтропийно закодированный битовый поток, который включает в себя первую группу элементов синтаксиса и вторую группу элементов синтаксиса для единиц предсказания (PU) единицы кодирования (CU).
[0138] В одном примере, элемент синтаксиса в первой группе указывает, основан ли режим предсказания соответствующей единицы предсказания на индексе в список наиболее вероятных режимов. В одном примере, первая группа включает в себя четыре элемента синтаксиса prev_intra_luma_pred_flag, соответствующих четырем, соответствующим PU в структуре PU INTRA_NxN. В одном примере, элементом синтаксиса во второй группе элементов синтаксиса может быть либо mpm_idx, либо rem_intra_luma_pred_mode элементы синтаксиса, как описано выше. В одном примере, первая группа элементов синтаксиса и вторая группа элементов синтаксиса могут быть скомпонованы в соответствии со структурой кодирования, описанной в отношении Таблицы 8. Таким образом, очередность, в которой декодер 30 видео принимает и выполняет операции над набором флагов и соответствующими элементами синтаксиса, может быть определена в соответствии со структурой кодирования.
[0139] Декодер 30 видео декодирует в режиме CABAC первую группу элементов синтаксиса (806). В одном примере, декодер 30 видео декодирует в режиме CABAC первую группу элементов синтаксиса, используя механизм декодирования в режиме нормального контекстно-адаптивного двоичного арифметического кодирования (CABAC), такую как механизм 706 декодирования в нормальном режиме, описанную в отношении Фиг. 7. Декодер 30 видео декодирует в режиме обхода вторую группу элементов синтаксиса (808). В одном примере, декодер 30 видео может энтропийного декодировать вторую группу элементов синтаксиса вслед за энтропийным декодированием первой группы элементов синтаксиса. Кроме того, в одном примере, декодер 30 видео может энтропийного декодировать вторую группу элементов синтаксиса, используя механизм декодирования в режиме обхода, такую как механизм 704 декодирования в режиме обхода, описанную в отношении Фиг. 7. Декодер 30 видео декодирует и восстанавливает видеоданные на основании декодированной первой группы элементов синтаксиса и декодированной второй группы элементов синтаксиса (810). В одном примере, декодер 30 видео восстанавливает видеоданные посредством суммирования остаточных блоков видеоданных и соответствующих блоков предсказания видеоданных, связанных с соответствующими элементами синтаксиса. Например, декодер 30 видео декодирует с внутренним предсказанием PU CU на основании первой группы элементов синтаксиса и декодированной второй группы элементов синтаксиса.
[0140] Повторим, подобно описанию выше в отношении кодера 20 видео и Фиг. 5, примеры первой группы элементов синтаксиса включают в себя множество флагов (например, элементы синтаксиса prev_intra_luma_pred_flag). Флагом множества флагов может быть элемент синтаксиса из впервой группы элементов синтаксиса, который указывает, основан ли режим внутреннего предсказания отсчетов яркости соответствующей PU на индексе в список наиболее вероятных режимов.
[0141] В некоторых примерах, вторая группа элементов синтаксиса включает в себя первый элемент синтаксиса, который указывает индекс в список наиболее вероятных режимов, если соответствующий элемент синтаксиса в первой группе элементов синтаксиса указывает, что режим внутреннего предсказания отсчетов яркости соответствующей PU основан на индексе в список наиболее вероятных режимов. Например, если элемент синтаксиса prev_intra_luma_pred_flag для соответствующей PU указывает, что режим внутреннего предсказания для соответствующей PU основан на индексе в список наиболее вероятных режимов, тогда соответствующий элемент синтаксиса mpm_idx для соответствующей PU указывает индекс в список наиболее вероятных режимов. В данном примере, элемент синтаксиса mpm_idx рассматривается в качестве первого элемента синтаксиса во второй группе элементов синтаксиса.
[0142] В некоторых примерах, вторая группа элементов синтаксиса включает в себя второй элемент синтаксиса, который указывает режим внутреннего предсказания для соответствующей PU, если соответствующий элемент синтаксиса в первой группе элементов синтаксиса указывает, что режим внутреннего предсказания отсчетов яркости соответствующей PU не основан на индексе в список наиболее вероятных режимов. Например, если элемент синтаксиса prev_intra_luma_pred_flag для соответствующей PU указывает, что режим внутреннего предсказания для соответствующей PU не основан на индексе в список наиболее вероятных режимов, тогда соответствующий элемент синтаксиса rem_intra_luma_pred_mode для соответствующей PU указывает режим внутреннего предсказания. В данном примере, элемент синтаксиса rem_intra_luma_pred_mode рассматривается в качестве второго элемента синтаксиса во второй группе элементов синтаксиса.
[0143] Как описано выше, список наиболее вероятных режимов, который строит декодер 30 видео, идентифицирует один или более режимов внутреннего предсказания одной или более соседних PU. В некоторых примерах, декодер 30 видео может принимать все элементы синтаксиса из первой группы элементов синтаксиса для PU CU, перед приемом любых элементов синтаксиса из второй группы элементов синтаксиса для PU CU. В некоторых примерах, декодер 30 видео может декодировать в режиме CABAC все элементы синтаксиса из первой группы элементов синтаксиса перед декодированием в режиме обхода любого элемента синтаксиса из второй группы элементов синтаксиса.
[0144] В вышеприведенных примерах, когда режимом предсказания для CU является INTRA_NXN, CU включает в себя четыре PU, и каждая PU имеет один режим внутреннего предсказания яркости и лишь один режим внутреннего предсказания цветности для всей CU. Тем не менее, могут присутствовать некоторые потенциальные недостатки при таком исполнении. В качестве одного примера, может присутствовать неэффективное выполнение предсказания, поскольку четыре PU с разными шаблонами текстур вынуждены использовать один идентичный режим предсказания цветности. В качестве другого примера, может присутствовать несовместимая сигнализация режима между составляющими яркости и цветности.
[0145] Нижеследующее описывает некоторые примеры для решения недостатков, связанных с требованием в отношении того, что должен присутствовать только один режим внутреннего предсказания цветности для всей CU. Нижеследующие методики могут быть применены совместно с методиками, описанными выше для случая, когда присутствует только один режим внутреннего предсказания цветности для всей CU, или отдельно с методиками, описанными выше для случая, когда присутствует только один режим внутреннего предсказания цветности для всей CU.
[0146] Для решения потенциальной проблемы неэффективного выполнения предсказания, представленной выше, методики данного изобретения включают в себя сигнализацию одного режима внутреннего предсказания цветности для каждой PU, как это делается для режима внутреннего предсказания яркости, т.е. четыре chroma_intra_prediction_mode (режим_внутреннего_предсказания_цветности) сигнализируются для CU с режимом предсказания вида INTRA_NxN в контексте текущего стандарта HEVC. С помощью данного исполнения, следовательно, сигнализируется один элемент синтаксиса «luma_intra_prediction_mode» и один элемент синтаксиса «chroma_intra_prediction_mode» для представления режима внутреннего предсказания для PU.
[0147] В некоторых примерах, данная схема сигнализации внутреннего режима не может быть применена, если размер текущей CU равен 8×8, а наименьшим размером единицы преобразования является 4×4. Более обобщенно, это исключение существует, когда размером текущей CU является удвоенный наименьший transform_unit_size (размер_единицы_преобразования) в каждом измерении, что означает, что составляющая цветности текущей CU равна наименьшему размеру единицы преобразования и не может быть более расщеплена на четыре PU (предполагая, что исходным форматом является YUV420). В таком случае, лишь один chroma_intra_prediction_mode сигнализируется для текущей CU.
[0148] В соответствии с этими примерами, структура кодирования для внутренних режимов может быть реализована, как показано в примерах Таблицы 11 и Таблицы 12.
Таблица 11Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0]
CABAC
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0]
обход
Else
rem_intra_luma_pred_mode[x0][y0]
обход
chroma_mode_cabac_bins [x0][y0]
CABAC
chroma_mode_bypass_bins[x0][y0]
обход
Таблица 12Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x1][y0])
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_cabac_bins[x1][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x1][y0] (с кодированием в режиме обхода)
}
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
if( prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_cabac_bins [x0][y1] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y1] (с кодированием в режиме обхода)
}
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_cabac_bins [x1][y1] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x1][y1] (с кодированием в режиме обхода)
}
[0149] Нижеследующее описывает примеры, где режим внутреннего предсказания определяется для отсчетов яркости каждой PU и отсчетов цветности каждой PU CU, вместо лишь только одного режима внутреннего предсказания для отсчетов цветности для всей CU. Таблицы 13 и 14 определяют способ для компоновки синтаксиса внутреннего предсказания для структуры кодирования внутреннего режима для intra_2N×2N и intra_N×N, соответственно, где вместе кодируются все бины с кодированием в режиме CABAC режима внутреннего предсказания яркости и режима внутреннего предсказания цветности, а затем вместе кодируются все бины с кодированием в режиме обхода режима внутреннего предсказания яркости и режима внутреннего предсказания цветности. Таблицы 15 и 16 определяют способ для компоновки синтаксиса внутреннего предсказания для структуры кодирования внутреннего режима для intra_2N×2N и intra_N×N, соответственно, где вместе кодируются все бины с кодированием в режиме CABAC режима внутреннего предсказания для все PU в CU, а затем вместе кодируются все бины с кодированием в режиме обхода режима внутреннего предсказания. Таблицы 17 и 18 определяют способ для компоновки синтаксиса внутреннего предсказания для структуры кодирования внутреннего режима для intra_2N×2N и intra_N×N, соответственно, где кодируются все бины с кодированием в режиме CABAC режима внутреннего предсказания как яркости, так и цветности для всех PU в CU, а затем вместе кодируются все бины с кодированием в режиме обхода режима внутреннего предсказания яркости и цветности.
Таблица 13Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 14Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
if(CU_size!=2*smallest_TU_size)
chroma_mode_cabac_bins [x1][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x1][y0])
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size)
chroma_mode_bypass_bins[x1][y0] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
if(CU_size!=2*smallest_TU_size)
chroma_mode_cabac_bins [x0][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size)
chroma_mode_bypass_bins[x0][y1] (с кодированием в режиме обхода)
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
if(CU_size!=2*smallest_TU_size)
chroma_mode_cabac_bins [x1][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size)
chroma_mode_bypass_bins[x1][y1] (с кодированием в режиме обхода)
Таблица 15Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 16Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
if( prev_intra_luma_pred_flag[x1][y0])
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
if( prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1](с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
if( prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_cabac_bins [x1][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y1] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x1][y1] (с кодированием в режиме CABAC)
}
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_bypass_bins[x1][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y1] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x1][y1] (с кодированием в режиме обхода)
}
Таблица 17Структура кодирования внутреннего режима для intra_2N×2N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
Таблица 18Структура кодирования внутреннего режима для intra_N×N
prev_intra_luma_pred_flag[x0][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y0] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x0][y1] (с кодированием в режиме CABAC)
prev_intra_luma_pred_flag[x1][y1] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y0] (с кодированием в режиме CABAC)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_cabac_bins [x1][y0] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x0][y1] (с кодированием в режиме CABAC)
chroma_mode_cabac_bins [x1][y1] (с кодированием в режиме CABAC)
}
if(prev_intra_luma_pred_flag[x0][y0])
mpm_idx[x0][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y0] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x1][y0])
mpm_idx[x1][y0] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y0] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x0][y1])
mpm_idx[x0][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x0][y1] (с кодированием в режиме обхода)
if(prev_intra_luma_pred_flag[x1][y1])
mpm_idx[x1][y1] (с кодированием в режиме обхода)
Else
rem_intra_luma_pred_mode[x1][y1] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y0] (с кодированием в режиме обхода)
if(CU_size!=2*smallest_TU_size) {
chroma_mode_bypass_bins[x1][y0] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x0][y1] (с кодированием в режиме обхода)
chroma_mode_bypass_bins[x1][y1] (с кодированием в режиме обхода)
}
[0150] В одном или более примерах, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении, или любой их комбинации. При реализации в программном обеспечении, функции могут быть сохранены в или передаваться через одну или более инструкции или код на считываемом компьютером носителе информации и исполняться основанном на аппаратном обеспечении модулем обработки. Считываемые компьютером носители информации могут включать в себя считываемые компьютером носители данных, которые соответствуют вещественному носителю информации, такому как носители информации для хранения данных, или средствам связи, включающим в себя любое средство, которое способствует переносу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители информации, в целом, могут соответствовать (1) вещественным считываемым компьютерам носителям данных, которые не являются временными, или (2) средствам связи, таким как сигнал или несущая волна. Носители информации для хранения данных могут быть любыми доступными носителями информации, доступ к которым может быть получен посредством одного или более компьютеров или одного или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методик, описываемых в данном изобретении. Компьютерный программный продукт может включать в себя считываемый компьютером носитель информации.
[0151] В качестве примера, а не ограничения, такие считываемые компьютером носители данных могут быть выполнены в виде RAM, ROM, EEPROM, CD-ROM или другого запоминающего устройства на оптическом диске, запоминающего устройства на магнитном диске, или других магнитных запоминающих устройств, флэш-памяти, или любого другого носителя информации, который может быть использован для хранения требуемого программного кода в виде инструкций или структур данных, и доступ к которому может быть получен посредством компьютера. Также, любое соединение надлежащим образом определяется в качестве считываемого компьютером носителя информации. Например, если инструкции передаются от web-сайта, сервера, или другого удаленного источника при помощи коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL), или с помощью беспроводных технологий, таких как инфракрасная, радио, и микроволновая, тогда коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводная технология, такая как инфракрасная, радио, или микроволновая, включаются в определение носителя информации. Тем не менее, следует понимать, что считываемые компьютером носители данных и носители информации для хранения данных не включают в себя соединения, несущие волны, сигналы, или другие временные носители информации, а вместо этого относятся к не временным, вещественным носителям данных. Используемый в данном документе оптический и магнитный диск, включает в себя компакт диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-Ray, где магнитные диски обычно воспроизводят данные магнитным образом, тогда как оптические диски воспроизводят данные оптическим образом с помощью лазеров. Комбинации вышеприведенного также должны быть включены в объем считываемых компьютером носителей информации.
[0152] Инструкции могут быть исполнены одним или более процессорами, такими как один или более цифровые сигнальные процессоры (DSP), микропроцессоры общего назначения, проблемно-ориентированными интегральными микросхемами (ASIC), программируемыми вентильными матрицами (FPGA), или другими эквивалентными интегральными или с дискретной логикой микросхемами. Соответственно, используемое в данном документе понятие «процессор» может относиться к любой вышеупомянутой структуре или любой другой структуре, пригодной для реализации описываемых в данном документе методик. В дополнение, в некоторых аспектах, описываемые в данном документе функциональные возможности могут быть предоставлены в рамках выделенного аппаратного обеспечения и/или модулей программного обеспечения, выполненных с возможностью кодирования и декодирования, или встроены в объединенный кодак. Также, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
[0153] Методики данного изобретения могут быть реализованы в широком многообразии устройств или аппаратов, включая беспроводные телефонные трубки, интегральные микросхемы (IC) или набор IC (например, чипсет). Различные компоненты, модули, или блоки, описаны в данном изобретении, чтобы акцентировать внимание на функциональных аспектах устройств, выполненных с возможностью выполнения раскрываемых методик, но не обязательно требуют реализации посредством разных единиц аппаратного обеспечения. Наоборот, как описано выше, различные модули могут быть объединены в модуль кодека аппаратного обеспечения или предоставлены посредством совокупности взаимодействующих модулей аппаратного обеспечения, включая один или более процессоры, как описано выше, совместно с приемлемым программным обеспечением и/или встроенным программным обеспечением. Были описаны различные примеры. Эти и прочие примеры находятся в рамках объема нижеследующей формулы изобретения.